1

我正在尝试使用 SupportMapFragment 使用适用于 Android 的 Google Maps API V2,当我在使用 opengl 和相机的表面视图顶部添加地图时遇到问题。

问题是我将片段动态地添加到表面视图的顶部,我得到的只是缩放控件,而是一个透明的地图。

是否与已经在使用 opengl 的应用程序不兼容?

我应该在加载地图之前销毁 opengl 上下文吗?

会不会是其他问题,例如错误的 API 密钥、权限等?

我能做些什么让它与其他opengl表面一起工作吗?

更新:我设法在独立活动(ProgramaticDemoActivity.java)上显示地图,所以这不是 API KEY 问题(尽管我必须创建一个新的 API 控制台项目)。

然后我再次尝试查看我的表面视图,我可以看到地图,但并非总是如此。调用 mMapFragment.getMap() 时,我通常会得到 null。即使在我将片段添加到布局(以编程方式)之后,也可能调用 onCreateView 的速度不够快。任何想法?

4

3 回答 3

1

从 Map API V2 开始,它使用 GL 表面。较旧的 API 可能会遵循一些 z 顺序,因为它使用简单的 2D 画布来绘制地图。

截至目前,android 无法按特定顺序处理重叠的 EGL 表面。作为一种特殊的视图,它在某种意义上穿透其余部分以直接访问该矩形内存框架,这些不会尊重您布局中提到的 z 顺序。

即使在同一设备上进行不同的运行,也或多或少是抛硬币决定哪一个在上面。

请参阅 Dianne 的回复: https ://groups.google.com/forum/?fromgroups=#!topic/android-developers/COffLpanlz0

但是请为您的 GL Surface探索setZOrderMediaOverlay()和 setZOrderOnTop()。你可能有一些运气。

解决方法:

  • 可以尝试 Map API V1,它可能会在您的应用程序出名时看到它的插件
  • 可以改为将 Web API 用于具有严格免费配额的静态地图位图(支付更多费用)

或者随意给问题加注星标(例如#6613)并等待。

于 2013-01-03T07:46:15.453 回答
0

添加 MapFragment 后,您无法直接 getMap() ...您必须等到它准备好。建议您创建一个 MyCustomisedMapFragment 并让它在其 onResume 方法中执行某些操作,以告诉您的其他代码已为您准备好 getMap()。

于 2012-12-22T02:55:46.027 回答
0

“透明地图”是什么意思?您看到地图图块“透明”还是什么也看不到(只有缩放控件而没有图块)?

您是否尝试过在没有 OpenGL 层的情况下使用 SupportMapFragment?只是为了丢弃 API 密钥问题。

我在使用 Google Maps 活动时遇到了同样的问题,我再次测试和测试解决了它,但我认为问题与 Maps API 密钥有关。

于 2012-12-20T10:34:54.287 回答