Карта 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);
    }
  });