ベクターレイヤーでOpenLayersを使用して、マップ上にさまざまなアイテムを表示します。
その上に、各アイテム(機能)にポップアップを追加したい(アイテムをクリックするとポップアップが表示される)。そのために私は持っています:
function initMap()
{
// In this function I add with success the different items to the vectorLayer.
}
function finishMap()
{
map.addLayer(vectorLayer);
selectControl = new OpenLayers.Control.SelectFeature(vectorLayer,
{
onSelect: onFeatureSelect,
onUnselect: onFeatureUnselect
});
map.addControl(selectControl);
selectControl.activate();
}
function onFeatureClose(evt) {
selectControl.unselect(selectedFeature);
}
function onFeatureSelect(feature) {
var popup = new OpenLayers.Popup.FramedCloud("popup",
feature.geometry.getBounds().getCenterLonLat(),
null,
feature.description,
true,
onFeatureClose);
popup.panMapIfOutOfView = true;
popup.autoSize = true;
feature.popup = popup;
map.addPopup(popup);
}
function onFeatureUnselect(feature) {
map.removePopup(feature.popup);
feature.popup.destroy();
feature.popup = null;
}
別の関数の呼び出しは次のとおりです。
- initMap();
- 仕上げマップ();
問題は次のとおりです。クリックするとポップアップが表示されるアイテムが1つしかありません(10を超える)...