Custom OverlayItem sin dibujar

Creé una clase personalizada de OverlayItem de modo que pudiera esencialmente tener un tipo de OverlayItem cuyo marcador Drawable se fijaría dependiendo del estado de algunos datos que paso en él.

He intentado lograr esto por, en mi primer intento, utilizando el método setMarker dentro de la clase OverlayItem. Una vez que no funcionó, intento anular el método getMarker y hacer que devuelva el marcador apropiado para representar los datos.

Ambos intentos terminaron con nada dibujado en el mapa … sin embargo, si se comentan los marcadores dibujar muy bien (excepto por supuesto que utilizan el marcador por defecto, que no es lo que quiero).

Aquí está mi código para mi clase personalizada OverlayItem (los métodos comentados que he probado y no han funcionado):

 private class MyOverlayItem extends OverlayItem { private Context mContext; private MyData mData; public MyOverlayItem(GeoPoint point, MyData data, Context context) { super(point, data.getWhat(), data.getWhere()); this.mContext = context; this.mData = data; /*if(data.getTemp() > 200) this.setMarker(res.getDrawable(R.drawable.icon_data_hot_l)); else if(data.getTemp() > 100) this.setMarker(res.getDrawable(R.drawable.icon_data_neutral_l)); else this.setMarker(res.getDrawable(R.drawable.icon_data_frozen_l));*/ } /*@Override public Drawable getMarker(int stateBitset) { Resources res = this.mContext.getResources(); if(this.mData.getTemp() > 200) return res.getDrawable(R.drawable.icon_data_hot_l); else if(this.mData.getTemp() > 100) return res.getDrawable(R.drawable.icon_data_neutral_l); return res.getDrawable(R.drawable.icon_data_frozen_l); }*/ } 

¿Hay una manera de hacer lo que estoy intentando hacer … o necesito hacer una clase única de OverlayItem correspondiente a cada estado de mis datos? (Ew.)

4 Solutions collect form web for “Custom OverlayItem sin dibujar”

He podido hacer que los marcadores aparezcan, sin embargo están apareciendo al revés (al menos, creo que lo son, puede ser que su sombra esté en la parte superior izquierda en lugar de la parte inferior derecha).

Todo lo que necesitaba hacer era añadir esta línea:

 this.mMarker.setBounds(0, 0, this.mMarker.getIntrinsicWidth(), this.mMarker.getIntrinsicHeight()); 

… así como esta línea para orientar correctamente los marcadores (He añadido esto cuando mi ItemizedOverlay agrega elemento de superposición de bronceado:

 overlay.setMarker(boundCenterBottom(overlay.getMarker(0))); 

La API indica que el Marcador necesita límites para mostrarse …

@celestialorb Cualquiera de tus fragmentos hace el trabajo solo (o el mío trabajó con cualquiera de todos modos) cuando usas setBounds () solo, obtienes lo que le dices que haga … el cuadro delimitador para tu marcador está establecido. La orientación hacia el punto de OverlayItem y el estado de sombra del marcador, etc se establecen en el valor predeterminado (no mirar a los de arriba, pero no hacen lo que quiero …) 🙂

MOverlay.setMarker (boundCenterBottom (mOverlay.getMarker (0))); Hace el trabajo completo para usted, fijando los límites y centrando la parte inferior del marcador en el punto (de ahí el nombre con estilo del método).

Ahora, en cuanto a las mejores prácticas, bombillas más brillantes que yo tendré que sonar …

Intente reemplazar el método onDraw() de su clase overlay.

Aquí hay otro enfoque:

GoogleMaps: personalizado ItemizedOverlay y OverlayItem, la forma correcta de mostrar diferentes marcador

Creo que prefiero esta respuesta aunque … gracias!

  • ¿Hay algún límite para dibujar la ruta usando Geocoder (Android)?
  • Mi superposición no aparece hasta que se pulse mapView en android
  • RelativaLayout TextView superposición
  • ¿Cómo expandir el marcador de superposición en Google Maps?
  • Widget flotante / superposición en el lanzador de Android
  • Superponer una actividad en otra actividad O superponer una vista sobre otra
  • Aplicación de Android: mostrar elementos de superposición en AsyncTask
  • Agregar Overlay a un MapView en osmdroid
  • ICS teclado de vuelta, los botones de inicio no tomar contacto cuando se abre en la superposición
  • Entender boundCenterBottom ()
  • Android cómo dibujar la pintura en mano libre en MapView con superposición?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.