¿Cómo superponer GLSurfaceView sobre un MapView en Android?

Quiero crear una simple aplicación basada en el mapa en android, donde puedo mostrar mi posición actual. En lugar de superponer una imagen simple en el MapView para representar la posición, quiero superpuesto el GLSurfaceView en el MapView. Pero no sé cómo lograrlo. ¿Hay alguna forma de hacer eso?. Por favor, nadie sabe la solución que me ayude.

Yo estaba atascado en un problema similar hasta que miré la documentación y me di cuenta de que MapView extiende ViewGroup , por lo que superponer un GlSurfaceView realmente termina siendo bastante trivial.

MapView.addView(...) y MapView.LayoutParams permiten algunas cosas bastante útiles como colocar una View en un GeoPoint específico en el mapa.

Más documentación: https://developers.google.com/maps/documentation/android/reference/com/google/android/maps/MapView.LayoutParams.html

Esto es lo que hice:

 @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 ) ); } 

Además, hacer lo que la solución anterior estados. Me sub-clasificados GlSurfaceView, por lo que la mina se ve un poco diferente:

 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); } 

Es necesario crear el GLSurfaceView y configurar su EGLConfigChooser de la siguiente manera:

glSurfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);

a continuación, defina el formato del soporte como translúcido

glSurfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);

y agregue el GLSurfaceView y el MapView al diseño

setContentView(glSurfaceView);

addContentView(mapView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));

finalmente en su procesador usted necesitará fijar el color claro así que es transparente

gl.glClearColor(0, 0, 0, 0);

  • Cambio de OpenGL ES 1.0 a 2.0
  • Cómo detectar el clic en un objeto en OpenGL ES en la aplicación de Android?
  • Reduzca el uso de memoria para texturas en OpenGL ES 1.1
  • Programación de juegos Android 2D: ¿usando OpenGL o no?
  • Introducción a OpenGL ... en Android
  • ¿Cómo puedo determinar lo que se toca en el espacio 3D de la pantalla?
  • ¿Puedo usar glu con Android NDK
  • Error de Android OpenGL (no utilizar OpenGL en mi aplicación)
  • OpenGL ES 1.1: ¿Cómo cambiar el color de la textura sin perder luminancia?
  • Cómo detener el procesador GL abierto
  • Dispositivos Android GL_MAX_TEXTURE_SIZE limitación, tamaño de textura seguro
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.