Je suis récemment passé à l'API Google Maps V3. Je travaille sur un exemple simple qui trace les marqueurs d'un tableau, mais je ne sais pas comment centrer et zoomer automatiquement par rapport aux marqueurs.
J'ai recherché le net haut et bas, y compris la propre documentation de Google, mais je n'ai pas trouvé de réponse claire. Je sais que je pourrais simplement prendre une moyenne des coordonnées, mais comment régler le zoom en conséquence?
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
la source
la source
J'ai tout trié - voir les dernières lignes pour le code - (
bounds.extend(myLatLng); map.fitBounds(bounds);
)la source
Ma suggestion pour Google Maps api v3 serait (ne pense pas que cela puisse être fait plus efficacement):
Dans le résultat, u ajustera tous les points dans les limites de votre fenêtre de carte.
L'exemple fonctionne parfaitement et vous pouvez le vérifier librement ici www.zemelapis.lt
la source
false
si lebounds
sontnull
, vous pourriezmaps[ mapId ].getBounds()
.Les réponses sont parfaites pour ajuster les limites de la carte pour les marqueurs, mais si vous souhaitez étendre les limites de Google Maps pour des formes telles que les polygones et les cercles, vous pouvez utiliser les codes suivants:
Pour les cercles
Pour les polygones
Pour les rectangles
Pour les polylignes
la source
La méthode setCenter () s'applique toujours à la dernière version de l'API Maps pour Flash où fitBounds () n'existe pas.
la source
Utilisez ci-dessous un,
map.setCenter (bounds.getCenter (), map.getBoundsZoomLevel (bounds));
la source