У меня есть динамически созданный список маркеров в моей карте Google. Я хочу, чтобы центр карты был центром всех маркеров и уменьшался настолько, чтобы отображались все маркеры.
С точки зрения вычисления центра карты, возможно, это было бы возможно путем повторения всех широт и долгот и нахождения центральной точки. Тем не менее, я не могу найти лучший способ рассчитать, что должно быть масштабирование.
Можно ли это достичь?
Моя карта используется в шаблоне следующим образом:
<ui-gmap-google-map events="map.events" center="map.center" zoom="map.zoom" draggable="true" options="options">
<ui-gmap-marker ng-repeat="home in filteredHomes = (resCtrl.filteredHomes | orderBy : $storage.params.orderby : $storage.params.reverseOrder)" coords="{latitude: home.location.latitude, longitude: home.location.longitude}" idkey="home.homeId">
</ui-gmap-marker>
</ui-gmap-google-map>
UPDATE
Попытка Angular реализации из рекомендации @Tiborg:
uiGmapGoogleMapApi.then(function(maps) {
$scope.map = {
center: $scope.$storage.params.views.map.location,
zoom: $scope.$storage.params.views.map.zoom,
events: {
click: function() {
var bounds = new google.maps.LatLngBounds();
for (var i in $scope.filteredHomes) {
bounds.extend($scope.filteredHomes[i].location);
}
$scope.map.fitBounds(bounds);
}
}
};
});
Это приводит к ошибке консоли: TypeError: undefined is not a function (evaluating 'a.lat()')