Как активировать функцию + всплывающее окно при нажатии за пределами карты в Openlayers?
Я повторно анализирую KML, который уже был загружен на карту, аналогичную приведенному здесь примеру: http://openlayers.org/dev/examples/sundials.html и превращение его в кликабельный список, который будет центрировать карту на точке нажата, и отобразить всплывающее окно для него.
это было очень легко сделать в Google Maps, но я не могу найти подобных примеров Openlayers. Есть ли более простой способ сделать это? Что-то встроенное в меня. не хватает?
HTML-код:
<ul id="locationTable">
</ul>
JS:
htmlRows = "";
for(var feat in features) {
// Build details table
featId = features[feat].id; // determine the feature ID
title = jQuery(f).filter('[name=TITLE]').text();
htmlRow = "<li><a href="javascript:selectFeature('"+featId+"');">"+title+"</a></li>";
htmlRows = htmlRows + htmlRow;
}
jQuery('#locationTable').append(htmlRows);
и затем для функции selectFeature:
function selectFeature(fid) {
for(var i = 0; i<kml.features.length;++i) {
if (kml.features[i].id == fid)
{
selected = new OpenLayers.Control.SelectFeature(kml.features[i]);
selected.clickFeature(); // make call to simulate Click event of feature
break;
}
}
}
1 ответов
Я думаю, вы должны удалить "выбранный.вызов" clickFeature "и вместо этого создайте прослушиватель событий для события "featureselected"в вашем векторном слое:
помощью OpenLayers.Слой.Вектор
Если вы отобразите всплывающее окно в этом случае, вам нужно будет только найти его и выбрать его с помощью существующего кода и удалить строку
selected.clickFeature();
Sidenote: может ли ваш сервер функций доставлять данные в других форматах? WFS для экземпляра? Парсинг данных KML в этом нет необходимости.