0
複数のgeoJSONレイヤーのマーカークラスタリングを実装したい。いくつかの調査の末、Leaflet.FeatureGroup.SubGroupプラグインを使用して、私が必要とするソリューションのように見えます。リーフレット複数のgeoJSONレイヤークラスタリングとレイヤーコントロール
geoJSONを反復して、レイヤーグループをマップから動的に追加/削除するにはどうすればよいですか?
addGeoJsonLayers: =>
L.mapbox.accessToken = MAP_BOX_ACCESS_TOKEN
streetsLayer = L.mapbox.tileLayer('mapbox.streets')
streetsLayer.on 'ready', => streetsLayer.addTo(@map)
baseLayers =
'Road': streetsLayer
'Terrain': L.mapbox.tileLayer('mapbox.outdoors')
'Satellite': L.mapbox.tileLayer('mapbox.satellite')
geojsonLayers = {}
@shares.forEach (share, index) =>
titleLabel = CommunityMap.labelForDataId(share.schema.elements, share.schema.record_title_key)
geojsonOptions = {
onEachFeature: (feature, layer) =>
record = new CommunityGeoJSONRecord(properties: feature.properties, titleLabel: titleLabel)
@records[record.id] = { record: record, layer: layer }
layer.bindPopup record.contentForPopUp()
pointToLayer: (feature, latLng) ->
if share.status_enabled
color = feature.properties['marker-color'] || INVALID_STATUS_MARKER_COLOR
else
color = MARKER_COLORS[index]
L.marker([latLng.lat, latLng.lng], {
icon: L.mapbox.marker.icon({
'marker-size': 'small'
'marker-color': color
})
})
}
share.geojsonLayer = L.geoJson(null, geojsonOptions).addTo(@map)
geojsonLayers[share.name] = share.geojsonLayer
$.getJSON "#{share.url}?human_friendly=1", (data) =>
@loadData(data, share.geojsonLayer, titleLabel)
L.control.zoom(position: 'topright').addTo(@map)
L.control.layers(baseLayers, geojsonLayers, position: 'topright').addTo(@map)