2013-03-15 2 views
1

내 웹 사이트에서 Google지도 API를 사용하고 있습니다. 지도는 xml에서 데이터를 가져온 다음 경도와 위도를 사용하여 각 위치에 마커를 표시합니다. 그러나 XML에 500 개가 넘는 항목이 있지만지도에 모든 항목이 표시되지 않습니다. 아무도 나를 도와주세요. 지도의 전체 XML에 마커가 필요합니다. 지도는 "http://saleon.com.pk/"에 표시되고지도에서 사용하는 xml 파일은 "http://saleon.com.pk/test/generate.php"입니다. 당신이 당신의 XML 파일에 많은 마커 같은 위도와 경도를 정의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

: 구글지도의 경우, 내 코드는 다음입니다. 예 : lat = "33.718151"lng = "73.060547"이 52 개의 항목에 나타납니다. 마커는 동일한 위치에 있으므로 덮어 쓰게됩니다. 동일한 위치에 마커가 여러 개인 경우에는 실제 점의 반지름에서 마커를 약간 (예 : .001도) 오프셋 할 수 있습니다. 이것은 또한 좋은 시각 효과를 만들어야합니다.

+0

해답을 제공해 주셔서 감사합니다. 그것은 당신이 말한 것과 정확히 일치하도록 실제로 작동했습니다. 마커가 나타나고 있었지만 서로 위에 있었으므로 상단의 마커 만 표시되었습니다. 마커를 오프셋해야하는 방법에 대한 아이디어를 줄 수 있습니다. 그래야 마커가 의도 한 영역에서 벗어나지 않고 동시에 혼잡하지 않아도지도에 표시 할 수 없습니다. . 나는 0.001로 그들을 상쇄하려고 노력했으나 한 점은 그들이 실제 장소에서 나올 때 온다. 일부 위치에는 100 개가 넘는 마커가 있기 때문입니다. 어떻게해야합니까? 다시 한번 감사합니다. –

+0

Ok. 그러면 infobox에서 여러 infos를 표시하는 방법을 시도 할 수 있습니다.이 게시물을 확인하십시오 http://stackoverflow.com/questions/3548920/google-maps-api-v3-multiple-markers-on-exact-same- Ignatius의 현장 및 답변으로 문제가 해결 될 것입니다! –

관련 문제