Více

Jak mohu pomocí Mapboxu (LeafletJS) upravit importované tvary z GeoJSON?

Jak mohu pomocí Mapboxu (LeafletJS) upravit importované tvary z GeoJSON?


Přehled: Aktuálně pracuji na projektu, kde pomocí Mapboxu importuji GeoJSON do mapy. Chci však mít možnost tyto tvary po importu do mapy upravit. Nechal jsem úspěšně importovat GeoJSON. Vidím své tvary jako vrstvy ve své FeatureGroup. Vidím své tvary na mapě, jak by měly být vykresleny.

Problém: Problém, který mám, je úprava vrstev poté, co jsem je importoval. Když kliknu na tlačítko „upravit“ pomocí Letáku Draw, zobrazí se chybová hláška „Uncaught TypeError: Nelze přečíst vlastnost 'enable' z undefined.

Můj kód: Zde je kód, který jsem použil k načtení svého GeoJSON do mapy:

var featureGroup = L.featureGroup (). addTo (mapa); if (oldData) {var featureLayer = L.mapbox.featureLayer (oldData, {pointToLayer: function (feature, latlon) {if (feature.properties.type === 'circle') {return L.circle (latlon, feature. properties.radius);} else if (feature.properties.type === 'marker') {return L.marker (latlon);}}, setStyle: function (feature) {return {color: feature.properties.color} ;}, onEachFeature: funkce (funkce, vrstva) {vrstva.bindPopup (feature.properties.description); vrstva.openPopup ();}}}). addTo (featureGroup); } var featureLayer = L.mapbox.featureLayer (). addTo (mapa); var drawControl = new L.Control.Draw ({edit: {featureGroup: featureGroup}, draw: {polygon: true, polyline: true, squarele: true, circle: true, marker: true}}). addTo (mapa);

Také může být užitečné vědět, že používám Leaflet.draw verze 0.2.3 a Leaflet 0.7.2, které jsou součástí Mapboxu 2.2.1.

Jakékoli tipy pomohou.


Vlastně jsem nikdy nebyl schopen použítL.mapbox.featureLayerpro tohle. Nakonec jsem musel použít letákL.geoJson, přidánífeatureLayermapovat místofeatureGroupa přidáním vrstvy do souborufeatureGroupvonEachFeature. Takto vypadal můj konečný kód:

var featureGroup = L.featureGroup (). addTo (mapa); if (oldData) {var featureLayer = L.geoJson (oldData, {pointToLayer: function (feature, latlon) {if (feature.properties.type === 'circle') {return L.circle (latlon, feature.properties. radius);} else if (feature.properties.type === 'marker') {return L.marker (latlon);}}, style: function (feature) {return {color: feature.properties.color};} , onEachFeature: funkce (funkce, vrstva) {featureGroup.addLayer (vrstva); vrstva.bindPopup (feature.properties.description); vrstva.openPopup ();}}). addTo (mapa); } var featureLayer = L.mapbox.featureLayer (). addTo (mapa); var drawControl = new L.Control.Draw ({edit: {featureGroup: featureGroup}, draw: {polygon: true, polyline: true, squarele: true, circle: true, marker: true}}). addTo (mapa);

Zde je rozdíl Mergely, který ukazuje rozdíl: http://www.mergely.com/fVq3TQvT/