使用 carto.js 和传单库将圆添加到地图

Add circle to map with carto.js and leaflet libraries

我必须在我的图层上单击要素时显示一个圆圈。 当我尝试创建圆圈时出现此错误:Error: Invalid LatLng object: (41.961124103390674, NaN).

如果我在此错误之前打印对象,我可以读取:Array [ 41.84664960937685, 12.008056640625 ]。 我试着写分开的值,但它不起作用。

怎么可能? 有人可以帮助我吗?谢谢,对不起我的英语

编辑

我试过这个解决方案:

layer.getSubLayer(1).on('featureClick', function (event, latlon, pos, data, index) {
var coord = {lat:data.lat, lng:data.lon};
console.log(coord)
L.circle(coord, {radius: data.distance}).addTo(map);

错误和日志是一样的...

编辑 2

使用此代码

var coord = L.latLng(42,21);
var cerchio = L.circle(coord,{radius: data.distance});
     console.log(cerchio);
     cerchio.addTo(map);

我注意到 circle 对象创建正确,所以问题出在 addTo(map) 方法上。

根据 Carto Docs,您的 featureClick 回调中的 latlon 参数包含:

Array with the LatLng ([lat,lng]) where the layer was clicked.

那是你要放置圆圈的地方吗?如果是这样,请使用此行:

L.circle(latlon, {radius: data.distance}).addTo(map);

添加1609*3

var coord = L.latLng(42,21,1609*3);

已解决

正确的做法是

L.circle([data.lat, data.lon], data.distance, {}).addTo(map);

其中 data.distance 是圆的半径。官方文档的例子L.circle([50.5, 30.5], {radius: 200}).addTo(map);好像是错误的