我确信我正在处理一个已经多次解决的相当常见的问题。
我的网络应用程序从另一项服务请求大约100个以行划分的建筑物地址。我现在必须在google地图上绘制所有这些作为gmarkers(使用api版本3)。我还必须校准视口以显示所有gmarkers,即确定地图中心和相应的缩放值。
我从Google Maps API中找到了一些代码并进行了调整以绘制一点:
function codeAddress() {
var address = '1 Yonge Street, Toronto, ON';
geocoder.geocode( { 'address': address}, geocodeCallBack);
}
function geocodeCallBack(results, status)
{
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
} else {
alert("Geocode was not successful for the following reason: " + status);
}
}
但是,我怀疑执行100次异步地理编码调用可能会很慢。有没有人建议达到我需要的最佳方法?
答案 0 :(得分:1)
每次加载页面时执行100个地理编码需要几十秒,所以我建议提前进行地理编码。
如果地址始终相同或很少更改,您可以使用地理编码服务(http://code.google.com/apis/maps/documentation/javascript/services.html)提前对其进行地理编码将生成的Lat / Lng存储在您的服务器上,只要它们只显示在Maps API地图上。
暂时意味着您必须定期更新这些Lat / Lng(例如每30天更新一次)。
(详见10.1.3b:http://code.google.com/apis/maps/terms.html)