1

Web サイトで Google マップ API を使用しています。マップは xml からデータを取得し、経度と緯度を使用してそれぞれの場所にマーカーを表示します。ただし、xml には 500 を超えるエントリがありますが、マップにはすべてが表示されません。誰でも私を助けてくれませんか。マップ上の xml 全体のマーカーが必要です。マップは「 http://saleon.com.pk/ 」に表示され、マップが使用している xml ファイルは「http://saleon.com.pk/test/generate.php」です。Google マップの場合、私のコードは次のとおりです。

    <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>
4

1 に答える 1

1

xmlファイル内の非常に多くのマーカーに同じ緯度と経度を定義しました。例:lat = "33.718151" lng="73.060547"は52のエントリに表示されます。マーカーは同じ場所にあるため上書きされます。同じ場所に複数のマーカーがある状況では、実際のポイントから半径でマーカーを少しだけ(たとえば.001度)オフセットできます。これはまた、素晴らしい視覚効果を生み出すはずです。

于 2013-03-15T11:01:25.567 に答える