Pregunta

Estoy tratando de añadir mi propia estirable y utilizarlo en una serie de superposiciones de un MapView. El estirable es básicamente una caja redondeada con un contorno negro y un número en el medio.

He conseguido esto utilizando el código de abajo, sin embargo no es lo que parece ser una bandera a la izquierda de mi caja, que desde luego no creo que he dibujado - Así que me pregunto lo que puede ser.

Este es un ejemplo de la imagen: text alt


Editar - esto es lo que sucede si se dibuja un círculo: text alt


Mi código es el siguiente:

Custom Disponibles:

public class BikeDrawable extends Drawable {
  int colour;
  String bikes;

public BikeDrawable (int bikes){
    this.bikes = Integer.toString(bikes);
    if (bikes < 4) {
        colour = Color.RED;
    }
    else if (bikes > 3 && bikes < 9){
        colour = Color.argb(244, 255, 127, 42);
    }
    else {
        colour = Color.GREEN;
    }
}
@Override
public void draw(Canvas canvas) {
      Paint rectanglePaint = new Paint();
      rectanglePaint.setColor(colour);
      rectanglePaint.setStyle(Style.FILL);
      RectF rectangle = new RectF(0.0f, 0.0f, 20.0f, 20.0f);
      Paint strokepaint = new Paint();
      strokepaint.setStyle(Paint.Style.STROKE);
      strokepaint.setStrokeWidth(2);
      strokepaint.setARGB(255, 0, 0, 0);

      canvas.drawRoundRect(rectangle, 4.0f, 4.0f, rectanglePaint);
      canvas.drawRoundRect(rectangle, 4.0f, 4.0f, strokepaint);

      Paint textpaint = new Paint();
      textpaint.setARGB(255, 0, 0, 0);
      textpaint.setTextAlign(Paint.Align.CENTER);
      canvas.drawText(bikes, 10, 14, textpaint);
}

@Override
public int getOpacity() {
    return 0;
}

@Override
public void setAlpha(int alpha) {
}

@Override
public void setColorFilter(ColorFilter cf) {
}

}

El uso de MapView:

bikeOverlay = new PointsOverlay(start_icon);
BikeDrawable start_1_drawable = new BikeDrawable (start_1.capacity);
OverlayItem start_1_overlayitem = new OverlayItem(new GeoPoint(start_1.lat,start_1.lon), null, null);
start_1_overlayitem.setMarker(start_1_drawable);
mapOverlays.add(bikeOverlay);
bikeOverlay.addOverlay(start_1_overlayitem);

¿Alguien tiene alguna idea de lo que está pasando aquí? Es un artefacto de OverlayItem?

¿Fue útil?

Solución

Esto se consiguió reemplazando el método draw () de la PointsOverlay como sigue:

@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow)
{
    if(!shadow)
    {
        super.draw(canvas, mapView, false);
    }
}

Gracias a etteyafed -. Te hubiera acreditado con los puntos si hubiera respondido, pero quería cerrar esta fuera

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top