Как активировать функцию + всплывающее окно при нажатии вне карты в Openlayers? - PullRequest
6 голосов
/ 07 декабря 2010

Я заново анализирую KML, который уже был загружен на карту, аналогично приведенному здесь примеру: http://openlayers.org/dev/examples/sundials.html, и превращаю его в интерактивный список, в котором карта будет центрироваться по нажатой точке, и отображатьвсплывающее окно для этого.

Это было действительно легко сделать в Картах Google, но я не могу найти подобных примеров 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 Ответ

1 голос
/ 20 декабря 2010

Я думаю, вам следует удалить вызов selected.clickFeature и вместо этого создать прослушиватель событий для события featureselected в вашем слое объектов:

OpenLayers.Layer.Vector

Если вы отобразите всплывающее окно в этом событии, вам нужно будет только найти его и выбрать его с существующим кодом, а также удалить строку selected.clickFeature();

Sidenote: может ли ваш сервер функций доставитьданные в других форматах?WFS например?Анализ данных KML не требуется.

...