2012-10-03 130 views
0

我正在開發一個項目,我需要繪製一張超過500點的地圖。我的代碼工作得很好,達到了250分。但是當我解析出的XML文件中有500個座標時,沒有任何點最終顯示在地圖上。Google API - 映射500座標

我想有一種導致它失敗的節流,但我無法弄清楚如何在代碼中包含它。

任何想法?


locations.xml(略)

<markers> 
    <marker name="" address="800 Occidental Ave S Seattle, WA 98134" lat="47.595091" lng="-122.333229" type="location" /> 
    <marker name="" address="Bridge Street, City of Westminster, SW1A 0AA, United Kingdom" lat="51.499100" lng="-0.121955" type="location" /> 
</markers> 

map.html

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=utf-8"/> 

<script src="http://maps.google.com/maps/api/js?sensor=false" 
     type="text/javascript"></script> 
<script type="text/javascript"> 

var customIcons = { 
    location: { 
    icon: 'http://labs.google.com/ridefinder/images/mm_20_red.png', 
    shadow: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png' 
    } 
}; 

function load() { 
    var map = new google.maps.Map(document.getElementById("map"), { 
    center: new google.maps.LatLng(27.2500, 2.5200), 
      // world (27.2500, 2.5200), zoom 2 
      // usa (39.6791686, -95.5335914), zoom 4 
    zoom: 2, 
    mapTypeId: 'roadmap' 
    }); 
    var infoWindow = new google.maps.InfoWindow; 

    // Change this depending on the name of your PHP file 
    downloadUrl("locations.xml", function(data) { 
    var xml = data.responseXML; 
    var markers = xml.documentElement.getElementsByTagName("marker"); 
    for (var i = 0; i < markers.length; i++) { 
     var name = markers[i].getAttribute("name"); 
     var address = markers[i].getAttribute("address"); 
     var type = markers[i].getAttribute("type"); 
     var point = new google.maps.LatLng(
      parseFloat(markers[i].getAttribute("lat")), 
      parseFloat(markers[i].getAttribute("lng"))); 
     var html = "<b>" + name + "</b> <br/>" + address; 
     var icon = customIcons[type] || {}; 
     var marker = new google.maps.Marker({ 
     map: map, 
     position: point, 
     icon: icon.icon, 
     shadow: icon.shadow 
     }); 
     //bindInfoWindow(marker, map, infoWindow, html); 
    } 
    }); 
} 

function bindInfoWindow(marker, map, infoWindow, html) { 
    google.maps.event.addListener(marker, 'click', function() { 
    //infoWindow.setContent(html); 
    //infoWindow.open(map, marker); 
    }); 
} 

function downloadUrl(url, callback) { 
    var request = window.ActiveXObject ? 
     new ActiveXObject('Microsoft.XMLHTTP') : 
     new XMLHttpRequest; 

    request.onreadystatechange = function() { 
    if (request.readyState == 4) { 
     request.onreadystatechange = doNothing; 
     callback(request, request.status); 
    } 
    }; 

    request.open('GET', url, true); 
    request.send(null); 
} 

function doNothing() {} 

</script> 
</head> 

<body onLoad="load()"> 
    <div id="map" style="width: 1050px; height: 550px"></div> 
</body> 
</html> 
+1

您如何期望我們用xml文件中的2個條目來複制問題?你說它適用於此。我懷疑你的數據在第250個條目附近有問題。 – geocodezip

+0

謝謝,謝謝,謝謝!原來,這與使用Excel創建公式來生成locations.xml行有關。我需要四捨五入到小數點,然後它開始正常工作。 – Josh

回答

0

我的猜測是有一個與你的數據有問題的地方周圍250條目。