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链接描述
- 如何使用ViewPager将Google Maps V2放在片段上
- google.maps.Geocoder.geocode()geometry.location lat / lng属性名称经常变化
- 带有Google Maps API v2的ViewPager:神秘的黑色视图
- Google Maps Android API v2 – 在地图上检测触摸
- Android MapActivity:无法获取连接工厂客户端
- Google Maps JS API v3 – 简单多标记示例
- Google Maps API V3:奇怪的UI显示故障(带有屏幕截图)
- 如何检查Google地图是否已完全加载?
- 如何使用Google Maps for Android V2处理地图移动结束?