2013-02-18 15 views
5

używam dyrektywę AngularUI Mapy Google w ten sposób:AngularUI - Google Maps - Usunąć marker

UpdateData.html

<div ng-repeat="marker in myMarkers" ui-map-marker="myMarkers[$index]"></div> 

<div class="control-group"> 
    <label class="control-label">Situación</label> 
    <div class="controls"> 
     <div id="map_canvas" ui-map="model.myMap" class="map" ui-event="{'map-click': 'addMarker($event)'}" ui-options="mapOptions"></div> 
    </div> 
</div> 

UpdateController

if (!$scope.myMarkers) { 
    $scope.myMarkers = []; 
} 

if (!$scope.myMap) { 
    $scope.model = { 
     myMap: undefined 
    }; 
} 

$scope.mapOptions = { 
    center : new google.maps.LatLng(35.784, -78.670), 
    zoom : 15, 
    mapTypeId : google.maps.MapTypeId.ROADMAP 
}; 

$scope.addMarker = function($event) { 
    $scope.myMarkers.push(new google.maps.Marker({ 
     map : $scope.model.myMap, 
     position : $event.latLng 
    })); 

    $scope.event.lat = $event.latLng.lat(); 
    $scope.event.lng = $event.latLng.lng(); 
}; 

mogę dodać nowe znaczniki i mapa są pomyślnie aktualizowane, ponieważ nie mogę ich usunąć. Co zrobić, jest następujący:

$scope.myMarkers.splice(0, $scope.myMarkers.length); 

myMarkers tablica zostanie pusty ale mapa nadal zawiera usuniętych znaczników. Wygląda na to, że tablica i mapa myMarkers są zsynchronizowane podczas wysyłania nowych znaczników do tablicy myMarkers, ale nie wtedy, gdy macierz myMarkers jest wyczyszczona.

Odpowiedz

7

Wypróbuj myMarker.setMap(null).

Nadal musisz korzystać z Google Maps API, aby robić wszystko, nie ma w tym wiele magii. Jedynym powodem, dla którego ui-map-marker jest dyrektywa, można łatwo podłączyć zdarzenia DOM do swoich znaczników

5

Odpowiadam sobie. Przed wykonaniem tej linii

$scope.myMarkers.splice(0, $scope.myMarkers.length); 

należy to zrobić:

angular.forEach($scope.myMarkers, function(marker) { 
    marker.setMap(null); 
}); 
+0

witam mam ten sam problem, i to nie dla mnie, bo nie jestem 'używając nowego google.maps.Marker ({ mapa: $ scope.model.myMap, }), aby dodać znacznik, ale funkcję dostosowywania, aby dodać znaczniki z ikoną dostosowywania i informacjami. Czy masz pomysł, jak sobie z tym poradzić? – Ayyoub

Powiązane problemy