如何用 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
希望对您有所帮助!!!
我正在使用 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
希望对您有所帮助!!!