【问题标题】:How to map the extent of MapView on to opengles view extent如何将 MapView 的范围映射到 opengles 视图范围
【发布时间】:2014-10-09 11:05:06
【问题描述】:

我使用 mapfragment 显示了一张地图,并绘制了一条 opengles 线。增强这两个视图,我希望我在 opengles 上绘制的道路线(使用 latlngs 并转换为 opengles 范围值)与地图上的道路完全匹配。我该怎么做?

谢谢

【问题讨论】:

    标签: android ios opengl-es augmented-reality


    【解决方案1】:
    • 创建一个绘制地图的视图,为该地图视图创建一个透明的子视图,您可以在背景中看到地图。

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

    • 使用 openGL 制作一个系统以将这些坐标绘制为路径。

    • 创建一个“刷新”方法,该方法将重绘 openGL 内容(路径)。您需要做的是为openGL视图提供当前可见坐标系作为纬度和经度的左上角和右下角。使用这两个点来定义glOrtholeft = top_left.latituderight = bottom_right.latitude... 这将定义您的坐标系与地图坐标相同。因此,根本不需要使用这个转换到视图坐标。现在只需用新数据(坐标系和路径)重绘 openGL 视图。

    • 每当地图发生变化、滚动、路径发生变化时调用刷新方法...

    【讨论】:

    • 我通过使用如下公式将 latlng 值转换为笛卡尔坐标来绘制直线 opengles:x = R * cos(lat) * cos(lon) y = R * cos(lat) * sin(lon) z = R *sin(lat)
    • 非常感谢您的回复。我仍然想要一些澄清。我通过使用如下公式将 latlng 值转换为笛卡尔坐标来绘制直线 opengles:x = R * cos(lat) * cos(lon) y = R * cos(lat) * sin(lon) z = R *罪(纬度)。这给出了相对于球体的点,因此值将是 1000 的倍数。我已经通过采用当前位置笛卡尔值对其进行了转换,并绘制了坐标现在将在 (1,1) 范围内的线(- 1,-1)..这是改造它的方法吗?
    • 不,你不需要那个。除非您缩小到这样的距离,否则您实际上可以看到地图“弯曲”,您根本不需要转换为笛卡尔坐标。您可以简单地将纬度和经度视为笛卡尔。您只需将 GL 坐标系设置为与地图相同。正如我所说,使用正交矩阵并插入地图边界坐标。
    • 你能给我一些参考链接吗?
    • 使用顶点 (x,y,z) 绘制 opengles 并使用 color 传递到顶点缓冲区。我怎样才能直接将 latlng 传递给这个顶点缓冲区?
    【解决方案2】:

    是的,执行了上述步骤。但是这条线没有在 opengles 表面上绘制,而我作为顶点传递给顶点缓冲区的 latlngs。

    【讨论】:

      猜你喜欢
      • 2020-03-03
      • 1970-01-01
      • 2020-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多