0

住所に基づいてマップ上のマーカーを削除しようとしていますが、何らかの理由で機能しません。それは私が見ていない明らかなものに違いない。m と locationall[i][0] が同一であることを確認したにもかかわらず、deleteMarker メソッドの if(m==locationsall[i][0]) には入りません。

    //alert(tmp);
    //alert(locationsall[0][0]);

マップ コードへの追加:

$('#map').show();
    var geocoder = new google.maps.Geocoder();
    var address = document.getElementById("address").value +",  " + document.getElementById("city").value;

    geocoder.geocode( { 'address': address}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
            var lat = results[0].geometry.location.lat();
            var lng = results[0].geometry.location.lng();
            locationsall[counter] = new Array();
            locationsall[counter][0] = address;
            locationsall[counter][1] = lat;
            locationsall[counter][2] = lng;
            var mapOptions = {
                    zoom: 13,
                    center: new google.maps.LatLng(lat, lng),
                    mapTypeId: google.maps.MapTypeId.ROADMAP
            }

    map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
    var i;
    for (i = 0; i < locationsall.length; i++) {  
            locationsall[i][3] = marker = new google.maps.Marker({
            position: new google.maps.LatLng(locationsall[i][1], locationsall[i][2]),
            map: map
            });
            //markersArray.push(marker);
    }
    counter++;
    } else {
        alert("Geocode was not successful for the following reason: " + status);
    }
  });
}

テキスト ボックスから住所を取得し、それを「1 大通り、都市」にフォーマットするコード

    var tmp = locations.splice(locations.indexOf(location), 1);
    deleteMarker(tmp);

マーカー コードを削除します。

function deleteMarker(m){
for (i = 0; i < locationsall.length; i++) { 
     if(m==locationsall[i][0]){
     alert(locationsall[i][0]); 
 alert(locationsall[i][3]);
      locationsall[i][3].setMap(null);
     } 
  }
}
4

1 に答える 1

0

m と locationsall[i][0]; を比較すると、余分なスペースがあったことがわかりました。

コードは完全に機能するようになりました。

于 2012-11-05T22:39:05.750 に答える