1

我想以不同于默认情况下 Leaflet 提供的方式呈现 GeoJSON。不幸的是,更改style()函数是不够的,因为我需要更好地控制正在创建的矢量图形。

这样做的惯用方式是什么?我认为我可以重用在src/layers/vector/SVG.js. 但是,我只想将它替换为一个 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)。

我错过了什么?

4

1 回答 1

0

我再次阅读了文档,我似乎错过了有关 GeoJSON 选项的这一点

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

function (geoJsonFeature) {
  return {}
}

另一方面,路径选项采用渲染器,我可以使用它来覆盖这个特定 GeoJSON 层的渲染。希望这对其他人有帮助!

于 2017-11-13T19:51:24.230 回答