如何使用leaflet.draw和CRS.Simple

时间:2017-06-07 04:52:45

标签: javascript leaflet leaflet.draw

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

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

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

1 个答案:

答案 0 :(得分:4)

问题在于使用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);
}

这样就可以了。

以下链接详细解释了该问题: https://github.com/Leaflet/Leaflet.draw/issues/611

希望这有帮助!!!