Ich habe eine dynamisch generierte Liste von Markern in meiner Google Map. Ich möchte, dass das Zentrum der Karte das Zentrum aller Marker ist und nur so weit herausgezoomt ist, dass alle Marker sichtbar sind.Angular Google Maps - automatisch 'Center' und 'Zoom' einstellen, um in alle Marker zu passen
In Bezug auf die Berechnung der Kartenmitte, könnte dies möglicherweise durch Iteration durch alle Breiten und Längen und die Suche nach dem zentralen Punkt möglich sein. Allerdings kann ich nicht herausfinden, wie der Zoom am besten berechnet werden kann.
Ist das möglich?
Meine Karte ist, wie dies in der Vorlage verwendet werden:
<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
Versuchte Angular Implementierung von Beratung von @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);
}
}
};
});
Dies erzeugt die Konsolenfehler: TypeError: undefined is not a function (evaluating 'a.lat()')
Es ist schwer zu sagen, was das Problem ist, ohne den Fluss des Programms zu wissen, und das, was jedes Mitglied/Variable enthält. Suchen Sie in den Chatrooms nach mir und starten Sie eine Konversation. Wir diskutieren hier nicht im Kommentarbereich. – Tiborg
Hey Fisu, funktioniert der obige Code automatisch? Warum werden die an ein Click-Ereignis angehängten Grenzen automatisch gesetzt, wenn die Karte auf der Seite angezeigt wird? Neugierig, wenn Sie eine jdfiddle haben, die Sie teilen können, die funktioniert. – armyofda12mnkeys
@armeyofda12mnkeys yeah hast recht, ich habe am Ende die Option 'fit: true' verwendet, die nicht an ein click Event angehängt ist. – Fisu