如何用 leaflet.draw 和 CRS.Simple 画圆

How to draw circle with leaflet.draw and CRS.Simple

我正在使用 leaflet.draw 插件,使用 L.CRS.Simple 处理简单的图像。 除了画圆之外,绘图工具栏工作正常。

http://playground-leaflet.rhcloud.com/kapi/edit?html,output

如何在使用 L.CRS.Simple 时使用 Leaflet.draw 插件在 Leaflet 地图上绘制圆圈?

问题在于使用 L.CRS.simple 并尝试画圆。 绘制圆时 (L.Draw.circle_drawShape()) 半径是根据 L.LatLng.distanceTo 的结果设置的,这个距离实际上是根据 L.CRS.Earth

计算的

当使用L.CRS.Smple时,半径变得非常大,超出范围。 在绘制其他形状时,这不会成为问题,因为它们不使用 L.LatLng.distanceTo 方法。

作为解决方法,您可以执行以下操作:

L.LatLng.prototype.distanceTo = function (currentPostion) {
    var dx = currentPostion.lng - this.lng;
    var dy = currentPostion.lat - this.lat;
    return Math.sqrt(dx*dx + dy*dy);
}

这样就可以了。

问题的详细解释如下link: https://github.com/Leaflet/Leaflet.draw/issues/611

希望对您有所帮助!!!