Google地图错误:a为空

我有一个程序,我想使用谷歌地图。 问题是我得到一个错误,说a是空的,其中a是谷歌地图api中使用的variables。 以下是我如何打电话给我的谷歌地图:

//Creates a new center location for the google map var latlng = new google.maps.LatLng(centerLatitude, centerLongitude); //The options for the google map var myOptions = { zoom: 7, maxZoom: 12, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP }; //Creates the new map var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

这里是我的HTML标签的样子:

 <div id = "map_canvas"></div> 

我通过url获取页面加载的lat和lng。 这些值正确传递,所以我知道这不是问题。 我认为这与var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 不正确。 有什么build议么?

编辑:这是错误消息:

(a = null)y(a = null,b = Object {zoom = 7,maxZoom = 12,more …})d(d = Document Default.aspx?lat = 30.346317&lng = 105.46313,f函数Qf(a){a = af [9]; return a!= i?a:…);函数sg = [function()] d(a = undefined)d的(a){A [k] &&一个[IC] Vb的}

确保你指定的div的大小,持有一张地图。 例如:

 <div id = "map_canvas" style="width: 500px;height: 500px;"></div> 

进一步确保你的地图variables是在全局范围内定义的,并且确保在dom加载时(<body onload=yourinit()> )初始化地图。

您可能没有在页面完全加载时侦听onload事件。 因此,您的脚本正在运行,但您正在创build的div尚不存在。 使用jQuery来监听这个事件,就像这样:

 $(document).ready(function () { map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); }); 

如果你不想使用jQuery,那么添加一个事件监听器到body.onload

有完全相同的问题,这是我固定了我。

事情是,我的网站有两个谷歌地图 – 一个在页脚,另一个在联系页面,但我把它们都叫做一个JS文件,就像这样:

 var map1 = new google.maps.Map(document.getElementById("map-canvas-footer"), settings1); var map2 = new google.maps.Map(document.getElementById("map-canvas"), settings2); 

但事情是id="map-canvas"的对象只位于联系人页面上。 所以起初你必须检查页面上是否存在这样的元素:

 if ($("#map-canvas-footer").length > 0){ var map1 = new google.maps.Map(document.getElementById("map-canvas-footer"), settings1); } if ($("#map-canvas").length > 0){ var map2 = new google.maps.Map(document.getElementById("map-canvas"), settings2); } 

我希望这可以帮助别人;)

这个相当神秘的错误意味着脚本找不到地图div。 这可能有几个原因。

1.您使用错误的ID来引用地图。

检查你的ID(或类),并确保你所指的元素实际上存在。

2.在DOM准备好之前,您正在执行脚本。

这是一个jQuery示例。 注意我们正在触发文档准备好的初始化,而不是onDOMReady。 我冒昧地把剧本封闭起来。

 (function($) { function initialize() { var mapOptions = { center: new google.maps.LatLng(-34.397, 150.644), zoom: 8, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById("map"), mapOptions); } $(document).ready(initialize); })(jQuery) 

你也可以使用:

 google.maps.event.addDomListener(window, 'load', initialize); 

如果你更喜欢Google解决scheme。

当地图尚未加载时会发生这种情况。 您应该在加载Maps API JavaScript时构build地图。 只有当API完全加载后,才会执行该函数以初始化映射,并将其传递给Maps API引导程序中的“callback”参数。

 function initialize() { var mapOptions = { zoom: 8, center: new google.maps.LatLng(-34.397, 150.644), mapTypeId: google.maps.MapTypeId.ROADMAP } var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); } function loadScript() { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "http://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&sensor=TRUE_OR_FALSE&callback=initialize"; document.body.appendChild(script); } window.onload = loadScript; 

这实际上是在这里的Maps API文档。 希望这可以帮助!

确保您的canvasdiv(Div与地图相关联)存在。 有时候,如果我们重命名div的id属性。 然后它会产生问题,因为它不会得到canvasdiv。

我已经修复它删除我的“样式”属性从“div”标签声明正确,在一个CSS文件

我得到这个错误一次。 确保地图脚本只在使用地图的页面上运行。 您可以使用“if”来检查地图是否存在。 像这样的东西:

 if ($('mapClass').length>0) { // here you run the google maps functions } 

再见

解决了,谷歌地图input一个错误,确保你得到对象var map = document.getElementById('map-canvas')使用alert(map)正确地返回。 检查div容器id名称是否与getElementByid中指定的名称相同。

我也坚持使用相同types的错误,通过检查getElementByid('map-canvas')来修复它。 示例代码在此处input链接描述