簡體   English   中英

javascript函數搜索覆蓋一個像素的所有OpenLayers矢量功能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM