Google Maps setCenter () - PullRequest
       10

Google Maps setCenter ()

26 голосов
/ 05 мая 2010

Я использую карты Google. В моем коде я использовал функцию setCenter (). Моя проблема в том, что маркер всегда находится в верхнем левом углу области карты (не в центре). Подскажите пожалуйста, как это решить?

Мой кусок кода

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 ]

20 голосов
/ 03 апреля 2016

@ phoenix24 ответ на самом деле помог мне (чей собственный ответ не решил мою проблему, кстати). Правильные аргументы для setCenter:

map.setCenter({lat:LAT_VALUE, lng:LONG_VALUE});

Документация Google

Кстати, если ваша переменная - lat и lng, следующий код будет работать

map.setCenter({lat:lat, lng:lng});

Это на самом деле решило мою очень сложную проблему, поэтому я подумал, что опубликую ее здесь.

13 голосов
/ 06 мая 2010
 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>

4 голосов
/ 28 сентября 2010

Я искал и искал и, наконец, обнаружил, что т.е. необходимо знать размер карты. Установите размер карты в соответствии с размером div.

map = new GMap2(document.getElementById("map_canvas2"), { size: new GSize(850, 600) });

<div id="map_canvas2" style="width: 850px; height: 600px">
</div>
0 голосов
/ 06 апреля 2018

Для меня вышеуказанные решения не сработали, тогда я попробовал

map.setCenter(new google.maps.LatLng(lat, lng));

и все заработало как положено.

0 голосов
/ 05 мая 2010

в вашем коде, в строке

map.setCenter(new GLatLng(lat, lon), 5);

метод setCenter принимает только один параметр для lat: long location. Почему вы передаете там два параметра?

Я предлагаю вам изменить его на

map.setCenter(new GLatLng(lat, lon));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...