#javascript #google-maps
#javascript #google-карты
Вопрос:
Я хочу установить прослушиватели кликов для множества разных фигур на моей карте. Каждая фигура содержит кучу данных, которые я хочу показать, когда я нажимаю на нее.
var newData = new google.maps.Data({
map: map,
style: map.data.getStyle()
});
for (var i = 0; i < shapes.length; i ) {
var userObject = JSON.parse(shapes[i].area);
newData.addGeoJson(userObject);
// It would be simplest to add a clicklistener here since i got access to the shapes[i] with the data to act on
google.maps.event.addListener( /* ??? */, 'click', function (event) {
alert("y");
});
}
map.data.setMap(null);
map.data = newData;
Я попытался установить прослушиватель кликов для возвращаемого массива из addGeoJson (…), но, возможно, я неправильно подхожу к этому. Может быть, мне нужно как-то получить полигоны, а затем сделать это, как в этом официальном примере, или я думаю, что я мог бы сделать что-то хакерское с разными слоями.
Как бы вы это сделали, учитывая, что вы не можете изменить, что вы получаете кучу отдельных фрагментов GeoJSON? Могу ли я получить свой GeoJSON в виде полигонов при их добавлении?
Ответ №1:
Дальнейший путь, который я буду использовать, который, я думаю, сработает хорошо, это:
addGeoJson возвращает массив объектов. Используйте setProperty(name, newVal) для них и добавьте информацию позже, необходимую для действия щелчка. Извлеките данные с помощью getProperty(name)
Добавьте прослушиватель щелчков для всего объекта данных:
google.maps.event.addListener(newData, 'click', function (event) {
event.feature.forEachProperty(function (value, name) {
alert("name: " name "value: " value);
})
});