我在地图上有用户的GPS坐标(图片中用红点表示)
我想要计算地图上蓝点的GPS坐标。
这些点距离红点相等,位于街道两侧。如果我能获取街道相对于磁北极的方向,我就可以计算这些点,或者是否有其他简单的方法?
我在地图上有用户的GPS坐标(图片中用红点表示)
我想要计算地图上蓝点的GPS坐标。
这些点距离红点相等,位于街道两侧。如果我能获取街道相对于磁北极的方向,我就可以计算这些点,或者是否有其他简单的方法?
(我使用的是 地图版本1,而非地图API V2进行测试。)
在按照下面的步骤操作之前,您需要知道在寻找坐标之前需要测量距离和角度。
步骤:
将地理坐标点转换为像素坐标(x, y)。(使用 projection)
获取距离(d)的像素大小。(使用 metersToEquatorPixels)
然后您会得到一个点(d, 0)
旋转(d, 0) ==> 您将得到一个新点,它与(0, 0)相距d ==> (a, b)
(x+a, b+y) 是您想要的点。
使用 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);