[英]javascript function to search all OpenLayers vector features covering a pixel
我有一個OpenLayers地圖 ,可在矢量層中繪制要素 。 這些功能是可選的,並且在選擇時會彈出一個窗口。 不幸的是,在許多情況下,功能重疊,因此可能無法選擇某些功能。 我認為要解決此問題,需要更改我的選擇控件,以便它使用單擊處理程序並在地圖上搜索功能。 我需要編寫什么樣的函數? 之前有沒有實施過的例子?
這是繪制特征的方式:
var vector_Layer = new OpenLayers.Layer.Vector();
function GetFeaturesFromKMLString (strKML) {
var format = new OpenLayers.Format.KML({
'internalProjection': new OpenLayers.Projection("EPSG:900913"),
'extranalProjection': new OpenLayers.Projection("EPSG:4326")
});
return format.read(strKML);
};
vector_Layer.addFeatures(GetFeaturesFromKMLString('$newkml'));
這是當前選擇圖層的方式:
var select = new OpenLayers.Control.SelectFeature(vector_Layer, {clickout: true});
vector_Layer.events.on({
"featureselected": onFeatureSelect,
"featureunselected": onFeatureUnselect});
map.addControl(select);
select.activate();
select.handlers['feature'].stopDown = false;
select.handlers['feature'].stopUp = false;
這是我計划使用的點擊事件監聽器:
OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, {
defaultHandlerOptions: {
'single': true,
'double': false,
'pixelTolerance': 0,
'stopSingle': false,
'stopDouble': false
},
initialize: function(options) {
this.handlerOptions = OpenLayers.Util.extend(
{}, this.defaultHandlerOptions
);
OpenLayers.Control.prototype.initialize.apply(
this, arguments
);
this.handler = new OpenLayers.Handler.Click(
this, {
'click': this.onClick
}, this.handlerOptions
);
},
onClick: function(evt) {
//function that seachers for and selects features at this point
},
由於矢量功能使用OpenLayers.Geometry類作為幾何描述,因此您應該看一下Geometry,因此有一個可能有用的相交方法:請參閱: http : //dev.openlayers.org/releases/OpenLayers-2.13/doc /apidocs/files/OpenLayers/Geometry/Point-js.html您還需要攔截click事件才能運行相交檢查。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.