MapBox जीएल परतों के साथ परेशानी हो रही है

वोट
0

तो, मैं MapBox जीएल में भरी हुई stylemap से एक शैली परत पाने के लिए कोशिश कर रहा हूँ, लेकिन यह अपरिभाषित तत्वों लौटने रखता है। मैं अपने दिमागी के अंत में कर रहा हूँ।

मैं परतों चर में संग्रहीत करने के लिए तो मैं उसके गुण बदल सकते हैं अंतर्निहित पानी परत पाने के लिए कोशिश कर रहा हूँ। उदाहरण के लिए, उसकी दृश्यता।

कोड यह रहा:

var layers=map.getLayer('water');
changeinnerHTML(featuresWindow, JSON.stringify(layers, null, 1));

पुनश्च - मैं कोडिंग की ओर लौटने कर रहा हूँ साल बाद। मैं तो बस फिर से अपने js पर धकेल दिया।

पी पी एस: यहाँ पूरे कोड अगर आप परवाह है:

<script>
      //Mapbox Access Token
      mapboxgl.accessToken = 'pk.eyJ1IjoiYWtzaGF5a2h1cmFuYSIsImEiOiJjaWY3dXdkN3MxMzZ3czZsempwbWc0MnRoIn0.y7jHQWK5lONsJ_6u3EJSTg';
      // Select html objects that constantly change into javascript variables. Henceforth known as elementVar
      var featuresWindow = document.getElementById('features');
      // GLOBAL FUNCTIONS : Functions that are used repeatedly
      // Function to change inner HTML of div, span etc elements
      function changeinnerHTML(elementVar, newvalue) {
            elementVar.innerHTML = newvalue;
            return null;
         }
         // Function to change colours.
      function switchColor(myColor, layer) {
            map.setPaintProperty(layer, 'fill-color', myColor);
         }
         // Intialise map
      if (!mapboxgl.supported()) {
         alert('Your browser does not support Mapbox GL!');
      } else {
         var map = new mapboxgl.Map({
            container: 'map', // container id
            style: 'mapbox://styles/akshaykhurana/cihlwytjz001kb4kqu0b62xq7', //stylesheet location
            minZoom: 9, //minimum zoom value
            maxZoom: 16, //maximum zoom value
            interactive: true
         });
      }
      // Get some layers man.
      var layers=map.getLayer();
      changeinnerHTML(featuresWindow, JSON.stringify(layers, null, 1));
      // Push information to sidebar on mouse hover
      map.on('click', function(e) {
         map.featuresAt(e.point, {
            radius: 5
         }, function(err, features) {
            if (err) throw err;
            changeinnerHTML(featuresWindow1, JSON.stringify(features, null, 2));
         });
      });

   </script>
03/12/2015 को 10:14
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
1

सुनिश्चित नहीं हैं कि यह अभी तक पता लगा है, लेकिन मूल रूप से आप बस "map.getLayer ( 'पानी')" अनुभाग से छुटकारा पाने की जरूरत है।

var layers = 'water';
map.setLayoutProperty(layers, 'visibility', 'none');

मुझे यकीन है कि क्या आप के लिए यह प्रयोग कर रहे हैं, जैसा कि आप शैली सेट कर सकते हैं MapBox स्टूडियो संपादक में अदृश्य सही होने के लिए नहीं कर रहा हूँ, लेकिन जब मैं एक लेआउट संपत्ति बदलने के लिए, मैं इसे एक .click (समारोह) इसलिए की तरह साथ कार्य करें:

$('.className').click(function(e) {
    e.preventDefault(); 
    var layers = 'water';
    map.setLayoutProperty(layers, 'visibility', 'none');
});

तो फिर तुम सब करने की है वर्ग "className" और जब भी यह क्लिक किया जाता है, पानी परत अदृश्य हो जाएगा के साथ अपने HTML के लिए एक बटन या कोई अन्य आइटम जोड़ने है।

21/01/2016 को 12:55
का स्रोत उपयोगकर्ता

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