الرسم الغريب ittefact باستخدام مخصص قابل للرسوم مع MAPVIEW

StackOverflow https://stackoverflow.com/questions/3825358

سؤال

أحاول إضافة سبيك الخاص واستخدامه في سلسلة من التراكبات على MapView. القابل للتسمية هو في الأساس صندوق مستدير مع مخطط أسود ورقم في الوسط.

لقد تمكنت من تحقيق ذلك باستخدام الكود أدناه ، ولكن هناك ما يبدو وكأنه علامة على يسار الصندوق الخاص بي ، وهو ما لا أعتقد أنني قد رسمت - لذلك أتساءل ما الذي يمكن أن يكون.

هذا مثال على الصورة: alt text


تحرير - هذا ما يحدث إذا تم رسم دائرة:alt text


الكود الخاص بي أدناه:

رسم مخصص:

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

}

استخدم في 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);

هل لدى أي شخص أي فكرة عما يجري هنا؟ هل هي قطعة أثرية من التراكب؟

هل كانت مفيدة؟

المحلول

تم تحقيق ذلك من خلال تجاوز طريقة السحب () من pointoverlay على النحو التالي:

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

بفضل Etteyafed - كنت سأعزو لك النقاط إذا كنت قد أجبت ، لكنني أردت إغلاق هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top