谷歌地图:“地图未定义”

问题描述:

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

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

它在萤火虫控制台中显示map is not Defined。所以这意味着我没有定义它。那么我怎么定义它。

你可能想要通过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> 

在这一行var myLatlng = new google.maps.LatLng(latlong);看来,如果你有两个变量同时运行。

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

+0

自变量链接是onclick(445223,-0124455),例如 – 2011-05-30 16:42:49

+0

ok。但'google.maps.LatLng'需要传递两个参数,一个是纬度,一个是经度。你的onClick是否正好用逗号分隔来填充字符串“445223,-0124455”? – 2011-05-30 18:05:23

+0

是的。但是,如果我已经改变它以符合逗号分隔,就像在你的例子中一样。它仍然不是问题的原因 – 2011-05-31 10:52:05

本教程示例的问题是“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> 

注意,“地图”现在任何函数之外因此现在任何JavaScript函数可以引用它定义。

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

所以不是这样的:

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);  
}