6

http://openlayers.org/dev/examples/sundials.htmlの例のように、マップに既にロードされているKMLを再解析 し、クリック可能なリストに変換して、マップを中央に配置します。ポイントクリックして、ポップアップウィンドウを表示します。

これは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;             
                         }
            }

        }
4

1 に答える 1

1

「selected.clickFeature」呼び出しを削除し、代わりに機能レイヤーに「featureselected」イベントのイベントリスナーを作成する必要があると思います。

OpenLayers.Layer.Vector

そのイベントでポップアップを表示する場合は、ポップアップを見つけて既存のコードで選択し、行を削除するだけです。 selected.clickFeature();

補足:機能サーバーは他の形式でデータを配信できますか?たとえばWFS?KMLデータの解析は必要ありません。

于 2010-12-20T17:50:54.973 に答える