我想在 android 中创建一个简单的基于地图的应用程序,在其中我可以显示我当前的位置。我想在 MapView 上覆盖 GLSurfaceView,而不是在 MapView 上覆盖简单的图像来表示位置。但我不知道如何实现这一目标。有什么办法可以做到这一点吗?请任何知道解决方案的人帮助我。
我陷入了类似的问题,直到我查看文档并意识到MapViewextends ViewGroup,所以覆盖 aGlSurfaceView实际上最终变得非常微不足道。
MapView.addView(...)并MapView.LayoutParams允许您执行一些非常有用的操作,例如将 a 放置在地图上的View特定位置。GeoPoint
这就是我所做的:
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.mapview);
MapView map_view = (MapView) findViewById(R.id.map_view);
CustomGlView gl_view = new CustomGlView(this);
// This is where the action happens.
map_view.addView(gl_view, new MapView.LayoutParams(
MapView.LayoutParams.FILL_PARENT,
MapView.LayoutParams.FILL_PARENT,
0,0,
MapView.LayoutParams.TOP_LEFT
)
);
}
Run Code Online (Sandbox Code Playgroud)
另外还要执行上述解决方案所述的操作。我对 GlSurfaceView 进行了子类化,所以我的看起来略有不同:
public CustomGlView(Context context) {
super(context);
YourCustomGlRenderer renderer = new YourCustomGlRenderer();
setEGLConfigChooser(8, 8, 8, 8, 16, 0);
setRenderer(renderer);
getHolder().setFormat(PixelFormat.TRANSLUCENT);
// Have to do this or else
// GlSurfaceView wont be transparent.
setZOrderOnTop(true);
}
Run Code Online (Sandbox Code Playgroud)