在此处的 Leaflet 文档中:http ://leafletjs.com/reference-1.2.0.html#circlemarker 它说 CircleMaker 扩展了 Circle,并且它是同一件事,除了半径以像素而不是米为单位指定,这样即使您缩放地图,圆圈的大小也会保持不变。
但是我确实需要 Circles,因为我正在尝试在地图上绘制 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);
但是,如果我将代码更改为使用“Circle”而不是 CircleMaker,这将完美地工作,整个地图将无法加载,并且我收到一个 javascript 错误:
Error: Error: Invalid LatLng object: (56.229917, NaN)
我可以通过预先过滤geojson来删除那些既缺乏纬度又缺乏经度的点来解决这个问题,但我很困惑:Circle和CircleMaker都指定它们将LatLng对象作为中心点的规范,我不'不知道某个 LatLng 对象如何作为 CircleMarker 的中心点有效,但如果用作 Circle 的中心点则无效。
我是否忽略了一些明显的东西,或者这只是传单中的一个弱点和/或错误,我只需要解决?