0
lat/lngの配列をとり、マップ上にプロットするAngularJSメソッドがあります。Google Maps/Angular JS:マップの更新でデータが反映されず、マーカーが削除されない
$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 = [];
});
};
それは細かい初めて実行されますが、それに渡されるデータセットが変わると、マップは、ピンの縮小セットを反映するために更新されません。
また、データセットが渡されたとき(filteredPins)にピンを削除する方法についてもわかりません。