你可以用这个Answer来画弧线。
寻找圆弧的中心。
您可以使用 Google Geometry 库查找 2 个标记之间的弦长、其方位角和圆弧中心的位置。
来自文档
computeDistanceBetween(from:LatLng, to:LatLng, radius?:number) 返回
两个 LatLng 之间的距离,以米为单位。半径
默认为以米为单位的地球半径 (6378137)。
computeHeading(from:LatLng, to:LatLng) 从一开始返回航向
LatLng 到另一个 LatLng。标题以顺时针度数表示
从北在 [-180,180) 范围内作为数字。
computeOffset(from:LatLng, distance:number, heading:number,
radius?:number) 返回移动距离产生的 LatLng
从指定航向的原点(以度数表示
从北顺时针)作为LatLng。
首先找到两个标记之间的距离
var spherical = google.maps.geometry.spherical;
var point1 = markers[0].getPosition();
var point2 = markers[1].getPosition();
var length = google.maps.geometry.spherical.computeDistanceBetween(point1,point2);
然后找方位
var heading = google.maps.geometry.spherical.computeHeading(point1,point2);
正如您现在知道三角形的 3 条边(弦长、半径(其他 2 条边)),您可以使用 law of cosines 计算圆心的方位角。(注意在 cmets 中讨论了 2 种解决方案)
function solveAngle(a, b, c) { // Returns angle C using law of cosines
var temp = (b * b + c * c - a * a) / (2 * b * c);
if (temp >= -1 && temp <= 1)
return Math.acos(temp);
else
throw "No solution";
}
var baseAngle = solveAngle(radius, radius, c);
var vertexAngle = solveAngle(c,radius,radius);
baseAngle用于查找中心点的方位。
vertexAngle是绘制圆弧时使用的点数。
知道方位和半径就可以找到圆心。
var centerPoint = spherical.computeOffset(point1,radius,heading+baseAngle);
注意以米为单位的距离。将方法中的半径更改为 3,959 英里。
如果半径改变中心改变。黄点是蓝点半径的2倍