在地图上计算街道两侧的gps坐标

时间:2013-12-03 22:57:59

标签: android google-maps gps

enter image description here

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

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

点与两侧的红点等距。如果我可以得到街道的标题与磁北相比我可以计算点数还是有其他简单的方法吗?

1 个答案:

答案 0 :(得分:1)

(我测试它使用map version 1,而不是映射api V2。)

在按照步骤操作之前,您应该在找到坐标之前知道距离和角度。

步骤:

  1. 将地理位置更改为像素(x,y)。 (使用projection

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

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

  4. 旋转(d,0)==>您将获得一个新点,该点在d处与(0,0)==>间隔开。 (a,b)

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

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

  7. 旋转公式是

    (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);