web-dev-qa-db-fra.com

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 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);
25
hotcoder
 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>

12
hotcoder

@ 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});

Documentation Google

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.

19
Hammad Khan

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>
3
user459913

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.

0
itzmukeshy7

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));
0
phoenix24