为什么我需要调用谷歌地图API
问题描述:
我想在谷歌地图上添加标记,当我得到AJAX标记数据,并调用initMap
功能后地图不会加载但经过写警报()当我添加之前警报initMap
函数,地图加载。为什么我需要调用谷歌地图API
这部作品,并显示在地图和标记:
$('#ddlLatLog').on("change", function() {
jQuery.getJSON('@Url.Action("GetLatLog", "MyTheme", new { area = "" })', {
id: $(this).find('option:selected').attr('Value')
},
function(jdata) {
markermap = jdata;
});
alert(markermap);
initMap(centermap, markermap);
});
不加载地图
$('#ddlLatLog').on("change", function() {
jQuery.getJSON('@Url.Action("GetLatLog", "MyTheme", new { area = "" })', {
id: $(this).find('option:selected').attr('Value')
},
function(jdata) {
markermap = jdata;
});
// alert(markermap);
initMap(centermap, markermap);
});
调用谷歌API:
<script src="http://maps.google.com/maps/api/js?v=3.26&key=...callback=initMap" async defer></script>
为什么我需要提醒?
答
没有alert
的地图不加载的原因是jQuery.getJSON
是async
调用。所以,当你把alert
,浏览器获得的时间来完成ajax
调用和响应回来被调用initMap
之前。但在其他情况下,它不会发生,因为您删除alert
。为了克服这一点;你只需要成功处理程序中移动您的initMap(centermap, markermap);
的jQuery.getJSON
如下:
$('#ddlLatLog').on("change", function() {
jQuery.getJSON('@Url.Action("GetLatLog", "MyTheme", new { area = "" })', {
id: $(this).find('option:selected').attr('Value')
},
function(jdata) {
markermap = jdata;
initMap(centermap, markermap);
});
});
,因为你有你的selector.' $缺少的单引号('#ddlLatLog)。在此毫无疑问不起作用在所有'应该是'$( '#ddlLatLog')on' – NewToJS
OPS我忘了,当复制代码tanQ,但在我的项目有 '':d tanQ –