在地图上计算街道边缘的GPS坐标

5

enter image description here

我在地图上有用户的GPS坐标(图片中用红点表示)

我想要计算地图上蓝点的GPS坐标。

这些点距离红点相等,位于街道两侧。如果我能获取街道相对于磁北极的方向,我就可以计算这些点,或者是否有其他简单的方法?


1
一个有效的问题,可以像下面展示的那样解决,我非常确定没有任何“暂停投票者”能够解决这个任务。 - AlexWien
@AlexWien 谢谢。这正是我的想法。无论如何,我已经找到了另一种方法,并在有时间时会进行更新。 - Pavan K
我为我的工作解决了这个任务,它是学校几何和考虑到纬度和经度不是笛卡尔坐标的组合(你需要先转换为笛卡尔坐标系)。 - AlexWien
你是如何解决它的? - Muhammad Umer
1个回答

1

(我使用的是 地图版本1,而非地图API V2进行测试。)

在按照下面的步骤操作之前,您需要知道在寻找坐标之前需要测量距离和角度。

步骤:

  1. 将地理坐标点转换为像素坐标(x, y)。(使用 projection

  2. 获取距离(d)的像素大小。(使用 metersToEquatorPixels

  3. 然后您会得到一个点(d, 0)

  4. 旋转(d, 0) ==> 您将得到一个新点,它与(0, 0)相距d ==> (a, b)

  5. (x+a, b+y) 是您想要的点。

  6. 使用 this 获取(x+a, y+b)的地理坐标。

旋转公式为

(x'*cos(θ) - y'*sin(θ), x'*sin(θ) + y'*cos(θ))

所以,你可以简单地更改这个。
(d*cos(θ), d*sin(θ)) // This is a point of step 4. (a,b)

我的代码是。
// you should know distance and angle

Point px = new Point();
Point px2 = new Point();

mapView.getProjection().toPixels(mGeoPt, px);
float pixedDis = mapView.getProjection().metersToEquatorPixels(distance);

px2.x = (int)(pixedDis*Math.cos(angle)) + px.x;
px2.y = (int)(pixedDis*Math.sin(angle)) + px.y;

GeoPoint gp3 = mapView.getProjection().fromPixels(px2.x, px2.y);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接