2012-02-20 17 views
7

Estoy usando osmdroid en mi nuevo proyecto de Android (ya que quiero poder usar mapas sin conexión) pero encuentro muchas dificultades para personalizar la apariencia de la información burbuja asignada a un elemento de superposición.Burbuja de información personalizada de barrido para elementos superpuestos usando osmdroid

En este momento, estoy usando una superposición ItemizedOverlayWithFocus para mostrar mis artículos; mirando its code, noté que todo se dibujó en el método onDrawFinished, así que traté de crear mi propia superposición personalizada para anular este método, pero es bastante difícil obtener un resultado. Lo que me gustaría conseguir es algo como esto:

The result

¿Cómo chicos arreglamos para conseguir una burbuja de información personalizada en sus proyectos?

Encontré algunas clases para implementar tal cosa para MapView de Google (como Jeff Gilfelt's MapView Balloons) pero nada para osmdroid.

+0

android-mapviewballoons deben estar usando casi la misma API. ¿No intentó portarlo a osmdroid? – Macarse

+0

Lo estoy intentando ahora, pero estoy depurando (no tengo ningún evento táctil activado, por ejemplo). Pero dado que vi bastantes proyectos con agradables burbujas de información, creo que me falta algo más sencillo que portabilizar mapviewballoons. – Vivi

Respuesta

8

EDIT:

  • Esta respuesta fue mejor para más viejos mapas API de Google. En Google Map V2 esta cosa ya está dada.

Puede obtener el código de https://github.com/galex/android-mapviewballoons

puede ser seleccionado balón del método de "BalloonItemizedOverlay.java" como seguimiento

private void hideOtherBalloons(List<Overlay> overlays) { 
     for(int i=0; i<overlays.size();i++){ 
      if (overlays.get(i) instanceof BalloonItemizedOverlay<?> && overlays.get(i) != this) { 
       ((BalloonItemizedOverlay<?>) overlays.get(i)).hideBalloon(); 
      }else{ 
       BalloonOverlayView.SELECTED_BALLOON = i; 
       Log.i(i+" : Baloon Open", BalloonOverlayView.SELECTED_BALLOON+""); 
      } 
     } 
} 

Para establecer los datos que puede utilizar setBalloonData método del archivo BalloonOverlayView.java como sigue:

protected void setBalloonData(Item item, ViewGroup parent) { 
     if (item.getTitle() != null) { 
      title.setVisibility(VISIBLE); 
      title.setText(item.getTitle()); 
     } else { 
      title.setText(""); 
      title.setVisibility(GONE); 
     } 
     if (item.getSnippet() != null) { 
      snippet.setVisibility(VISIBLE); 
      snippet.setText(item.getSnippet()); 
     } else { 
      snippet.setText(""); 
      snippet.setVisibility(GONE); 
     } 
} 
+0

El enlace ahora es 404 ... – krzysztofkarolczak

+0

¿podría proporcionar el enlace al código fuente? – TharakaNirmana

Cuestiones relacionadas