artefacto extraño dibujo utilizando dibujable personalizado con MapView
-
26-09-2019 - |
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:
Editar - esto es lo que sucede si se dibuja un círculo:
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?
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