2017-11-13 9 views
1

デフォルトでは、リーフレットが提供するものとは異なる方法でGeoJSONをレンダリングします。残念ながら、style()関数を変更するだけでは、作成するベクトルグラフィックスをより詳細に制御する必要はありません。GeoJSON用のカスタムリーフレットレンダラー

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

して、リーフレットを初期化中にレンダラとして設定し、これはTypeError: max2 is undefined(それが由来未処理の約束を拒否されて失敗私はreact-leafletを使用しています)。

これはなんですか?

+0

「ベクターグラフィックスに対するより優れた制御」とはどのようなものが必要ですか? – IvanSanchez

答えて

0

私は再びドキュメントを読んで、私はthis bit about the GeoJSON optionsを逃しているように見える:

style:データが追加されたときに内部的に呼び出されるスタイリングにGeoJSONラインとポリゴンのPath optionsを定義する機能を、。デフォルト値は、任意のデフォルト値を上書きしないことです。一方、

function (geoJsonFeature) { 
    return {} 
} 

パスオプションは、私は、この特定の層にGeoJSONのレンダリングをオーバーライドするために使用できるレンダラを取ります。これが他の人に役立つことを願っています!