मेरे पास अपने जियोसर्वर में EPSG: 4326 का उपयोग करके यूके काउंटी आकार की फ़ाइल (मल्टीपोलीगॉन) है। मैं नीचे के रूप में अपने आवेदन में इस आकृति फ़ाइल को लोड करने के लिए खुली परतों 3 का उपयोग कर रहा हूं:

source = new ol.source.XYZ({url: '/gmaps?zoom={z}&x={x}&y={y}&Layers=UKCounties', crossOrigin: "anonymous"});
countiesLayer = new ol.layer.Tile({source: source});
map.addLayer(countiesLayer);

यह अच्छा काम करता है। मुझे उपयोगकर्ताओं को वर्तमान स्थान प्राप्त करने की आवश्यकता है जो इस प्रकार किया जाता है:

var coordinate = geolocation.getPosition();

मैं यहाँ सही lat & long को पुनः प्राप्त करने में सक्षम हूँ। उदाहरण: अक्षांश = 53.797534899999995, एलएनजी = -1.5449। अब मुझे यह जांचने की आवश्यकता है कि इन बिंदुओं में से कौन सी काउंटी (बहुभुज) खुली परतों 3 और जावास्क्रिप्ट का उपयोग कर रही है। जियोसर्वर डब्ल्यूएफएस का उपयोग करके, मैं प्रत्येक काउंटियों के बाउंडिंग बॉक्स को प्राप्त करने में सक्षम हूं:

$.each(features, function(index, eachFeature) {
            var bbox = eachFeature.properties.bbox;
            if (bbox != null) {
              var bottomLeft = ([bbox[0], bbox[1]]);
              var topRight = ([bbox[2], bbox[3]]);
              var extent = new ol.extent.boundingExtent([bottomLeft, topRight]);

            if (ol.extent.containsXY(extent1,lat,long)) {
                alert("got the feature");
            }
        }

});

मुद्दा यह है कि मेरा कोड अलर्ट स्टेटमेंट को प्रिंट नहीं करता है। मैंने उपयोग करने का भी प्रयास किया है

if (ol.extent.containsXY(extent,long,lat))

तथा

var XY = ol.proj.transform([long, lat], 'EPSG:4326', 'EPSG:3857');

अगर (ol.extent.containsXY(extent,XY[0],XY[1])) अगर (ol.extent.containsXY(extent,XY[1],XY[0]))

लेकिन इनमें से कोई भी अलर्ट प्रिंट नहीं करता है। क्या इसमें कुछ गलत है?

0
akimran82 30 मार्च 2017, 13:47

1 उत्तर

सबसे बढ़िया उत्तर

मुझे इस्तेमाल करना था

var XY = ol.extent.applyTransform(extent, ol.proj.getTransform("EPSG:3857", "EPSG:4326"));

की बजाय

var XY = ol.proj.transform([long, lat], 'EPSG:4326', 'EPSG:3857');

और यह काम करता है।

0
akimran82 26 अप्रैल 2017, 16:57