1

デフォルトで Leaflet が提供するものとは異なる方法で GeoJSON をレンダリングしたいと考えています。残念ながら、style()作成中のベクター グラフィックスをより詳細に制御する必要があるため、関数を変更するだけでは不十分です。

これを行う慣用的な方法は何ですか?にあるデフォルトの SVG レンダラーの多くの部分を再利用できると思いますsrc/layers/vector/SVG.js。ただし、1 つの GeoJSON レイヤー / 1 つの 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)
  }
}

リーフレットの初期化中にレンダラーとして設定しますが、これは a で失敗しますTypeError: max2 is undefined(これは、私が を使用したことに起因する未処理のプロミス拒否ですreact-leaflet)。

私が見逃しているのは何ですか?

4

1 に答える 1