Ich habe kürzlich zu Google Maps API V3 gewechselt. Ich arbeite an einem einfachen Beispiel, in dem Markierungen aus einem Array gezeichnet werden. Ich weiß jedoch nicht, wie ich die Markierungen automatisch zentrieren und zoomen soll.
Ich habe das Internet hoch und niedrig durchsucht, einschließlich Googles eigener Dokumentation, aber keine klare Antwort gefunden. Ich weiß, ich könnte einfach einen Durchschnitt der Koordinaten nehmen, aber wie würde ich den Zoom entsprechend einstellen?
function initialize() {
var myOptions = {
zoom: 10,
center: new google.maps.LatLng(-33.9, 151.2),
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
setMarkers(map, beaches);
}
var beaches = [
['Bondi Beach', -33.890542, 151.274856, 4],
['Coogee Beach', -33.423036, 151.259052, 5],
['Cronulla Beach', -34.028249, 121.157507, 3],
['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
['Maroubra Beach', -33.450198, 151.259302, 1]
];
function setMarkers(map, locations) {
var image = new google.maps.MarkerImage('images/beachflag.png',
new google.maps.Size(20, 32),
new google.maps.Point(0,0),
new google.maps.Point(0, 32));
var shadow = new google.maps.MarkerImage('images/beachflag_shadow.png',
new google.maps.Size(37, 32),
new google.maps.Point(0,0),
new google.maps.Point(0, 32));
var lat = map.getCenter().lat();
var lng = map.getCenter().lng();
var shape = {
coord: [1, 1, 1, 20, 18, 20, 18 , 1],
type: 'poly'
};
for (var i = 0; i < locations.length; i++) {
var beach = locations[i];
var myLatLng = new google.maps.LatLng(beach[1], beach[2]);
var marker = new google.maps.Marker({
position: myLatLng,
map: map,
shadow: shadow,
icon: image,
shape: shape,
title: beach[0],
zIndex: beach[3]
});
}
}
javascript
google-maps
google-maps-api-3
Michael Bradley
quelle
quelle
Habe alles sortiert - siehe die letzten Zeilen für Code - (
bounds.extend(myLatLng); map.fitBounds(bounds);
)quelle
Mein Vorschlag für Google Maps API v3 wäre (glaube nicht, dass es effizienter gemacht werden kann):
Im Ergebnis passen Sie alle Punkte in Grenzen in Ihrem Kartenfenster an.
Beispiel funktioniert perfekt und Sie können es hier frei überprüfen www.zemelapis.lt
quelle
false
wenn dies derbounds
Fall istnull
, könnten Sie dies tunmaps[ mapId ].getBounds()
.Die Antworten eignen sich perfekt zum Anpassen der Kartengrenzen für Markierungen. Wenn Sie jedoch die Google Maps-Grenzen für Formen wie Polygone und Kreise erweitern möchten, können Sie die folgenden Codes verwenden:
Für Kreise
Für Polygone
Für Rechtecke
Für Polylinien
quelle
Die setCenter () -Methode gilt weiterhin für die neueste Version der Maps-API für Flash, bei der fitBounds () nicht vorhanden ist.
quelle
Verwenden Sie unter einem,
map.setCenter (bounds.getCenter (), map.getBoundsZoomLevel (bounds));
quelle