我在我的网站上使用谷歌地图API。地图从xml获取数据,然后使用经度和纬度在相应位置上显示标记。但是,我在xml中有超过500个条目,但地图并未显示所有条目。任何人都可以帮帮我。我需要地图上整个xml的标记。地图显示在“http://saleon.com.pk/”上,地图使用的xml文件为“http://saleon.com.pk/test/generate.php”。对于谷歌地图,我的代码是:
<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>
答案 0 :(得分:1)
您已为xml文件中的这么多标记定义了相同的纬度和经度。 E.g lat =“33.718151”lng =“73.060547”出现在52个条目中。 您的标记在同一位置被覆盖。对于同一位置有多个标记的情况,您可以在实际点的半径内稍微偏移标记(例如.001度)。这也应该产生一个很好的视觉效果。