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 carte (pas au centre). S'il vous plaît dites-moi 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);
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>
@ phoenix24 answer m'a en fait aidé (dont la réponse personnelle n'a pas résolu mon problème d'ailleurs). Les arguments corrects pour setCenter sont
map.setCenter({lat:LAT_VALUE, lng:LONG_VALUE});
En passant, si vos variables sont 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 et j'ai donc pensé le poster ici.
J'ai cherché et j'ai finalement trouvé qu'il fallait connaître la taille de la carte . Régler la taille de la carte pour qu'elle corresponde à la taille de div.
map = new GMap2(document.getElementById("map_canvas2"), { size: new GSize(850, 600) });
<div id="map_canvas2" style="width: 850px; height: 600px">
</div>
Pour moi, les solutions ci-dessus ne fonctionnaient pas, alors j'ai essayé
map.setCenter(new google.maps.LatLng(lat, lng));
et cela a fonctionné comme prévu.
dans votre code, à la ligne
map.setCenter(new GLatLng(lat, lon), 5);
la méthode setCenter prend un seul paramètre, pour l'emplacement lat: long. Pourquoi passez-vous deux paramètres ici?
Je suggère que vous devriez le changer pour,
map.setCenter(new GLatLng(lat, lon));