Информационное окно Google Maps API V3 - PullRequest
0 голосов
/ 21 марта 2012

При разработке этого решения я узнал, что API V2 устарел.С тех пор я начал работу над версией, использующей API V3.Эта незавершенная работа может быть найдена в Моя Новая Карта .Выражаем особую благодарность Дэвиду Марленду (David Marland) по адресу Hammerspace за ускорение этого преобразования для меня.

У меня осталось 3 оставшихся вопроса ... первый из которых я расскажу в этом посте.

Я не могу вызвать определенные мной информационные окна:

 google.maps.event.addListener(polyline, 'click', function(event) {
    if (polyline.Contains(event.latLng)) {
        infowindowInside.open(map,polyline);
    } else {
        infowindowOutside.open(map,polyline);
    }
  });

Я прикрепляю их к многоугольнику, а не к маркеру.На полигоне написано:

var path = [
new google.maps.LatLng(35.950079, -84.104977),
new google.maps.LatLng(35.950774, -84.049702),
new google.maps.LatLng(35.946883, -84.047813),
new google.maps.LatLng(35.945354, -84.045067),
new google.maps.LatLng(35.940907, -84.042149),
new google.maps.LatLng(35.930483, -84.037857),
new google.maps.LatLng(35.939656, -84.037857),
new google.maps.LatLng(35.928120, -84.076309),
new google.maps.LatLng(35.938822, -84.066868),
new google.maps.LatLng(35.950079, -84.104977)];
var polyline = new google.maps.Polygon({path:path, strokeColor: "#FF0000", strokeOpacity: 1.0, strokeWeight: 2, clickable:false});
polyline.setMap(map);

Я ценю любые рекомендации, которые вы можете дать.

Спасибо.

** ОБНОВЛЕНО *****

Теперь я изменил код так:

google.maps.event.addListener(polyline, 'click', function(event) {
    if (polyline.ContainsLocation(event.latLng, polyline)) {
        window.alert('inside');//infowindowInside.open(map,polyline);
    } else {
        window.alert('outside');//infowindowOutside.open(map,polyline);
    }
  });

Однако ... до сих пор нет триггера.

Ответы [ 2 ]

2 голосов
/ 21 марта 2012

Возможно, потому что Polygon не имеет функции "содержит". Вы должны взглянуть на использование Google Maps API Geometry Library , который имеет функцию containsLocation .

1 голос
/ 26 июня 2012

Google maps api v3 не позволяет добавлять информационные окна в полилинии или полигоны.Решение этой проблемы состоит в том, чтобы получить координаты широты / долготы щелчка мышью и прикрепить информационное окно (где пользователь щелкнул мышью) к карте, например:

google.maps.event.addListener(polyline, 'click', function(event) {
 if (polyline.Contains(event.latLng)) {
    infowindowInside.open(map);
 } else {
    infowindowOutside.open(map);
 }
});

(обратите внимание, что нет 'Второй аргумент в методе .open ())

В противном случае вы можете вычислить широту / долготу либо центра вашего многоугольника, либо одного из его углов и прикрепить там информационное окно (но к карте).

, что позволит вам отображать ваше информационное окно, в то время как оно будет отображаться как прикрепленное к многоугольнику.

Редактировать: Также - как отмечалось в метках мано. Содержит - яне уверен, существует ли этот метод или нет, так что имеющийся у вас блок кода может все еще не работать даже после удаления второго аргумента из метода .open ().в этом случае вам, возможно, придется применить другой подход к своей логике, но прикрепление маркера к карте вместо полигона или полилинии решит вашу главную проблему.

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