javascript - 传单圆半径并不重要

标签 javascript dictionary leaflet

我正在开发游戏 map 的扩展,它显示来自服务器的事件 map 。 map 可以使用,但不是我提供的。重要的是,他们使用简单的 CRS 来处理游戏坐标。

现在我想创建一个带有半径的圆。半径应该绑定(bind)到 map 单位(latlng)而不是像素,因此如果放大圆圈在屏幕上应该有更大的半径,但相对于世界地图具有相同的半径。

所以我有这个代码作为 map 的扩展:

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

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

如果我将半径设置为其他大小,则没有效果:

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

即使是 1000000000000000 的半径对于半径计算也没有影响。 负半径也不起作用。

你有什么想法吗?

最佳答案

当您使用 0.7 传单和 L.CRS.Simple 投影时,会发生这种情况。

他们在 1.0 测试版中修复了这个问题,但添加了一堆新错误(例如 - 许多 leaflet.draw 插件功能拒绝与新版本一起使用)

我设法找到了两种解决方法:

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

选项 2:由于他们已将地球投影硬编码到 L.Circle 中,因此我们还可以像这样破解 leaflet-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;
},

希望这对某人有帮助

关于javascript - 传单圆半径并不重要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31586577/

相关文章:

javascript - 使用公共(public)类属性时未定义

javascript - 返回内部 if else 并使用粗箭头

java - 用于实现嵌套 map 之类的数据结构?

python - 如果我的日期在字符串中,我如何在 Python 中对这个列表进行排序?

C++ map迭代器跳转元素

javascript - 使用@media only 屏幕实现移动 View 以隐藏 div 的概率

javascript - 创建时设置功能 ID

javascript - javascript : cipher broken 中的凯撒密码

javascript - 传单 map 并不总是加载居中的相同 WMS 平铺层

javascript - 将 z-index 设置为传单中的图层控件