MapBox वेब जीएल जे एस - querySourceFeatures () वेक्टर टाइल स्रोत के साथ समारोह

वोट
1

मुझे लगता है कि मैं विक्टोरिया, ऑस्ट्रेलिया में विशेष उपनगरीय इलाके का प्रतिनिधित्व करने बहुभुज जिसमें एक GeoJSON फ़ाइल को अपलोड करने के द्वारा बनाई गई MapBox पर एक सदिश tileset मिल गया है। उपनगर, राज्य, डाक कोड - - GeoJSON में सुविधा गुण के लिए इसी मेरे वेक्टर tileset तीन गुण है।

मैं भी सफलतापूर्वक एक सटीक मानचित्र पाने के लिए MapBox वेब जीएल js पुस्तकालय के माध्यम से उन गुणों को क्वेरी कर सकते हैं। उदाहरण के लिए मैं एक नक्शे के काम कर जब मैं एक पर प्रकाश डाला बहुभुज क्लिक करें कि एक पॉपअप से पता चलता है, और पॉपअप सही ढंग से पता चलता है कि उपनगर के गुण (उपनगर, राज्य, डाक कोड)।

अपने वेब पेज में - मेरी tileset में हर सुविधा के लिए - अब मैं उन गुणों का उपयोग करना चाहते हैं। मैं मूल रूप से एक सूची के रूप में उन गुणों को बाहर डंप करने के लिए, नक्शे के बाहर एक div में चाहते हैं; बस हर उपनगर और उसके गुणों को सूचीबद्ध। इस उद्देश्य से, मैं MapBox वेब जीएल जे एस पुस्तकालय के querySourceFeatures फ़ंक्शन का उपयोग करने की कोशिश कर रहा हूँ। मैं थोड़ा संघर्ष कर रहा हूँ।

यहाँ मेरी कोड है। उम्मीद के रूप में मेरा नक्शा प्रदर्शित करता है। लेकिन जे एस कंसोल में मैं सिर्फ एक खाली सरणी हो रही है।

यहाँ मेरी कोड है

var map = new mapboxgl.Map({
    container: 'map', // container id
    style: 'mapbox://styles/mapbox/streets-v8', //stylesheet location
    center: [144.96, -37.81], // starting position
    zoom: 8, // starting zoom,
    hash:true
});

// Add zoom and rotation controls to the map.
map.addControl(new mapboxgl.Navigation());

map.on('load', function () {
    map.addSource('charlieSource', {
        type: 'vector',
        url: 'mapbox://charlie.962dstid'
    });


   map.addLayer({
    id: charlielayer,
    type: fill,
    source: charlieSource,
    source-layer: my-source-layer-name,
    layout: {},
    paint: {
        fill-color: #00525a,
        fill-opacity: 0.5
    }

    });

    var myFeatures = map.querySourceFeatures('charlieSource', 
        {
            sourceLayer: 'my-source-layer-name',
           // i'm confident there is data matching this filter 
            filter: [==, postcode, 3000]
        }
        );

   console.log(myFeatures);


});

doco थोड़ा प्रकाश तो मैं अगर मैं querySourceFeatures समारोह सही ढंग से उपयोग कर रहा हूँ पता नहीं है है। मैं एक कुल जे एस noob हूँ तो क्षमा याचना करता है, तो इसके कुछ पूरी तरह से सरल।

फ़ायरफ़ॉक्स में मेरी कंसोल में मैं सिर्फ लंबाई शून्य की एक सरणी मिलता है। कुछ निश्चित नहीं कि यहाँ से कहाँ जाना है।

मैं MapBox वेब जीएल js पुस्तकालय की v0.18.0 उपयोग कर रहा हूँ।

16/05/2016 को 08:50
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
1

संपादित करें: एक स्रोत जोड़ने के बाद, आप टाइल्स कॉल करने से पहले लोड करने के लिए इंतज़ार करना होगा queryRenderedFeatures। इस कोड को अपनी समस्या को हल करना चाहिए:

var wasLoaded = false;
map.on('render', function() {
    if (!map.loaded() || wasLoaded) return;
    var myFeatures = map.querySourceFeatures('charlieSource', {
        sourceLayer: 'my-source-layer-name',
        filter: ["==", "postcode", "3000"]
    });
    console.log(myFeatures);
    wasLoaded = true;
});

आप जो कुछ भी पोस्ट किया है, सही लगती है चार्ली। मैं एक कार्य प्रदर्शन के लिए अपने डेटा का उपयोग किए बिना समस्या को ठीक से निर्धारित नहीं कर सकते।

आप में से अपनी फ़िल्टर को बदलने की कोशिश की है ["==", "postcode", "3000"]करने के लिए ["==", "postcode", 3000]? (एक स्ट्रिंग के बजाय एक संख्या में 3000 मोड़)

आप सुनिश्चित करें कि डेटा जिसके लिए आप खोज रहे हैं व्यूपोर्ट के भीतर है कर रहे हैं? querySourceFeaturesकेवल व्यूपोर्ट के भीतर डेटा के लिए काम करता है।

आप यह सुनिश्चित करें कि करने के लिए अपने मूल्यों sourceऔर sourceLayerसही हैं?

16/05/2016 को 17:28
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more