2010-12-06 3 views
6

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

Это было действительно легко сделать на Картах 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;    
         } 
      } 

     } 
+0

Вы были там, где я. Вы когда-нибудь находили ответ? – jcolebrand 2011-03-31 05:12:18

ответ

1

Я думаю, вы должны удалить «выбранный .clickFeature»вызов, и вместо того, чтобы создать прослушиватель события для„featureselected“события в вашем художественном слое:

OpenLayers.Layer.Vector

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^