Google Maps setCenter()
J'utilise google maps. Dans mon code, j'ai utilisé la fonction setCenter (). Mon problème est que le marqueur est toujours situé dans le coin supérieur gauche de la zone de la carte (pas au centre). Merci de me dire comment le résoudre?
Mon morceau de code est
lat = 46.437857;
lon = -113.466797;
marker = new GMarker(new GLatLng(lat, lon));
var topRight = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(20, 40));
map.addControl(new GLargeMapControl3D(), topRight);
map.setCenter(new GLatLng(lat, lon), 5);
map.addOverlay(marker);
5 réponses
@ phoenix24 réponse m'a réellement aidé (dont le propre asnwer n'a pas résolu mon problème btw). Les arguments corrects pour setCenter sont
map.setCenter({lat:LAT_VALUE, lng:LONG_VALUE});
En passant, si votre variable est lat et lng, le code suivant fonctionnera
map.setCenter({lat:lat, lng:lng});
Cela a en fait résolu mon problème très complexe, alors j'ai pensé que je vais le poster ici.
function resize() {
var map_obj = document.getElementById("map_canvas");
/* map_obj.style.width = "500px";
map_obj.style.height = "225px";*/
if (map) {
map.checkResize();
map.panTo(new GLatLng(lat,lon));
}
}
<body onload="initialize()" onunload="GUnload()" onresize="resize()">
<div id="map_canvas" style="width: 100%; height: 100%">
</div>
J'ai cherché et cherché et finalement trouvé que ie a besoin de connaître la taille de la carte. Définissez la taille de la carte pour correspondre à la taille div.
map = new GMap2(document.getElementById("map_canvas2"), { size: new GSize(850, 600) });
<div id="map_canvas2" style="width: 850px; height: 600px">
</div>
Dans votre code, à la ligne
map.setCenter(new GLatLng(lat, lon), 5);
La méthode setCenter ne prend qu'un seul paramètre, pour l'emplacement lat:long. Pourquoi passez-vous deux paramètres là-bas ?
Je vous suggère de le changer en,
map.setCenter(new GLatLng(lat, lon));
Pour moi les solutions ci-dessus n'ont pas fonctionné alors j'ai essayé
map.setCenter(new google.maps.LatLng(lat, lng));
Et cela a fonctionné comme prévu.