0
我想要一個簡單的測試,我有一個可拖動功能頂部的基礎圖像。這些點要素具有相關的外部圖形(我傾向於使用具有關聯圖形的多邊形,但這是另一個問題)。OpenLayers:無法選擇功能後點擊
我有一個完美的懸停控制。我也有一個幾乎可以工作的選擇控件。但是,一旦我點擊了一次,我就無法重新選擇一個功能。同樣,如果在嘗試選擇特徵之前單擊特徵之外的任何地方,我都無法選擇特徵。
我希望這是明確的 - 但如果沒有那麼這個例子應該是(你也可以看到整個代碼)http://sigfrid.co.uk/oltest/simple.html
我把我認爲是下面的代碼的鍵位....
創建地圖
var map = new OpenLayers.Map({
div:'map',
});
添加基底層
var base = new OpenLayers.Layer.Image(
'Base level',
'img/base.png',
new OpenLayers.Bounds(-1000, -1000, 1000, 1000),
new OpenLayers.Size(864,864),
options
);
map.addLayer(base);
樣式添加
var markerStyleMap = new OpenLayers.StyleMap
({
"default": new OpenLayers.Style(template, {context: context}),
"hover": new OpenLayers.Style ({graphicOpacity:0.5}),
"select": new OpenLayers.Style ({graphicOpacity:0.1})});
添加點
pt1 = new OpenLayers.Geometry.Point(0,0);
pt1Feature = new OpenLayers.Feature.Vector(pt1);
...
markerLayer.addFeatures([pt1Feature,pt2Feature,pt3Feature]);
添加獨特查找的不同標記圖像
var lookup = {
"f1": {externalGraphic:"img/f1.png"},
"f2": {externalGraphic:"img/f2.png"},
"f3": {externalGraphic:"img/f3.png"},
}
markerStyleMap.addUniqueValueRules("default", "type", lookup);
markerLayer.styleMap = markerStyleMap;
markerLayer.features[0].attributes.type = "f1";
...
添加控件
var dragControl = new OpenLayers.Control.DragFeature(markerLayer)
map.addControl(dragControl);
dragControl.activate();
var highlightCtrl = new OpenLayers.Control.SelectFeature(markerLayer, {
hover: true,
highlightOnly: true,
renderIntent: "hover",
});
map.addControl(highlightCtrl);
highlightCtrl.activate();
var selectCtrl = new OpenLayers.Control.SelectFeature(markerLayer, {
clickout: true,
renderIntent: "select",
});
map.addControl(selectCtrl);
selectCtrl.activate();
感謝您的幫助,
尼克