GeoJSON的自定义Leaflet Renderer

时间:2017-11-13 17:14:59

标签: javascript reactjs leaflet react-leaflet

默认情况下,我想以不同于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)。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

我再次阅读文档,似乎错过了this bit about the GeoJSON options

  

style:定义Path options的函数,用于样式化GeoJSON线和多边形,在添加数据时在内部调用。默认值是不覆盖任何默认值:

function (geoJsonFeature) {
  return {}
}

另一方面,路径选项采用渲染器,我可以使用渲染器覆盖此特定GeoJSON图层的渲染。希望这有助于其他任何人!