2016-11-26 57 views
1

我想在谷歌地图上添加标记,当我得到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> 

为什么我需要提醒?

+0

,因为你有你的selector.' $缺少的单引号('#ddlLatLog)。在此毫无疑问不起作用在所有'应该是'$( '#ddlLatLog')on' – NewToJS

+0

OPS我忘了,当复制代码tanQ,但在我的项目有 '':d tanQ –

回答

2

没有alert的地图不加载的原因是jQuery.getJSONasync调用。所以,当你把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); 
    }); 
}); 
+1

也不翼而飞单引号中选择'$('#ddlLatLog).on'应该是'$( '#ddlLatLog')。on' – NewToJS

+0

哦...好抓。我只是复制粘贴的OP代码没有看到那个line..thanks @NewToJS。 – vijayP

+0

ops好现在罚款工作谭Q –