Add #toGeoJSON to various layer types (#712) #1462
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Two shortcomings of this approach:
L.GeoJSON.geometryToLayerdiscards feature properties and I'm not seeing a clear way to keep those around for
reserialization.
L.GeoJSON.geometryToLayercreates a FeatureGroupof Markers when it encounters a MultiPoint, but my implementation of
FeatureGroup#toGeoJSONalways creates a GeometryCollection.@jfgirard's implementation in #712 contains a heuristic: if converting each layer
in a FeatureGroup to GeoJSON produces only Points, it returns a MultiPoint, otherwise
it returns a GeometryCollection. I don't like this solution, because it results in
the opposite problem: a GeometryCollection containing only Points can't be round tripped.
Instead I think Leaflet should have a dedicated MultiMarker class in the style of
MultiPolyline and MultiPolygon. But implementing that is tricky, because it needs to
support L.GeoJSON's
pointToLayeroption.