如何将MapView的范围映射到开放视图范围

如何将MapView的范围映射到开放视图范围

问题描述:

我已经使用mapfragment显示了地图,并且绘制了一个opengles行。为了增加这两个视图,我希望我在opengles上绘制的道路线(使用latlngs和转换为opengles范围值)与地图上的道路完全匹配。我该如何做到这一点?如何将MapView的范围映射到开放视图范围

感谢

  • 创建绘制地图,箱子一个子视图到地图视图可以是透明的,你可以看到在后台地图的视图。

  • 创建一个描述你想用openGL绘制的路径的系统。例如,一条线将由两个包含纬度和经度的2D点组成。

  • 使系统绘制这些坐标作为openGL的路径。

  • 创建一个“刷新”方法,它将重绘openGL内容(路径)。你需要做的是给openGL视图当前可见的坐标系统作为经纬度的左上角和右下角。使用这两点来定义glOrtho,left = top_left.latitude,right = bottom_right.latitude ...这将定义您的坐标系与地图坐标相同。所以使用这个不需要转换来查看坐标。现在只需使用新数据(坐标系和路径)重新绘制openGL视图。

  • 调用刷新方法,只要地图上发生了变化,滚动,路径改变...

+0

我已经绘制了通过使用像这样的公式将latlng值转换成笛卡尔坐标的直线操作:y = R * cos(lat)* sin(lon) z = R * sin(lat) – user2940383 2014-10-10 11:57:57

+0

非常感谢您的回复。我还想要一些澄清。我通过使用像这样的公式将latlng值转换成笛卡尔坐标来绘制直线开口:y = R * cos(lat)* sin(lon) z = R * sin(lat)。这给出了相对于球体的点,所以这些值将是1000的倍数。我已经通过获取当前位置笛卡尔值对其进行了变换,并且绘制了坐标现在将在(1,1)( - 1,-1)..这是转换它的方式吗? – user2940383 2014-10-10 12:09:37

+0

不,你不需要那个。除非你缩小到这样的距离,否则实际上你可以看到地图“弯曲”,你根本不需要转换成笛卡尔坐标系。您可以简单地将经纬度视为笛卡儿。您只需将GL坐标系设置为与您的地图相同即可。正如我所说,使用正交矩阵并插入地图边界坐标。 – 2014-10-10 12:21:04

是执行的步骤above.But行提到的opengles不绘制与latlngs表面我已经作为顶点传递给顶点缓冲区。