Ich habe die folgende AngularJS-Methode, die ein Array von lat/lng verwendet und sie auf einer Karte darstellt.Google Maps/Angular JS: Kartenaktualisierungen, die nicht immer Daten reflektieren und keine Markierungen entfernen können
$scope.zoomToIncludeMarkers = function(filteredPins) {
// var defaultLatLng = '38.04973,-49.340406';
var bounds = new google.maps.LatLngBounds();
var infowindow = new google.maps.InfoWindow({});
infowindow.close();
filteredPins.forEach(function(c) {
var latLng = new google.maps.LatLng(c.Latitude, c.Longitude);
var siteInfo = '<h3>' + c.SiteName + '</h3>' + '<p>' + c.Address1 + '<br/>' + c.Address2 + '<br/>' + c.City + ', ' + c.State + ' ' + c.ZipCode + '</p>';
var marker = new google.maps.Marker({
position: latLng,
map: $scope.map,
icon: '/assets/img/locator.png'
});
marker.setMap($scope.map);
bounds.extend(latLng);
if (typeof $scope.map != "undefined") {
// $log.warn('$scope.map.fitbounnds ran...');
// $log.warn('lat/lng: ' + latLng);
$scope.map.fitBounds(bounds);
}
marker.addListener('click', function() {
infowindow.close();
infowindow.setContent(siteInfo)
console.log('infowindow.open: ' + infowindow.open);
infowindow.open($scope.map, this);
$scope.findSelectedLocations(c.SiteName);
});
});
google.maps.event.addListener(infowindow, 'closeclick', function() {
console.log('infowindow closed ######');
console.log(infowindow);
// marker.setMap(null);
// $scope.resetSelectLists();
$rootScope.filteredData = $scope.dataObject;
$scope.trialItemsSelected = [];
});
};
Es läuft das erste Mal in Ordnung, aber als die Datenmenge, die es sich die Karte übergeben wird, nicht aktualisiert, den reduzierten Satz von Stiften zu reflektieren.
Ich bin mir auch nicht sicher, wie ich gehe Pins entfernen, wenn das Dataset (filteredPins) leer ist.