google maps - открыть маркерное информационное окно с заданными координатами - PullRequest
4 голосов
/ 21 февраля 2011

Я использую Google Maps API v3.

Используя javascript, как я могу открыть информационное окно маркера, учитывая его координаты?

1 Ответ

11 голосов
/ 21 февраля 2011

Вот Jsfiddle , который показывает вам, как выполнить "внешнее" взаимодействие JavaScript с картой с маркерами. Да, вам нужно сохранить маркеры и соответствующее информационное окно в массиве, чтобы вы могли получить к нему доступ. Я создал два случайных маркера и использую координаты из массива кораблей.

Ниже приведен HTML-код с двумя общими ссылками, в котором при щелчке по ссылке можно было бы отцентрировать создатель 1 и открыть его информационное окно, а для маркера 2 наоборот:

    <div id='map_canvas'></div>
    <a href='#' onClick="gotoPoint(1);">Click for marker 1</a><br/>
    <a href='#' onClick="gotoPoint(2);">Click for marker 2</a>

В createMarker я сохраняю созданного производителя вместе с его ассоциированным InfoWindow и помещаю его в массив маркеров глобальной области видимости. При наведении на маркер откроется соответствующее информационное окно:

function createMarker(lat, lon, html) {
    var newmarker = new google.maps.Marker({
        position: new google.maps.LatLng(lat, lon),
        map: map,
        title: html
    });

    newmarker['infowindow'] = new google.maps.InfoWindow({
            content: html
        });

    google.maps.event.addListener(newmarker, 'mouseover', function() {
        this['infowindow'].open(map, this);
    });

    marker.push(newmarker);
}

Здесь, в gotoPoint, я просто задаю номер маркера в качестве параметра. Я в основном устанавливаю центр карты на центр маркера, используя new google.maps.LatLng и использую lat и lng маркера, вызывая marker[myPoint-1].position.lat(); и marker[myPoint-1].position.lng();, и открываю ассоциированное InfoWindow с помощью marker[myPoint-1]['infowindow'].open(map, marker[myPoint-1]);:

function gotoPoint(myPoint){
    map.setCenter(new google.maps.LatLng(marker[myPoint-1].position.lat(), marker[myPoint-1].position.lng()));
    marker[myPoint-1]['infowindow'].open(map, marker[myPoint-1]);
}

Дайте мне знать, если у вас есть вопросы по поводу этого примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...