0

Googleディレクションサービスを使用してルートのlat+lngを取得し、latlonをphpファイルに渡して、xmlファイルを介してマーカーを返します。

新しいルートをリクエストしたときに古いマーカーをクリアできないことを除けば、これはすべて正常に機能します。以下のコードは、jQueryを使用してxmlファイルからマーカーを取得する方法を示しています。そして、その下のコードは、ルートをクリアするために使用しようとしている関数(機能する)と古いマーカー(機能しない!)を示しています。

助けてくれてありがとう。

//RETURN DATA FOR PLACE MARKERS
jQuery.get("MYXMLFILE", function(data) {
    jQuery(data).find("marker").each(function() {
        var eachMarker = jQuery(this);
        var markerCoords = new google.maps.LatLng(
            parseFloat(eachMarker.find("Lat").text()),
            parseFloat(eachMarker.find("Lng").text())
        );
        var header  = eachMarker.find("title").text();
        var content = eachMarker.find("Content").text();
        var wxicon  = eachMarker.find("icon").text();
        //---------------------------------------------
        var marker = new google.maps.Marker({
            position: markerCoords,
            map: map,
            icon: wxicon,
            animation: google.maps.Animation.DROP,
            title: header,
        });
        gmarkers.push(marker); // store the reference
    });
});

//CLEAR OLD ROUTE + CLEAR MARKERS

function deleteOverlays() {
    directionsDisplay.setDirections({routes: []});
    gmarker.setMap(null);
    gmarkers = [];
}
4

1 に答える 1

0
var markersArray = [];

マーカーを作成するたびに、それを追加しますmarkerArray

for (i = 0; i < locations.length; i++) {

   marker[i] = new google.maps.Marker({
    position: new google.maps.LatLng(locations[i][1], locations[i][2]),
            icon: icoImg,
            map: map,
            shadow: flagIcon_shadow,
            title: locations[i][0]
    });
    markersArray.push(marker[i]);
}

deleteOverlays() を呼び出した後、マップからすべてのメーカーを削除します。

    // Deletes all markers in the array by removing references to them
   function deleteOverlays() {
       if (markersArray) {
           for (i in markersArray) {
              markersArray[i].setMap(null);
           }
           markersArray.length = 0;
        }
    }

あなたの場合、これを使用してください

function deleteOverlays() {
   if (gmarkers) {
           for (i in gmarkers) {
               gmarkers[i].setMap(null);
           }
       gmarkers.length = 0;
   }
}
于 2013-03-22T07:52:18.330 に答える