Ich habe diesen Code, der eine Karte rendert.
function initialize() {
var myOptions = {
center: new google.maps.LatLng(45.4555729, 9.169236),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP,
panControl: true,
mapTypeControl: false,
panControlOptions: {
position: google.maps.ControlPosition.RIGHT_CENTER
},
zoomControl: true,
zoomControlOptions: {
style: google.maps.ZoomControlStyle.LARGE,
position: google.maps.ControlPosition.RIGHT_CENTER
},
scaleControl: false,
streetViewControl: false,
streetViewControlOptions: {
position: google.maps.ControlPosition.RIGHT_CENTER
}
};
var map = new google.maps.Map(document.getElementById("mapCanvas"),
myOptions);
var Item_1 = new google.maps.LatLng(45.5983128 ,8.9172776);
var myPlace = new google.maps.LatLng(45.4555729, 9.169236);
var marker = new google.maps.Marker({
position: Item_1,
map: map});
var marker = new google.maps.Marker({
position: myPlace,
map: map});
var bounds = new google.maps.LatLngBounds(myPlace, Item_1);
map.fitBounds(bounds);
}
Selbst wenn die beiden Punkte von 25 km getrennt sind, erhalte ich folgendes Ergebnis:
Ich möchte zwar einen höheren Zoom rendern.
So was
Ich benutze die Methode fitBounds ()
var bounds = new google.maps.LatLngBounds(myPlace, Item_1);
map.fitBounds(bounds);
Danke für deine Unterstützung
javascript
google-maps
google-maps-api-3
maxdangelo
quelle
quelle
LatLngBounds
muss mit Punkten in (südwestlicher, nordöstlicher) Reihenfolge definiert werden. Ihre Punkte sind nicht in dieser Reihenfolge.Die allgemeine Lösung, insbesondere wenn Sie nicht wissen, dass die Punkte definitiv in dieser Reihenfolge liegen, besteht darin, eine leere Grenze zu erweitern:
var bounds = new google.maps.LatLngBounds(); bounds.extend(myPlace); bounds.extend(Item_1); map.fitBounds(bounds);
Die API sortiert die Grenzen.
quelle
Ich habe das gleiche Problem, das Sie beschreiben, obwohl ich meine LatLngBounds wie oben vorgeschlagen aufbaue. Das Problem ist, dass die Dinge asynchron sind und ein Anruf
map.fitBounds()
zur falschen Zeit zu einem Ergebnis wie im Q führen kann. Der beste Weg, den ich gefunden habe, besteht darin, den Anruf in einem inaktiven Handler wie diesem zu platzieren:google.maps.event.addListenerOnce(map, 'idle', function() { map.fitBounds(markerBounds); });
quelle
fitBounds()
, sodass sich das Zoomen anscheinend nicht selbst herausfinden konnte. Es hat mir geholfen, sicherzustellen, dass die Karte zuerst angezeigt wurde, bevor ich versuchte zu zoomen.var map = new google.maps.Map(document.getElementById("map"),{ mapTypeId: google.maps.MapTypeId.ROADMAP }); var bounds = new google.maps.LatLngBounds(); for (i = 0; i < locations.length; i++){ marker = new google.maps.Marker({ position: new google.maps.LatLng(locations[i][1], locations[i][2]), map: map }); bounds.extend(marker.position); } map.fitBounds(bounds);
quelle
bounds.extend(marker)
zubounds.extend(marker.position)
. Danke