MapBox-जीएल-js साथ GeoJSON सरणी के लिए मक्खी पर मार्कर जोड़ें

वोट
0

मैंने देखा है कई मार्करों लेकिन मार्कर स्थानों के साथ MapBox नक्शे के कई उदाहरण इस तरह के एक के रूप में पूर्व क्रमादेशित एक GeoJSON सरणी में हैं यहाँ

मैं एक विधि के माध्यम से नक्शे के लिए एक मार्कर जोड़ने और मौजूदा मार्कर रखने के लिए सक्षम होने के लिए करना चाहते हैं। मार्कर में निर्मित जियोकोडर खोज से बनाया जा जाएगा। ऐसा लगता है जैसे कि यह इस की तर्ज पर कुछ के साथ वर्ष mapbox.js के साथ संभव है:

L.geoJson(geojsonFeature, { ... }).addTo(map);

हालांकि, मैं MapBox-जीएल-js साथ इस तरह के एक विधि / कार्यक्षमता के लिए दस्तावेज़ प्राप्त नहीं कर पा रहे। मैं इन मार्करों का ट्रैक रखने और संपादित / उन्हें इस तरह हटाने में सक्षम होना चाहते हैं बेला । क्या मैं कुछ भूल रहा हूँ?

यहाँ मेरे वर्तमान कोड है कि केवल एक मार्कर के साथ काम करता है। आप एक नया मार्कर जोड़ेंगे, तो वह वर्तमान में पुराने बदल देता है। मैं उन्हें जियोकोडर हुक से जोड़ने रखना चाहते हैं:

mapboxgl.accessToken = 'xxx';  

var map = new mapboxgl.Map({
    container: 'map',
    style: 'mapbox://styles/mapbox/streets-v9',
    center: [-79.4512, 43.6568],
    zoom: 13
});

var geocoder = new mapboxgl.Geocoder({
    container: 'geocoder-container'
});

map.addControl(geocoder);

map.on('load', function() {
    map.addSource('single-point', {
        type: geojson,
        data: {
          type: FeatureCollection,
            features: []
        }
    });

    map.addLayer({
        id: point,
        source: single-point,
        type: circle,
        paint: {
            circle-radius: 5,
            circle-color: #007cbf
        }
    });

    var el = document.createElement('div');
    el.id = 'marker';
    var markerObject;      

    map.addControl(new mapboxgl.NavigationControl());
    geocoder.on('result', function(ev) {
       var placeName = JSON.stringify(ev.result.place_name);
       console.log(placeName); 

       var popup = new mapboxgl.Popup({offset:[0, -30]})
           .setText(ev.result.place_name);

       markerObject = new mapboxgl.Marker(el, {offset:[-25, -25]})
         .setLngLat(ev.result.geometry.coordinates)
         .setPopup(popup)
         .addTo(map);
   });
});
10/11/2016 को 04:50
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
0

इस कोड लाइनों के साथ संरचित है

var el = document.createElement('div');
el.id = 'marker';
var markerObject;   

बाहर की geocoder.on('result'विधि। यदि आप चाहते हैं एक नया मार्कर हर बार है कि के लिए प्रदान की कॉलबैक जोड़ा geojson.on('result'आग, तो यह मुद्दा है: आप एक ही उपयोग करने के लिए कोशिश कर रहे हैं divकई मार्करों के लिए तत्व। MapBox जीएल जे एस क्लोन नहीं करता है या आप के लिए उस तत्व नकल: उम्मीद है कि एक नए के तत्व तर्क है mapboxgl.Markerएक नया तत्व है।

तो, इस समस्या को हल करने के लिए, आप ऊपर लाइनों के लिए कॉलबैक के अंदर कदम होगा geocoder.on('result'

10/11/2016 को 17:33
का स्रोत उपयोगकर्ता

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