स्वरूप जटिल नेस्टेड वस्तुओं

वोट
0

मैं जीआईएस मंच (नीचे ऑल्ट) हालांकि थोड़ा गतिविधि इसलिए मैं अपने भाग्य यहाँ कोशिश कर रहा हूँ है में पहले से तैनात किया है। यह भी है, मुझे लगता है कि मूल रूप से, एक js वस्तु सरणी सवाल। ऐसे कई इसी तरह के सवाल कर रहे हैं, लेकिन मैं सिर्फ एक समाधान है कि वस्तु संरचना मैं से निपटने के लिए के लिए काम करता नहीं मिल सकता है।

एक तरफ चेतावनियां;

मुद्दा: जानकारी एक वस्तु सरणी पार्स ताकि वे, निकाला जा सकता है प्रारूपित और एक मानव पठनीय रास्ते में दिखाया गया है भीतर नेस्ट वस्तुओं की एक (अज्ञात) संख्या से लौटे प्राप्त करें। उदाहरण के लिए,

Layer id  <--- currently returned as val.layer.id (see snippet)
key1 : value1 <
key2 : value2 <-- returns in console.log as Object at val.properties
key3 : value3 <

Layer id
key1 : value1
key2 : value2

Layer id...

मैं तो बस, कुंजी और मूल्यों जिनमें से अनजान हैं और (features.properties पर स्थित एक वस्तु) परतों के बीच अलग प्रत्येक 'features.layer.id' के साथ यह features.properties 'संबद्ध है की जरूरत है। ये सुविधा पदों MapBox में संगत कर रहे हैं और इसलिए एक समाधान यहाँ भविष्य उपयोगकर्ताओं के लिए लागू किया जाना चाहिए।

वर्तमान कोड ; बाहर टिप्पणी की पहुँच सकते हैं और आवश्यक मान प्रदर्शित करने के लिए मेरे प्रयास की एक बिखरने हैं। 'सुविधाओं' elementID जानकारी पैनल है। सुविधाओं अन्यथा दिया जाता है नेस्टेड वस्तु (नमूना देखें)।

concattedjson वर्तमान में पहली परत शीर्षक के पहले अक्षर पर एक त्रुटि ( अप्रत्याशित टोकन एन) का उत्पादन किया।

map.on('click', function (e) {
    map.featuresAt(e.point, {radius: 5, layer: lyrlist}, function (err, features) {
        if (err) throw err;

        var keys = Object.keys(features);
        var val = ;

        for (var i = 0; i < keys.length; i++) {
            val = features[keys[i]];
            //document.getElementById('features').innerHTML = '<b>'+val.layer.id+'</b>';
            //console.log(val.layer.id,val.properties);
            //console.log(val.properties); shows each layer properties on click
            //console.log(val.layer.id); shows each layer title on click
            //console.log(val);
            var lyrid = val.layer.id;
            var prop = val.properties;
            concattedjson = JSON.stringify(JSON.parse(lyrid).concat(JSON.parse(prop)));
        }   
    document.getElementById('features').innerHTML = concattedjson   
    //document.getElementById('features').innerHTML = JSON.stringify(val.layer, ['id'], 2);     
    //document.getElementById('features').innerHTML = JSON.stringify(val.properties, null, 2);          
    });
});

दो 'परतों' वाले JSON का नमूना

    [
  {
    layer: {
      id: Nature Improvement Area,
      minzoom: 7,
      interactive: true,
      paint: {
        fill-opacity: 0.3,
        fill-color: hsl(0, 24%, 24%)
      },
      type: fill,
      source: mapbox://mbbdev.8uf2j3ka,
      source-layer: lcr_nia_v1_region,
      layout: {
        visibility: visible
      }
    },
    type: Feature,
    geometry: null,
    properties: {
      NIA_Focu00: Netherley Brook and Ditton Brook Corridor,
      NIA_Focu01: INSERT IGNORE  LINK TO PROFILE DOC,
      NIA_Focus_: 07
    },
    id: 16
  },
  {
    layer: {
      id: Liverpool City Region,
      minzoom: 6,
      interactive: true,
      paint: {
        fill-opacity: 0.2,
        fill-antialias: true,
        fill-color: hsl(0, 4%, 40%)
      },
      type: fill,
      source: mapbox://mbbdev.67id5f6x,
      source-layer: lcr_district_boundary_region,
      filter: [
        ==,
        $type,
        Polygon
      ]
    },
    type: Feature,
    geometry: null,
    properties: {
      AREA_HA: 8618.7,
      NAME: Knowsley
    },
    id: 1
  }
]
17/02/2016 को 12:47
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
0

आप निम्न तरीके से पुनरावृति है featuresवस्तु, और कुछ मानव इससे बाहर पठनीय बना सकते हैं। टिप्पणी में स्पष्टीकरण:

map.on('click', function (e) {
    map.featuresAt(e.point, {
        radius: 5,
    }, function (err, features) {
        if (err) throw err;

        // Grab the 'ul' element with ID 'features' from the DOM            
        var featureList = document.getElementById('features');

        // Empty the list on every click
        featureList.innerHTML = '';

        // Iterate the features array
        for (var i = 0; i < features.length; i++) {

            // Create a listitem for each feature
            var featureItem = document.createElement('li');

            // Set the feature's listitem's content to the layer's ID
            featureItem.textContent = features[i].layer.id;

            // Append the featureitem to the featurelist
            featureList.appendChild(featureItem);

            // Create a new list for the item's properties
            var propertyList = document.createElement('ul');

            // Append the list to the feature's listitem
            featureItem.appendChild(propertyList);

            // Create convenience var for the properties object
            var properties = features[i].properties;

            // Iterate the properties object
            for (var property in properties) {

                // Create new listitem for every property
                var propertyItem = document.createElement('li');

                // Set property's listitem's textcontent to key/value
                propertyItem.textContent = property + ': ' + properties[property];

                // Append property's listitem to the feature's propertylist.
                propertyList.appendChild(propertyItem);

            }

        }

    });
});

यहाँ Plunker पर एक काम उदाहरण है: http://plnkr.co/edit/iqntvRFTcWK1hgpzPBvX?p=preview

आप इस पढ़ने के लिए यदि आप वस्तु गुण की अवधारणा और उन्हें कैसे उपयोग करने के लिए समझ करना चाहते हैं चाहते हो सकता है:

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Property_accessors

18/02/2016 को 01:29
का स्रोत उपयोगकर्ता

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