在下图中,您可以看到从一个点(黑色圆圈)到其3个相关点()绘制了3条直线。
图像
问题
如何用两点间距离的百分比来计算每条直线上两点间的经纬度?
例如,如果我想得到一个位置,以便能够沿着每一条线绘制额外的圆,相差20%?
我现在有什么代码
var data = [
{ "coords" : [ 53.409045, -2.985406 ]},
{ "coords" : [ 53.408747, -2.982862 ]},
{ "coords" : [ 53.407630, -2.984136 ]},
{ "coords" : [ 53.407142, -2.986931 ]}
];
var pointA = new L.LatLng(53.409045, -2.985406);
var pointB;
data.forEach(function(d) {
pointB = new L.LatLng(d.coords[0], d.coords[1]);
L.polyline([pointA, pointB]).addTo(map);
L.circle([d.coords[0], d.coords[1]], 10).addTo(map);
});
上面代码所做的唯一事情是为每个点绘制一个圆,并从主圆(点a)到其他圆(点B)绘制一条线
我几乎需要知道如何计算点A及其相关点之间的多个坐标,按距离的百分比计算。
我需要确保所有绿色圆圈与中心圆圈的距离相同
要测试的编解码器
代码笔链接
使用下面的正确答案编辑-到目前为止我所拥有的图片
警告:这适用于线性坐标。正如奥利·琼斯所提到的,虽然这对于短距离(或某些情况下,取决于您的投影)是一个合理的近似值,但对于长距离或如果您想要一个非常精确的百分比点,这将不起作用
您要查找的函数是point AtPercent。红色是起点(您的中心圆),绿色是终端(您的端圆)
var ctx = document.getElementById("myChart").getContext("2d");
function drawPoint(color, point) {
ctx.fillStyle = color;
ctx.beginPath();
ctx.arc(point.x, point.y, 5, 0, 2 * Math.PI, false);
ctx.fill();
}
function drawLine(point1, point2) {
ctx.strokeStyle = 'gray';
ctx.setLineDash([5, 5]);
ctx.beginPath();
ctx.moveTo(point1.x, point1.y);
ctx.lineTo(point2.x, point2.y);
ctx.stroke();
}
function pointAtPercent(p0, p1, percent) {
drawPoint('red', p0);
drawPoint('green', p1);
drawLine(p0, p1);
var x;
if (p0.x !== p1.x)
x = p0.x + percent * (p1.x - p0.x);
else
x = p0.x;
var y;
if (p0.y !== p1.y)
y = p0.y + percent * (p1.y - p0.y);
else
y = p0.y;
var p = {
x: x,
y: y
};
drawPoint('blue', p);
return p;
}
pointAtPercent({ x: 50, y: 25 }, { x: 200, y: 300 }, 0.2)
pointAtPercent({ x: 150, y: 25 }, { x: 300, y: 100 }, 0.6)
pointAtPercent({ x: 650, y: 300 }, { x: 100, y: 400 }, 0.4)
小提琴 - https://jsfiddle.net/goev47aL/
有关不同的方程式,请参见本页。http://www.movable-type.co.uk/scripts/latlong.html
> < li >获取从起点到终点的距离和方位。 < li >将百分比转换为适用单位中的距离。 < li>
使用从#1开始的方位角、从#2开始的距离和原点来获得结果位置
function destination(lat, lon, bearing, distance) {
var R = 6378.1, lat, lon, latDest, lonDest;
// convert to radians
lat = lat * (Math.PI / 180);
lon = lon * (Math.PI / 180);
bearing = bearing * (Math.PI / 180);
latDest = Math.asin(Math.sin(lat) * Math.cos(distance / R) +
Math.cos(lat) * Math.sin(distance / R) * Math.cos(bearing));
lonDest = lon + Math.atan2(Math.sin(bearing) * Math.sin(distance / R) * Math.cos(lat),
Math.cos(distance / R) - Math.sin(lat) * Math.sin(latDest));
return [latDest * (180 / Math.PI), lonDest * (180 / Math.PI)];
}
我有一对纬度 然而,我需要一个更灵活的解决方案,例如,我希望能够指定1/3, 1/4, 8/9等对点之间。 注:lat1,long1
提前感谢!
我试图从这个结果页面的“Show Map”按钮中刮出纬度和经度数据:https://www.psychologytoday.com/us/therapists/60148/374863?sid=5d01e84909804&ref=2&tr=resultsName:https://www.psychologytoday.com/us/therapists/60148/374863?sid=5d01e
我有一个onCreate的活动,它计算您的位置和附近的事件之间的距离,我使用lastNotnloceto获取当前设备位置并在谷歌地图上标记它,但我需要它来写经度和纬度它的方法之外用于计算距离。 我已经使用LocationManager来获取粗略的坐标,但这些坐标不够准确,对于距离不到半英里的东西来说,距离为50英里。我目前拥有它,因此将覆盖从LocationManager获得的经度和纬度,但它没有
本文向大家介绍百度地图API之百度地图退拽标记点获取经纬度的实现代码,包括了百度地图API之百度地图退拽标记点获取经纬度的实现代码的使用技巧和注意事项,需要的朋友参考一下 本文给大家分享百度地图api之百度地图退拽标记点获取经纬度的实现方法,具体代码如下所示: 如果大家觉得以上介绍的不够详细,大家可以参考下文 百度地图经纬度转换到腾讯地图/Google 对应的经纬度 基于JavaScript实现高
我有点被这个问题卡住了,我试图通过移动第二个点并保持它的斜率来改变画的线的长度。 注意:所有这些都是在wpf的画布上绘制的。 我计算了坡度: 通过使用弧tan函数,我能够计算我的斜角。 现在我正在使用和来获取我的新点的cooridinates。 这在四个案例中有两个是好的。但在另外两种情况下,这些观点似乎“放在了错误的一边”。 我不是数学家,经过几次尝试后都找不到合适的答案。 我感谢任何帮助!