Leaflet Draw не принимает свойства при преобразовании FeatureGroup в GeoJson

Я не могу преобразовать свойства Layer в свойства объекта GEOJson с помощью Leaflet (0.7.7)/Leaflet.Draw(последний). Мой рабочий процесс:

1 Создать карту: var map = L.map('#map', options);

2 Создайте FeatureGroup: features= new L.FeatureGroup();

3 Добавить на карту листов: map.addLayer(features);

4 В событии draw:created я захватываю e.layer и добавляю кучу свойств:

var layer = e.layer;

layer.properties = { Title: 'Hello' };

features.addLayer(layer);

geo_features = features.toGeoJSON();

Однако у меня geo_features всегда есть атрибуты свойств в каждой из функций, и я не могу понять это!

2 ответа

iH8 начальный ответ был почти правильным.

Чтобы указать свойства, которые будут отображаться в экспорте GeoJSON векторного слоя (т.е. через его метод .toGeoJSON()), вы должны заполнить его члены feature.type и feature.properties:

var myVectorLayer = L.rectangle(...) // whatever
var feature = myVectorLayer.feature = myVectorLayer.feature || {};
feature.type = "Feature";
feature.properties = feature.properties || {};
feature.properties["Foo"] = "Bar";

Теперь myVectorLayer.toGeoJSON() возвращает действительный объект объекта GeoJSON, представленный:

{
 "type": "Feature",
 "properties": {
 "Foo": "Bar"
 // More properties that may be pre-filled.
 },
 "geometry": // The vector geometry
}


A (вид уродливого обходного пути) использует слой L.GeoJSON и добавляет нарисованный слой GeoJSON к нему с помощью метода addData. Затем возьмите последний слой в слое L.GeoJSON _layers. В этот момент слой имеет действующее свойство GeoJSON feature, которое вы можете редактировать:

var geojson = new L.GeoJSON().addTo(map);
var drawControl = new L.Control.Draw({
 edit: {
 featureGroup: geojson
 }
}).addTo(map);
map.on('draw:created', function (e) {
 geojson.addData(e.layer.toGeoJSON());
 var layers = geojson._layers,
 keys = Object.keys(layers),
 key = keys[keys.length - 1],
 layer = layers[key];
 layer.feature.properties = {
 'Foo': 'Bar'
 };
});

licensed under cc by-sa 3.0 with attribution.