こちらのLeafletのドキュメント:http://leafletjs.com/reference-1.2.0.html#circlemarkerは、CircleMakerがCircleを拡張し、半径がメートルではなくピクセルで指定されていることを除いて、同じことであると述べています。 、マップをズームしても円が一定のサイズのままになるようにします。
ただし、地図上に半径100mの円を描画しようとしているので、円は必要です。これを行うには、次のコードを使用します。
var geojsonLayer = new L.GeoJSON(null,{
pointToLayer: function (latlng){
return new L.CircleMarker(latlng, {
radius: 5,
fillColor: "#ff7800",
color: "#000",
weight: 1,
opacity: 1,
fillOpacity: 0.8,
});
}});
map.addLayer(osm);
map.addLayer(geojsonLayer);
geojsonLayer.addGeoJSON(jsonExample);
これは完全に機能しますが、CircleMakerの代わりに「Circle」を使用するようにコードを変更すると、マップ全体の読み込みに失敗し、javascriptエラーが発生します。
Error: Error: Invalid LatLng object: (56.229917, NaN)
geojsonを事前にフィルタリングして、緯度と経度の両方が不足しているポイントを削除することでこれを修正できますが、混乱しています。CircleとCircleMakerはどちらも、中心点の仕様としてLatLngオブジェクトを使用するように指定しています。特定のLatLngオブジェクトがCircleMarkerの中心点として有効であるが、Circleの中心点として使用されている場合は無効である方法を取得できません。
私は明らかな何かを見落としていますか、それともこれは私が回避しなければならないリーフレットの弱点やバグですか?