Google Maps setCenter()
Я использую карты 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);
Ответы
Ответ 1
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>
Ответ 2
Ответ на phoenix24 на самом деле помог мне (чей собственный вопрос не решал мою проблему). Правильными аргументами для setCenter являются
map.setCenter({lat:LAT_VALUE, lng:LONG_VALUE});
Документация Google
Кстати, если ваша переменная lat и lng работает следующий код
map.setCenter({lat:lat, lng:lng});
Это фактически решило мою очень сложную проблему, поэтому я подумал, что отправлю ее здесь.
Ответ 3
Я искал и искал и, наконец, нашел, что т.е. должен знать размер карты.
Установите размер карты в соответствии с размером div.
map = new GMap2(document.getElementById("map_canvas2"), { size: new GSize(850, 600) });
<div id="map_canvas2" style="width: 850px; height: 600px">
</div>
Ответ 4
в вашем коде, в строке
map.setCenter(new GLatLng(lat, lon), 5);
метод setCenter принимает только один параметр, для long: long. Почему вы передаете два параметра?
Я предлагаю вам изменить его,
map.setCenter(new GLatLng(lat, lon));