2013-03-15 67 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