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!

  • No lleve el botón al primer plano al hacer clic
  • Color de relieve de superposición de círculo no dibujado siempre en Google Maps v2
  • ¿Se puede ampliar el tamaño de la superposición con el mapa de google en android?
  • Disposición de Android: coloca una vista entre dos vistas
  • Lista de clics dentro de OverlayItem (MapView para Android)
  • ¿Cómo mostrar una ruta entre dos geocoords en google maps?
  • ¿Cómo expandir el marcador de superposición en Google Maps?
  • ¿Por qué mi sistema se superpone capturando todos los toques (no es posible interacción con la vista subyacente)
  • Superponer una actividad en otra actividad O superponer una vista sobre otra
  • Uso de ItemizedOverlay y OverlayItem en Android Beta 0.9
  • Android: ItemizedOverlay onTouchEvent y onTap se superponen
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.