Событие клика на маркере Google Maps - PullRequest
19 голосов
/ 22 марта 2010

Я хотел бы заполнить карту Google несколькими маркерами. Когда пользователь нажимает на маркер, я бы хотел, чтобы он отправил пользователя на другую веб-страницу, предназначенную для этого места. (например: допустим, маркеры представляют дома, когда вы нажимаете на маркер, вы переходите на страницу с дополнительной информацией о доме)

Какой самый простой способ сделать это?

Ответы [ 2 ]

51 голосов
/ 19 июля 2011

Я считаю, что на Google Map v3, GEvent не распознается, у меня работает ниже

21 голосов
/ 22 марта 2010

Вам нужно будет прикрепить прослушиватель событий к каждому маркеру.Обработчик кликов может установить document.location на URL-адрес страницы, на которую вы хотите перейти.

var marker = new GMarker(location);
GEvent.addListener(marker, "click", function() {
    window.location = theURL;
});
map.addOverlay(marker);

Поскольку вы, вероятно, будете добавлять маркеры в цикл, вам необходимо убедиться, что каждый из них получает свойсобственный URL.Поскольку замыкания сохраняют фактические переменные, к которым они обращаются (а не их значения), вам, вероятно, нужно добавить по крайней мере addListener код в его собственную функцию, чтобы создать собственную область видимости.Ваш цикл будет выглядеть примерно так:

function createMarker(location, url) {
    var marker = new GMarker(location);
    GEvent.addListener(marker, "click", function() {
        window.location = url;
    });
    return marker;
}

// Assuming locations is an array of objects with lat, lng, and url properties
for (var i = 0; i < locations.length; i++) {
    var loc = locations[i];
    map.addOverlay(createMarker(new GLatLng(loc.lat, loc.lng), loc.url));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...