我正在尝试使用arc.js绘制测地线。当点的经度差小于180时,它工作正常。否则,例如,经度为179和-179,OpenLayers绘制距离最远的线。
所以我找到了直线的解决方案:
答案 0 :(得分:2)
经过数小时的调查,我找到了解决方案。这看起来像一个技巧,但它工作正常。
首先,这是来自arc.js documentation的原始代码:
group_concat
主要问题是arc.js无法计算与International Date Line相交的线的坐标。所以我决定在计算Great Circle之前将点移动到一个图块中。
我必须找到经度偏移:
SELECT
report.`Name`,
GROUP_CONCAT(
CONCAT(
"[",
DATE(report.Date) --(not working) order by DATE(report.Date) ,
',',
report.ProductPrice --(not working) order by DATE(report.ProductPrice) ,
"]"
)
) AS ProductPrice
FROM report
GROUP BY report.Name ;
也可能是var start = { x: currentPoint.longitude, y: currentPoint.latitude },
end = { x: nextPoint.longitude, y: nextPoint.latitude },
generator = new arc.GreatCircle(start, end),
arcLine = generator.Arc(1000 ,{offset:10});
。取决于放置什么点。
之后,您可以使用arc.js生成坐标:
var dateLineOffset = 180 - currentPoint.longitude;
然后你需要迭代生成的坐标并修复偏移量。就我而言,我使用了地图。
nextPoint.longitude
那就是它。 var start = { x: -180, y: currentPoint.latitude },
end = { x: nextPoint.longitude + dateLineOffset, y: nextPoint.latitude },
generator = new arc.GreatCircle(start, end),
arcLine = generator.Arc(1000 ,{offset:10});
将包含正确的坐标。