Как обнаружить событие нажатия на наложении PolyLine на картах Google? - PullRequest
5 голосов
/ 06 апреля 2009

Мне кажется, что я должен быть в состоянии сделать следующее, чтобы обнаружить событие клика в строке на карте Google:

var line = new GPolyline( ... );
map.addOverlay(line);
GEvent.addListener(line, "click", function(latlng){ alert("clicked"); });

Ссылка API говорит, что это доступно в версии 2.88, которая была выпущена в 2007 году (!?), поэтому я предполагаю, что это то, что я использую, но я не знаю, как подтвердите это.

Я также попытался явно установить параметр {clickable:true} (он должен быть по умолчанию). Я тестировал в FireFox 3 и Opera 9.6, поэтому сомневаюсь, что это зависит от браузера. Я также использую jQuery на странице.

У меня достаточно кода для определения кликов по маркерам, которые отлично работают, клики по строкам были бы очень хорошими, кто-нибудь может меня просветить?

Ответы [ 5 ]

6 голосов
/ 08 ноября 2010

Обновление: в версии 3 API вы хотите использовать google.maps.event.addListener(object, event, function);

, например

google.maps.event.addListener(polyline, 'click', function() {
    alert('you clicked polyline');
    });

Подробнее см. events api

2 голосов
/ 08 апреля 2009

Я только что провел быстрый тест, и на моей тестовой странице работал следующий код:

var polyline = new GPolyline([
  new GLatLng(37.4419, -122.1419),
  new GLatLng(37.4519, -122.1519)
], "#ff0000", 10);
map.addOverlay(polyline);

GEvent.addListener(polyline, 'click', function() {
    alert('you clicked polyline');
});

Чтобы узнать, какая у вас версия карт Google, нужно посмотреть на параметр v = URL src карт Google, который у вас есть

http://maps.google.com/maps?file=api&v=2&key=MY_API_KEY

В этом случае у меня есть «v = 2», что означает, что я использую последнюю стабильную версию 2, которая поддерживает кликабельные полилинии (на сегодняшний день 2.101 является самой последней версией). «v = 2.x» означает, что вы используете пограничный релиз. И любое «v = 2.5», где число после точки (.) Является числом, относится к конкретному выпуску

1 голос
/ 13 апреля 2010

спасибо за это!

  1. У многих примеров щелчков GMarker есть GEvent ПЕРЕД addListener (), который не работает. изменение порядка заставляет его работать.

  2. вы можете найти реальную версию с предупреждением (G_API_VERSION);

Используя приведенный выше URL-адрес stnadard, my is: // G_API_VERSION == 208a

Еще раз спасибо!

0 голосов
/ 14 мая 2013

Обратите внимание, что в пределах символов , которые находятся на полилинии, события кликов невозможны Они также не наследуют события щелчка, которые прикреплены к самой Polyline . Больше информации здесь: Google Maps: кликабельная иконка ломаной линии

0 голосов
/ 14 апреля 2010

GPolylines можно сделать кликабельными, добавив к ним событие щелчка, как с другими объектами (код взят из предыдущего ответа):

var polyline = new GPolyline([
  new GLatLng(37.4419, -122.1419),
  new GLatLng(37.4519, -122.1519)
], "#ff0000", 10);
map.addOverlay(polyline);

GEvent.addListener(polyline, 'click', function() {
    alert('you clicked polyline');
});

Однако вы также должны знать, что после возникновения события GPolyline возникает событие щелчка на самой карте в том же месте. Кроме того, в настоящее время существует ошибка (по состоянию на апрель 2010 г.) в этом конкретном событии, поскольку параметры события неправильно передаются в событие щелчка на карте. Это известная ошибка от Google, и они работают над ее устранением.

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