الرسم الغريب ittefact باستخدام مخصص قابل للرسوم مع MAPVIEW
-
26-09-2019 - |
سؤال
أحاول إضافة سبيك الخاص واستخدامه في سلسلة من التراكبات على MapView. القابل للتسمية هو في الأساس صندوق مستدير مع مخطط أسود ورقم في الوسط.
لقد تمكنت من تحقيق ذلك باستخدام الكود أدناه ، ولكن هناك ما يبدو وكأنه علامة على يسار الصندوق الخاص بي ، وهو ما لا أعتقد أنني قد رسمت - لذلك أتساءل ما الذي يمكن أن يكون.
هذا مثال على الصورة:
تحرير - هذا ما يحدث إذا تم رسم دائرة:
الكود الخاص بي أدناه:
رسم مخصص:
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 - كنت سأعزو لك النقاط إذا كنت قد أجبت ، لكنني أردت إغلاق هذا.
لا تنتمي إلى StackOverflow