2013-03-15 60 views
1

我在我的網站上使用Google地圖API。地圖從xml獲取數據,然後使用經度和緯度在相應位置顯示標記。不過,我在XML中有超過500個條目,但地圖並未顯示所有條目。任何人都可以幫助我。我需要地圖上整個xml的標記。地圖顯示在「http://saleon.com.pk/」上,並且地圖使用的xml文件是「http://saleon.com.pk/test/generate.php」。谷歌地圖,我的代碼是這樣的:Google地圖標記不會顯示整個xml

<script type="text/javascript"> 
    var infowindow; 
    var map; 
    function initialize(str,category,city,minprice,maxprice,flag) { 

var myLatlng = new google.maps.LatLng(30.55538, 73.13690); 
    var myOptions = { 
     zoom: 5, 
     center: myLatlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

    downloadUrl("<?php echo WEB_PATH;?>test/generate.php", function(data){ 
     var markers = data.documentElement.getElementsByTagName("marker"); 
     for (var i = 0; i < markers.length; i++) { 
     var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")), 
            parseFloat(markers[i].getAttribute("lng"))); 
     var marker = createMarker(markers[i].getAttribute("name1"),markers[i].getAttribute("name2"), markers[i].getAttribute("img"), markers[i].getAttribute("description"), markers[i].getAttribute("id"), latlng); 
     } 
    }); 

    function createMarker(name1,name2, img, description, id, latlng) { 
    var marker = new google.maps.Marker({position: latlng, map: map}); 
    google.maps.event.addListener(marker, "click", function() { 
     if (infowindow) infowindow.close(); 
     infowindow = new google.maps.InfoWindow({content: '<div style="float:left;"><img src="<?php echo WEB_PATH;?>'+img+'" width="75px" height="75px" /></div><div style="float:left; margin-left:10px; font:Arial;"><div style="font-weight:bold;">'+name1+'<br/>'+name2+'</div><div style="width:200px;">'+description+'</div><div><a href="<?php echo WEB_PATH;?>index.php?page=item&id='+id+'">View Product</a></div></div>'}); 
     infowindow.open(map, marker); 
    }); 
    return marker; 
} 
</script> 

回答

1

你已經定義了相同的經度和緯度的許多標記在你的XML文件。 E.g lat =「33.718151」lng =「73.060547」出現在52個條目中。 您的標記被覆蓋,因爲它們在相同的位置。對於在同一位置有多個標記的情況,您可以在距實際點的半徑內略微偏移標記(例如.001度)。這也應該產生很好的視覺效果。

+0

謝謝你給我解決方案。它實際上已經成爲你所說的。標記顯示出來,但是他們已經結束了,所以只有頂部的標記才顯示出來。你能否給我一個想法,我應該如何抵消這些標記,以便標記不會從他們想要的區域出去,同時不會太擁擠,以至於無法在地圖上顯示。我試圖用0.001來抵消它們,但是當它們離開實際的地方時會出現一個問題。因爲有些位置的標記多於100個標記。我該怎麼辦?再次感謝。 – 2013-03-15 13:46:31

+0

好的。然後,您可以嘗試在信息框中顯示多種信息的方法。查看此帖http://stackoverflow.com/questions/3548920/google-maps-api-v3-multiple-markers-on-exact-same-現場和由Ignatius回答將解決你的麻煩! – 2013-03-18 08:43:11