Android上的OpenGL表面视图上不需要的透明SupportMapFragment

时间:2012-12-20 08:34:11

标签: android google-maps opengl-es

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

问题是我在surfaceview顶部添加了dinamically片段,我得到的只是缩放控件,但是透明的地图。

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

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

可能是错误的API密钥,权限等其他问题吗?

我有什么办法可以让它与其他opengl表面一起使用吗?

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

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

3 个答案:

答案 0 :(得分: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进行具有严格免费配额(支付更多费用)的静态地图位图

或者随意加注明星issues (eg. #6613)并等待。

答案 1 :(得分:0)

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

您是否尝试过不使用OpenGL图层的SupportMapFragment?只是为了抛弃API密钥问题。

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

答案 2 :(得分:0)

添加MapFragment后你不能直接getMap()...你必须等到它准备好了。建议你创建一个MyCustomisedMapFragment并让它在onResume方法中做一些事情来告诉你的其他代码你准备好getMap()。