谷歌地图:"地图未定义"

时间:2011-05-30 16:06:03

标签: jquery xml google-maps-api-3

我正在尝试谷歌地图panTo。我有一个JQuery应用程序映射。并尝试过简单的代码。

function movemap(latlong) {
    var myLatlng = new google.maps.LatLng(latlong);
    map.panTo(myLatlng);
}

它在firebug控制台中显示map is not Defined。这意味着我没有定义它。那么我该如何定义呢。

4 个答案:

答案 0 :(得分:3)

教程示例的问题是“map”是一个局部变量,仅在initialize()函数内定义和使用。如果要在该函数之外引用它,这是您要执行的操作,则必须在函数外部定义它。在这种情况下,教程应该像这样重写:

<script type="text/javascript">
  var map;
  function initialize() {
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var myOptions = {
      zoom: 8,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map_canvas"),
        myOptions);
  }

</script>

请注意,“map”现在在任何函数之外定义,所以现在任何javascript函数都可以引用它。

答案 1 :(得分:2)

您可能希望浏览tutorial;这是他们如何创建一个新的地图对象:

<script type="text/javascript">
  function initialize() {
    var latlng = new google.maps.LatLng(-34.397, 150.644);
    var myOptions = {
      zoom: 8,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"),
        myOptions);
  }

</script>

其中map_canvas

<div id="map_canvas" style="width:100%; height:100%"></div>

答案 2 :(得分:0)

在这一行var myLatlng = new google.maps.LatLng(latlong);中,看起来好像你有两个变量一起运行。

是不是var myLatlng = new google.maps.LatLng(lat, long);,两个变量用逗号分隔?

答案 3 :(得分:0)

诀窍是你需要一个变量“map”是全局的。因此,不要在“初始化函数”中初始化它,而只需在主块中的某处声明它,

所以不要这样:

function initialize(){
    var mapOptions = {
        center: new google.maps.LatLng(49.6327939,15.4174414),
        zoom: 6,            
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map"), mapOptions);  
}

你会这样做:

var map;
function initialize(){
    var mapOptions = {
        center: new google.maps.LatLng(49.6327939,15.4174414),
        zoom: 6,            
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map"), mapOptions);      
}