首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Turf.js方法给出了错误的结果

Turf.js方法给出了错误的结果
EN

Stack Overflow用户
提问于 2022-03-21 10:55:00
回答 1查看 203关注 0票数 1

我尝试使用truf并绘制路线,我得到的是与路线一起的水平线。我不知道还能做什么,因为它对其他类型的路线有效。

代码语言:javascript
运行
复制
for (let i = 0; i < lineDistance; i += steps) {
    const segment = turf.along(route.features[0], i);
    arc.push(segment.geometry.coordinates);
}

上面的代码是我如何计算弧在地图上绘制的。

路由坐标有两个检查点/路由点,如图所示。LA(美国)和东京(日本)。

代码语言:javascript
运行
复制
const route = {
                'type': 'FeatureCollection',
                'features': [
                    {
                        'type': 'Feature',
                        'geometry': {
                            'type': 'LineString',
                            'coordinates': routePoints
                        }
                    }
                ]
            };

参考文献:https://maplibre.org/maplibre-gl-js-docs/example/animate-point-along-route/

https://codepen.io/hasanac/pen/JjLmZqd (似乎是东城市的问题,西的城市问题)

EN

回答 1

Stack Overflow用户

发布于 2022-06-03 19:59:20

将"i“改为"1”,而不是"0“,则弧将正确计算。

代码语言:javascript
运行
复制
for (let i = 1; i < lineDistance; i += steps) {
    const segment = turf.along(route.features[0], i);
    arc.push(segment.geometry.coordinates);
}

解释..。在计算横跨太平洋的弧线时,路线上的第一点是“错误的”,因此它绕地球绕到第二点( bug?)。

通过将每个段打印到console.log(),发现了这一点,并注意到第一个点(i=0)与其他点非常不同。

代码语言:javascript
运行
复制
for (let i = 0; i < lineDistance; i += steps) {
    const segment = turf.along(route.features[0], i);
    console.log(segment.geometry.coordinates);
    arc.push(segment.geometry.coordinates);
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71556411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档