¿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.
- OpenGL y diseños
- Ejemplo 2D con OpenGL
- Android OpenGL ES GL10 o GL11
- "SDK-buildable" Navegadores Web de código abierto para Android
- Tratar de dibujar triángulos con textura en el dispositivo falla, pero el emulador funciona. ¿Por qué?
- ¿Cómo deshacerse de los bordes dentados en Android OpenGL ES?
- Ejecutar Android OpenGL en el fondo como recurso de renderizado para la aplicación?
- Cómo depurar shaders en Android
- Cómo mover un cuadrado OpenGL con el dedo?
- cómo manejar el botón de nuevo cuando llamamos a facebook o twitter de la clase Fragment?
- Cómo hacer multisampling en Android OpenGL ES?
- Android OpenGL ES - Todas las extensiones compatibles?
- OpenGL ES - textura mapa todas las caras de un cubo de 8 vértices?
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);
- no se puede encontrar la clase de símbolo AutocompletePrediction
- MPAndroidChart ¿hay una manera de establecer diferentes colores para diferentes bares?