我写了一个小应用来测试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会发出异步请求。
答案 0 :(得分:1)
是的,当您致电geocoder.geocode
时,Google Maps API会使用异步请求。
自谷歌地图以来,访问地理编码服务是异步的 API需要调用外部服务器。