저는이 코드를 꽤 오랫동안 사용하고 있습니다. XML에서 XML을 Google지도 및 지오 코딩 주소로로드 중입니다. 한 번에 조회 할 주소가 너무 많으면 코드에 지연을 추가해야합니다. 여기 XML에서 Google Maps로로드하는 동안 Javascript setTimeout을 사용했습니다.
는 일을 내 전체 코드이 나는 그것이 한 번에 모두로드하고 지오 코더가 많은에 요구를 처리 할 수 있습니다대로, 지연 xml 파일에서로드가 필요XML이 큽니다. XML 파일은 계속 변경되므로 다시로드하고 다시 지오 코딩해야합니다. 그것은 XML 파일이 커질 때만 문제가됩니다. 가장 중요한 것은 XML 파일이 필요할 때입니다.
나는 지연을 약 geocoder.getLocations(address,createMarker);
으로 지정했지만 주소 변수에는 모든 주소가 포함되어 있으므로 지연되지 않습니다. 만약 내가 단지 var address = markers[i].getAttribute("address");
주위에 지연을두면 그것은 함수에 변수 i
을 전달하지 않습니다. 누구든지 도움을 줄 수 있으면 크게 감사하겠습니다.
// 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);
});
이것은 Google Maps API v2이며 v3는 아닙니다. – plexer