从XML加载到Google Maps时Javascript设置超时
我已经为这段代码挣扎了很长时间。 我正在将XML加载到Google地图中,并从XML中对地址进行地理编码。 当一次查找的地址太多时,我需要给代码添加一个延迟 这是我做这件事的全部代码 我需要延迟从xml文件加载它,因为它是一次加载所有内容,而当xml很大时,地理编码器无法处理那么多请求。XML文件不断变化,因此需要重新加载和重新地理编码。只有当XML文件变得更大时,这才成为一个问题,而这正是我最需要它工作的时候 我把延迟放在geocoder.getLocationsaddress,createMarker;但是address变量包含所有地址,因此不会延迟它。如果我仅将延迟放在var address=markers[i]周围,则为getAttributeaddress;它不会将i变量传递给函数。任何人能给予的任何帮助都将不胜感激从XML加载到Google Maps时Javascript设置超时,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我已经为这段代码挣扎了很长时间。 我正在将XML加载到Google地图中,并从XML中对地址进行地理编码。 当一次查找的地址太多时,我需要给代码添加一个延迟 这是我做这件事的全部代码 我需要延迟从xml文件加载它,因为它是一次加载所有内容,而当xml很大时,地理编码器无法处理那么多请求。XML文件不断变化,因此需要重新加载和重新地理编码。只有当XML文件变得更大时,这才成为一个问题,而这正是我最需要它工作的时候 我把延迟放在geocoder.getLocationsaddress,createM
// create marker
function createMarker(response)
{
var place = response.Placemark[0];
var point = new GLatLng(place.Point.coordinates[1],
place.Point.coordinates[0]);
var marker = new GMarker(point);
GEvent.addListener(marker, "click",function()
{
marker.openInfoWindowHtml(place.address);
});
map.addOverlay(marker);
}
// Create new map object
var map = new GMap2(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.enableScrollWheelZoom();
map.addMapType(G_PHYSICAL_MAP);
map.setCenter(new GLatLng(49.923068,-119.437981), 10);
var geocoder = new GClientGeocoder();
// Download the data in active.xml
GDownloadUrl("active.xml", function(data)
{
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName('INC');
setTimeout( function()
{
for (var i = 0; i < markers.length; i++)
{
var address = markers[i].getAttribute("address");
geocoder.getLocations(address,createMarker);
}
},200);
});
尝试:
这会将您对地理编码器的请求隔开。这是谷歌地图API v2,而不是v3。
for (var i = 0; i < markers.length; i++) {
var address = markers[i].getAttribute("address");
function (innerAddress, j) {
setTimeout(function() {
geocoder.getLocations(innerAddress,createMarker);
}, 200 * j);
}(address, i);
}