Google Maps - Comment faire pour Finesse la fenêtre d'affichage de A géocodées Adresse
-
27-10-2019 - |
Question
Je la mise en œuvre de Google Maps dans un nouveau projet et une page doit retourner un grand (100% * 100%) carte du Canada. J'utilise aussi géocodage pour déterminer le latlng à transmettre à la carte.
Voici le code:
var myLatlng = new google.maps.LatLng(37.775, -122.4183333);
var myOptions ={
zoom: 5,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.TERRAIN
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var address = "Canada";
var geocoder = new google.maps.Geocoder(address);
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
//map.setCenter(results[0].geometry.location);
//The above was too far north
map.fitBounds(results[0].geometry.viewport);
map.setZoom(5);
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
Il fonctionne bien, sauf qu'il est « un peu trop loin vers la gauche ». Pour l'essentiel, il est coupé la plupart des provinces Maritimes. Un exemple peut être vu ici:
http://50.28.69.176/~sequoia/locations.php
Quelqu'un sait comment ce finesse afin que le pays est mieux centré dans la fenêtre?
Merci pour toute aide.
La solution
Au lieu de géocodage à chaque fois que la page est chargée, je vous suggère de simplement obtenir le LatLng
exact que vous voulez, et le stockage.
Si vous voulez continuer à en tenir à cette approche, vous pouvez utiliser la méthode getCenter()
sur un LatLngBounds
pour obtenir son centre.
De cette façon, vous pouvez appeler
map.fitBounds(results[0].geometry.viewport.getCenter())
map.setZoom(5)