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

Pav*_*n K 5 gps android google-maps

在此输入图像描述

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

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

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

Kyo*_* Yi 1

(我测试它使用地图版本1,而不是地图 api V2。)

\n\n

在执行以下步骤之前,您应该在查找坐标之前知道距离和角度。

\n\n

脚步:

\n\n
    \n
  1. 将地理点更改为像素(x,y)。(使用投影

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

  4. \n
  5. 然后你得到一个点 (d, 0)

  6. \n
  7. 旋转 (d,0) ==> 你会得到一个新点,与 (0, 0) 相距 d ==> (a, b)

  8. \n
  9. (x+a, b+y) 是您想要的点。

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

  12. \n
\n\n

旋转公式为

\n\n
(x\'*cos(\xce\xb8) - y\'*sin(\xce\xb8), x\'*sin(\xce\xb8) + y\'*cos(\xce\xb8))\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以,你可以改变这个简单的。

\n\n
(d*cos(\xce\xb8), d*sin(\xce\xb8)) // This is a point of step 4. (a,b)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的代码是。

\n\n
// you should know distance and angle\n\nPoint px = new Point();\nPoint px2 = new Point();\n\nmapView.getProjection().toPixels(mGeoPt, px);\nfloat pixedDis = mapView.getProjection().metersToEquatorPixels(distance);\n\npx2.x = (int)(pixedDis*Math.cos(angle)) + px.x;\npx2.y = (int)(pixedDis*Math.sin(angle)) + px.y;\n\nGeoPoint gp3 = mapView.getProjection().fromPixels(px2.x, px2.y);\n
Run Code Online (Sandbox Code Playgroud)\n