【发布时间】:2016-09-08 22:20:08
【问题描述】:
我有以下代码,它从 php 脚本中获取地址列表,然后向谷歌地图发出 ajax 请求,然后创建标记并更改缩放以适应标记。
var bounds = new google.maps.LatLngBounds();
$.getJSON('/dmvfinder/dmvsearch.php', {zipcode: zipcode, state: state, city: city}, function (addresses) {
addresses.forEach(function(address){
$.getJSON('http://maps.googleapis.com/maps/api/geocode/json', {address: address}, function(data){
var p = data.results[0].geometry.location;
var latlng = new google.maps.LatLng(p.lat, p.lng);
var marker = new google.maps.Marker({
position: latlng,
map: map
});
bounds.extend(latlng);
});
});
});
map.fitBounds(bounds);
据我了解,代码的问题是 fitBounds 方法在 ajax 完成之前触发并且“边界”被填充。我怎么可能在这里推迟最后一行代码?
提前谢谢你!
【问题讨论】:
-
将该行代码放在回调函数中,而不是在它之外。
-
@Pointy - 不会等待内部 getJSON 完成,对吗
-
您希望您的标记出现并且边界是逐个调整还是一次性调整?
-
@JaromandaX 不,这是真的,它不会。
-
由于帖子现在重复,这里有一个更简单的解决方案pastebin.com/xE7GxMMs
标签: javascript ajax callback