MapBox जीएल जे एस में एक क्लिक करने योग्य बहुभुज के शीर्ष पर एक क्लिक करने योग्य मार्कर कैसे

वोट
0

मैं MapBox-जीएल-js और कहा कि पार्किंग स्थल परतों है, जिसे क्लिक, दिशाओं के साथ एक पॉपअप खोलने के साथ एक नक्शा बनाया है। तब मैं कुछ क्लिक करने योग्य मार्कर पार्किंग परत के ऊपर (बस स्टॉप, सुलभ पार्किंग, आदि के लिए) से आगे। जब मैं पार्किंग स्थल पर एक मार्कर क्लिक करें, पार्किंग स्थल पॉपअप और मार्कर पॉपअप दोनों पॉप अप। मैं पॉपअप फायरिंग अगर वहाँ एक मार्कर पॉपअप है से बहुभुज परत कैसे रोक सकते हैं? मैं दोनों पॉपअप नहीं दिखाना चाहते हैं।

यहाँ प्रासंगिक कोड है:

// Add a layer showing the parking lots
map.addLayer({
    id: parking-layer,
    type: fill,
    source: parking-buttons,
    layout: {},
    paint: {
        fill-color: hsla(0, 0%, 0%, 0),
        fill-outline-color: hsla(0, 0%, 0%, 0)
    }
});

// Add a layer showing the bus stop
map.addLayer({
    id: bus,
    type: symbol,
    source: bus,
    layout: {
        icon-image: {icon}-11,
        icon-allow-overlap: true
    },
    paint: {
        icon-opacity: {stops: [[15.49, 0], [15.5, 1]]}
    }
});

// When a click event occurs for a polygon, open a popup with details
map.on('click', function (e) {
    var features = map.queryRenderedFeatures(e.point, { layers: ['parking-layer', 'buildings-layer'] });

    if (!features.length) {
        return;
    }

    var feature = features[0];

    // Populate the popup and set its coordinates
    var popup = new mapboxgl.Popup()
        .setLngLat(map.unproject(e.point))
        .setHTML(feature.properties.description)
        .addTo(map);
});

// When a click event occurs for a node, open a popup with details
map.on('click', function (e) {
    var features = map.queryRenderedFeatures(e.point, { layers: ['bus', 'ephone'] });

    if (!features.length) {
        return;
    }

    var feature = features[0];

    // Populate the popup and set its coordinates
    var popup = new mapboxgl.Popup()
        .setLngLat(feature.geometry.coordinates)
        .setHTML(feature.properties.description)
        .addTo(map);
});
11/08/2016 को 16:52
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
0

आप पर दो अलग-अलग संचालकों पंजीकृत कर रहे clickघटना, जो दोनों अगर वहाँ सुविधाओं ओवरलैपिंग है एक पॉप अप प्रदर्शित खत्म।

मैं एक में विभिन्न परिणाम से निपटने की कोशिश करेगा click2 के बजाय हैंडलर:

// When a click event occurs for a polygon, open a popup with details
map.on('click', function (e) {
    var pointFeatures = map.queryRenderedFeatures(e.point, { layers: ['bus', 'ephone'] });

    if (pointFeatures.length > 0) {
        var feature = pointFeatures[0];
        // Populate the popup and set its coordinates
        var popup = new mapboxgl.Popup()
            .setLngLat(feature.geometry.coordinates)
            .setHTML(feature.properties.description)
            .addTo(map);
        return; // don't display any more pop ups
    }

    var polygonFeatures = map.queryRenderedFeatures(e.point, { layers: ['parking-layer', 'buildings-layer'] });

    if (!polygonFeatures.length) {
        return;
    }

    var feature = polygonFeatures [0];

    // Populate the popup and set its coordinates
    var popup = new mapboxgl.Popup()
        .setLngLat(map.unproject(e.point))
        .setHTML(feature.properties.description)
        .addTo(map);
});
11/08/2016 को 17:09
का स्रोत उपयोगकर्ता

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