小叶圆半径无关紧要

时间:2015-07-23 11:52:43

标签: javascript dictionary leaflet

我正在开发游戏地图的扩展程序,该地图显示来自服务器的活动地图。地图正在运行,而不是来自我。重要的是要说他们使用简单的CRS来解决游戏坐标问题。

现在我要创建一个半径为圆的圆。半径应该绑定到地图单位(latlng)而不是像素,所以如果放大圆圈,屏幕上的半径应该更大,但相对于世界地图的半径相同。

所以我把这段代码作为地图的扩展名:

var bla = L.circle([0,0], 1000, {'color': '#ffffff'}).addTo(map);

如您所见,这只是一个测试。现在应该有一个半径为1000的圆(我认为它在地图“单位”中,因为文档中的值被命名为“米”)。但我能看到的只是一个圆圈,但它不过是一个圆点。

如果我将半径设置为其他尺寸,则无效:

var bla = L.circle([0,0], 100000, {'color': '#ffffff'}).addTo(map);

即使半径为1000000000000000对于半径计算也无关紧要。 负半径也不起作用。

你有什么想法吗?

1 个答案:

答案 0 :(得分:4)

当您使用带有L.CRS.Simple投影的0.7小册子时会发生这种情况。

他们已经修复了这个1.0测试版,但增加了一堆新bug(例如 - 很多leaflet.draw插件功能拒绝使用新版本)

我设法找到了2个解决方法:

选项1:升级到1.0 beta或更高版本

选项2:由于他们将地球投影硬编码到L.Circle中,我们也可以像这样破解传单-src.js:

更改

_getLatRadius: function () {
    return (this._mRadius / 40075017) * 360;
},

_getLngRadius: function () {
    return this._getLatRadius() / Math.cos(L.LatLng.DEG_TO_RAD * this._latlng.lat);
},

_getLatRadius: function () {
    return this._mRadius;
},

_getLngRadius: function () {
    return this._mRadius;
},

希望这有助于某人