Google MAP API是否使用异步请求

时间:2015-09-08 07:09:08

标签: javascript google-maps-api-3

我写了一个小应用来测试Google Map API,我注意到我的函数没有按预期的顺序执行。请看下面的代码。

<!DOCTYPE html><htm><head><title></title>
<script src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false">  </script>
<script>
//Global Variables
var lat, lng, _Address;
var geocoder = new google.maps.Geocoder();

function getReverseGeocodingData(lat, lng) {
var latlng = new google.maps.LatLng(lat, lng);

// Make the Geocode request    
geocoder.geocode({ 'latLng': latlng }, function (searchResults,searchStatus)   {
    if (searchStatus !== google.maps.GeocoderStatus.OK) {
        alert("Your search yields " + searchStatus);
    }
    // Checking to see if the Geocode Status is OK before proceeding
    if (searchStatus == google.maps.GeocoderStatus.OK) {
        console.log(searchResults);
        _Address = (searchResults[0].formatted_address);            
        alert("First time Address is displayed" + _Address);
    }
   }); 
}

function splitAddress() {    
var addressArr = _Address.split(',');     
//addressArr will be used later   
}

// This function is called when the submit button is clicked
function SearchAddress() {        
    geocoder.geocode({ 'address': "77 Massachusetts Ave, Cambridge, MA 02139" }, function (searchResults, searchStatus) {
        var location = searchResults[0].geometry.location;
        lat = location.lat();
        lng = location.lng();            
        getReverseGeocodingData(lat, lng);
        alert("Second time Address is displayed" + _Address);
        splitAddress();
    });}
</script></head><body><div><input type="button" value="Submit" onclick="SearchAddress()"></div></body></html>

当我在线路警报上设置断点时(&#34;首次显示地址&#34; + _地址),我可以告诉该警报功能在线路警报之前执行(&#34;第二次地址显示&#34; + _Address)。

但是,行警报(&#34;显示第二次地址&#34; + _Address)显示为首先执行并且_Address的值未定义。所以我的问题是,如果第二个警报功能在第一个警报功能之后执行,那么Google Map API会发出异步请求。

1 个答案:

答案 0 :(得分:1)

是的,当您致电geocoder.geocode时,Google Maps API会使用异步请求。

这是the documentation

  

自谷歌地图以来,访问地理编码服务是异步的   API需要调用外部服务器。