1

さて、私は1つがホバーしているときに素敵なポップアップが欲しいですが、ベクトルも選択可能にしたいです。ホバー部分をスキップすると、チャームのように機能しますが、それ以外の場合:/見逃したものはありますか?

vectors.removeAllFeatures();
var geojson_format = new OpenLayers.Format.GeoJSON();
vectors.addFeatures(geojson_format.read(data));
var selectCtrl = new OpenLayers.Control.SelectFeature(vectors,
{
    clickout: true
});
map.addControl(selectCtrl);
selectCtrl.activate();
vectors.events.on({
    "featureselected": featureSelected
});
var hover = new OpenLayers.Control.SelectFeature(vectors,{
    hover: true,
    highlightOnly: true,
    eventListeners: {
         featurehighlighted: featureHover,
         featureunhighlighted: featureUnHover
    }
});
map.addControl(hover);
hover.activate();
4

2 に答える 2

0

私は間違った順序でコードを書いただけでした。前map.addControl(hover); hover.activate();にある必要があります

map.addControl(selectCtrl);
 selectCtrl.activate();
 vectors.events.on({
     "featureselected": featureSelected
 });

だから、今それは動作します!

于 2012-06-14T14:34:59.673 に答える
0

私の見方では、 OpenLayers.Control.SelectFeatureで2つのmap.addControlを作成すると、機能しないものが1つあるため、これは実際に機能しますか。実際、私にはバス層とバス停層の2つの層があります。それらをすべてアクティブにすると、バスレイヤーのホバーのみが機能します。バスレイヤーのコントロールをアクティブにしないと、突然バスストップレイヤーが機能します。したがって、両方とも個別に機能します。ここでの問題は、2つのaddControl行でここで見つけた唯一の問題です。autoActivateも使用しようとしましたが、同じ結果になりました。

アップデート

実際にはもう機能しないように意図されています。明らかに、2つのコントロール機能を作成することはできません。代わりに、1つを作成し、これを両方のレイヤーに適用する必要があります。ドキュメントに記載されているように、これのサポートは2.7で削除されました2つの異なるベクトルレイヤーを使用してこれを行う方法の良い例があります。これは私が気付くのに何日もかかりました。ポップアップで、現在のレイヤーを判別し、それに応じて動作する方法が必要です。

于 2012-10-10T12:32:09.737 に答える