Карта Google V3 Задайте центр конкретному маркеру
Я использую Google Map V3 для отображения списка маркеров, извлеченных из БД, с использованием MYsql и PHP.
MY-маркеры устанавливаются на карте, используя полный адрес (от DB, включая почтовый индекс), поскольку у меня нет данных Long, Lat
Все работает нормально, MY loop выглядит следующим образом
while...
Addmarker(map,'MY ADdress','Title');
end while;
Теперь я хотел бы установить карту на конкретный маркер, содержащийся в цикле, который будет соответствовать ранее введенному почтовому индексу.
Как я могу установить карту в центр этого маркера и открыть окно infowindow?
Ответы
Ответ 1
Как только у вас есть маркеры на карте, вы можете получить координаты Lat/Long через API и использовать это для установки центра карты. Сначала вам нужно будет определить, на каком маркере вы хотите сосредоточиться, - я оставлю это до вас.
// "marker" refers to the Marker object you wish to center on
var latLng = marker.getPosition(); // returns LatLng object
map.setCenter(latLng); // setCenter takes a LatLng object
Информационные окна - это отдельные объекты, которые обычно привязаны к маркеру, поэтому, чтобы открыть информационное окно, вы можете сделать что-то вроде этого (однако это будет зависеть от вашего кода):
var infoWindow = marker.infoWindow; // retrieve the InfoWindow object
infoWindow.open(map); // Trigger the "open()" method
Надеюсь, что это поможет.
Ответ 2
Настроить на @6twenty answer... Я предпочитаю panTo (LatLng) через setCenter (LatLng), поскольку panTo анимирует для более плавного перехода к центру, "если изменение меньше ширины и высоты карты".
https://developers.google.com/maps/documentation/javascript/reference#Map
Ниже приведен API Google Maps v3.
var marker = new google.maps.Marker({
position: new google.maps.LatLng(latitude, longitude),
title: markerTitle,
map: map,
});
google.maps.event.addListener(marker, 'click', function () {
map.panTo(marker.getPosition());
//map.setCenter(marker.getPosition()); // sets center without animation
});
Ответ 3
Это должно сделать трюк!
google.maps.event.trigger(map, "resize");
map.panTo(marker.getPosition());
map.setZoom(14);
Вам нужно будет иметь глобальные карты
Ответ 4
Возможно, это поможет:
map.setCenter(window.markersArray[2].getPosition());
все данные маркеров находятся в массиве arrayersArray и являются глобальными. Таким образом, вы можете получить доступ к нему из любого места, используя window.variablename. Каждый маркер имеет уникальный идентификатор, и вы можете поместить его в ключ массива. поэтому вы создаете маркер следующим образом:
window.markersArray[2] = new google.maps.Marker({
position: new google.maps.LatLng(23.81927, 90.362349),
map: map,
title: 'your info '
});
Надеюсь, это поможет.
Ответ 5
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
} else {
alert('Geocode was not successful for the following reason: ' + status);
}
});