2017-06-07 3 views
2

Marker Mein aktueller Code lediglich bindet dieser JSON-Datei entsprechend den Daten unter Verwendung hinzufügenWie Markierungen auf verschiedenen Ebenen in Faltblatt onEachFeature und GeoJSON

{"type": "FeatureCollection", 
    "features": [{ 
"geometry": {"type": "Point", "coordinates": [53.8460456,-38.9135742]}, 
"type": "Feature", 
"properties":{"name": "red"}]} 

und mein Code sieht ungefähr so ​​aus:

 var blueLayer = new L.LayerGroup(); 
     var redLayer = new L.LayerGroup(); 

    var map = L.map('mapid', { 
     center: [53.8460456,-38.9135742], 
     zoom: 12, 
     layers: [blueLayer, redLayer] 
    }); 
    L.tileLayer('https://api.mapbox.com/styles/v1/n-alathba/cj2fzxjgl00bl2rqno6mtb9wg/tiles/256/{z}/{x}/{y}?access_token=pk.eyJ1Ijoibi1hbGF0aGJhIiwiYSI6ImNqMmZ6bTQ2cDAwNDIyeW8wY2hidjFxdjUifQ.TyQ2WNEMtCO3Q84PYXlAEA', { 
     attribution: 'Tiles by <a href="http://mapc.org">MAPC</a>, Data by <a href="http://mass.gov/mgis">MassGIS</a>', 
     maxZoom: 18, 
     minZoom: 1, 
    }).addTo(map); 

function onEachFeature(feature, layer) { 
    return; 
    } 

var link = './data/events2.json' //file above 
$.getJSON(link, function(events) { 
    L.geoJSON(events, {  
     style: function(feature) { 
      return feature.properties && feature.properties.style;      
     },  
    onEachFeature: onEachFeature,  
    pointToLayer: function(feature, latlng) {  
    return L.marker(latlng); } 
    }).addTo(map); 

Allerdings würde ich mag Marker zu verschiedenen Schichten hinzufügen, anstatt sie alle direkt auf die Karte Bindung, damit ich etwas tun kann:

function onEachFeature(feature,layer){ 
     if(feature.properties.name == "red"){ //do something that binds associated marker to red layer) 
     else{//do something that binds associated marker to bluelayer}} 

Antwort

1

Ich glaube, Sie sind fast da. In Ihrer onEachFeature-Funktion können Sie Ebenen einfach zu Ihren verschiedenen Ebenengruppen hinzufügen. Dann können Sie die Ebenengruppen der Karte hinzufügen, wann immer Sie möchten. Probieren Sie dies aus:

function onEachFeature(feature,layer) { 
    if(feature.properties.name == "red") { 
     // add only 'red' markers to Layer Group 
     redLayer.addLayer(layer); 
    } else { 
     // add only 'blue' markers to Layer Group (assuming just red/blue markers) 
     blueLayer.addLayer(layer); 
    } 
} 

Jetzt woanders in Ihrem Code Sie diese Schichten zu einer Karte hinzufügen:

redLayer.addTo(mapid); 
blueLayer.addTo(mapid); 

So stellen Sie sicher, dass die .addTo() Methode nach dem L.geoJSON() zu entfernen, wenn Sie die Markierungen alle wollen auf der Karte zunächst. Hoffe das hilft!

+0

es half, danke :) – heba

Verwandte Themen