我有一个程序,我想使用谷歌地图。问题是我得到一个错误,表示a为null,其中a是google map api中使用的var。以下是我调用谷歌地图的方式:
//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>
我通过网址获取页面加载的lat和lng。这些值正确传递,所以我知道这不是问题。我认为这与var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
不正确有关。有什么建议吗?
编辑:以下是错误消息:
a为空 fromLatLngToPoint(A = NULL) yg(a = null,b = Object {zoom = 7,maxZoom = 12,more ...}) d(d =文件Default.aspx?lat = 30.346317&amp; lng = 105.46313,f = [function()]) d(A =未定义) d() [Break On This Error]功能Qf(a){a = af [9];返回a!= i?a:...);功能sg(a){a [ic]&amp;&amp; a [ic] VB}
答案 0 :(得分:53)
确保指定包含地图的元素的大小。例如:
<div id="map_canvas" style="width: 500px; height: 500px;"></div>
还要确保您的地图变量是在全局范围内定义的 在加载DOM后初始化地图。
答案 1 :(得分:21)
您可能没有收听页面完全加载时触发的onload
事件。因此,您的脚本正在运行,但您正在创建的div
尚不存在。使用jQuery来监听这个事件,如下所示:
$(document).ready(function () {
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
});
如果您不想使用jQuery,请向body.onload
答案 2 :(得分:10)
这个相当神秘的错误意味着脚本无法找到map div。 出现这种情况可能有几个原因。
检查你的id(或类)并确保你所指的元素确实存在。
这是一个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解决方案。
答案 3 :(得分:9)
有完全相同的问题,这是我为我修好了。
事情是,我的网站上有2张谷歌地图 - 一张在页脚中,另一张在联系页面上,但我在一个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);
}
我希望这也可以帮助其他人;)
答案 4 :(得分:3)
当地图尚未加载时会发生这种情况。您应该在加载Maps API JavaScript时构建地图。仅在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文档here中。希望这有帮助!
答案 5 :(得分:2)
确保您的画布div(与地图关联的Div)存在。 有时,如果我们重命名div的id属性。 然后它会产生问题,因为它没有得到画布div。
答案 6 :(得分:1)
我已修复它从“div”标记中删除我的“style”属性并在css文件中正确声明
答案 7 :(得分:1)
我有一次这个错误。确保地图脚本仅在使用地图的页面上运行。您可以使用“if”检查地图是否存在。像这样:
if ($('mapClass').length>0) { // here you run the google maps functions }
见你
答案 8 :(得分:0)
解决了,谷歌地图输入错误,请确保使用alert(map)正确返回对象var map = document.getElementById('map-canvas')。检查与getElementByid中指定相同的div容器ID名称。
我也遇到了相同类型的错误,通过检查getElementByid('map-canvas')修复了它。示例代码enter link description here
答案 9 :(得分:0)
我的回答有点老,但是对于那些仍然来这里参考的人,我有一个类似的解决方案。我按照此处https://developers.google.com/maps/documentation/javascript/adding-a-google-map
的说明放置了地图初始化代码内部jQuery文档ready函数。以下是适用于我的情况的代码:
$(document).ready(function () {
var uluru = {lat: -25.344, lng: 131.036};
var map = new google.maps.Map( document.getElementById('embedmap'), {zoom: 14, center: uluru} );
var marker = new google.maps.Marker({position: uluru, map: map});
});