默认情况下,我想以不同于Leaflet提供的方式呈现GeoJSON。不幸的是,更改style()
函数是不够的,因为我需要更好地控制正在创建的矢量图形。
这样做的惯用方法是什么?我估计我可以重用src/layers/vector/SVG.js
中找到的默认SVG渲染器的许多部分。但是我想只为一个GeoJSON图层/一个FeatureGroup替换它。由于这些都不是从Path
继承的,所以这似乎不可能。
我尝试以一种非常基本的方式扩展SVG类:
import {SVG} from 'leaflet/src/layer/vector/SVG'
export default class CustomSVG extends SVG {
_updatePoly (layer, closed) {
console.log('Custom renderer in action')
super._updatePoly(layer, closed)
}
}
然后在初始化Leaflet时将其设置为渲染器,但是失败并显示TypeError: max2 is undefined
(这是一个未处理的承诺拒绝,源于我使用react-leaflet
)。
我错过了什么?
答案 0 :(得分:0)
我再次阅读文档,似乎错过了this bit about the GeoJSON options:
style
:定义Path options的函数,用于样式化GeoJSON线和多边形,在添加数据时在内部调用。默认值是不覆盖任何默认值:function (geoJsonFeature) { return {} }
另一方面,路径选项采用渲染器,我可以使用渲染器覆盖此特定GeoJSON图层的渲染。希望这有助于其他任何人!