Frage

Ich versuche, meine eigene ziehbar und verwenden Sie es in einer Reihe von Overlays auf einem MapView hinzuzufügen. Die ziehbar ist im Grunde eine abgerundete Kasten mit einer schwarzen Kontur und eine Zahl in der Mitte.

Ich habe es geschafft, dies mit dem Code unten zu erreichen, aber es ist das, was wie eine Fahne sieht auf der linken Seite meiner Box, die ich denke, sicherlich nicht ich gezeichnet haben - so frage ich mich, was es sein kann.

Dies ist ein Beispiel für das Bild: alt text


Bearbeiten - das ist, was passiert, wenn ein Kreis gezogen wird: alt text


Mein Code ist unten:

Benutzerdefinierte Drawable:

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) {
}

}

Verwenden Sie in 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);

hat jemand eine Ahnung, was hier vor sich geht? Ist es ein Artefakt aus OverlayItem?

War es hilfreich?

Lösung

Dies wird durch das Überschreiben der draw () Methode des PointsOverlay wurde wie folgt erreicht:

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

Dank etteyafed -. Ich möchte Sie mit den Punkten haben gutgeschrieben, wenn Sie geantwortet hatte, aber ich wollte diese weg schließen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top