Dibujo punteado (…) camino en lugar de una línea (________)

Ahora abajo está mi código que dibuja el camino entre geopuntos en el mapa. Esto funciona perfectamente bien. Lo que estoy tratando de implementar es en lugar de dibujar una línea, mostrar esta ruta con los puntos (.) Como en el iPhone. Quiero que sea como este gp1 ……… gp2 en lugar de dibujar en una sola línea recta como gp1_ _ __ _ _gp2.

He intentado casi todas las opciones para hacer esto pero todavía no hay éxito en esto, cualquiera puede ayudarme a resolver esto?

private void drawPath(List geoPoints, int color) { List overlays = objMapView.getOverlays(); int loopcount = geoPoints.size() - 1; for (int i = 0; i < loopcount; i++) { GeoPoint p1 = (GeoPoint) geoPoints.get(i); GeoPoint p2 = (GeoPoint) geoPoints.get(i + 1); MyPathOverLay p = null; /**** Marking the start and end of the trailpath ****/ if (i == 0) { Bitmap bmp = BitmapFactory.decodeResource(this.getResources(),R.drawable.greenflag); p = new MyPathOverLay(p1, p2, 0xFFFF0000, true, false, bmp); } else if (i == loopcount - 1) { Bitmap bmp = BitmapFactory.decodeResource(this.getResources(),R.drawable.redflag); p = new MyPathOverLay(p1, p2, 0xFFFF0000, false, true, bmp); } else { p = new MyPathOverLay(p1, p2, 0xFFFF0000, false, false, null); } overlays.add(p); } } public class MyPathOverLay extends Overlay { private GeoPoint gp1; private GeoPoint gp2; private int color; Boolean isFirstPOI; Boolean isLastPOI; AudioMap audioMap; Bitmap bmp; public MyPathOverLay(GeoPoint gp1, GeoPoint gp2, int color,Boolean first, Boolean last,Bitmap bitMap) { this.gp1 = gp1; this.gp2 = gp2; this.color = color; this.isFirstPOI= first; this.isLastPOI = last; this.bmp = bitMap; } @Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { Projection projection = mapView.getProjection(); Paint paint = new Paint(); Point point = new Point(); projection.toPixels(gp1, point); paint.setColor(color); Point point2 = new Point(); projection.toPixels(gp2, point2); paint.setStrokeWidth(5); paint.setAlpha(120); canvas.drawLine(point.x, point.y, point2.x, point2.y, paint); //---translate the GeoPoint to screen pixels--- Point screenPts = new Point(); mapView.getProjection().toPixels(gp1, screenPts); //---translate the GeoPoint to screen pixels--- Point screenPts1 = new Point(); mapView.getProjection().toPixels(gp2, screenPts1); if(isFirstPOI == true){ canvas.drawBitmap(bmp,screenPts.x-20,screenPts.y-40, null); } else if(isLastPOI == true) { canvas.drawBitmap(bmp,screenPts1.x-20,screenPts1.y-35, null); } super.draw(canvas, mapView, shadow); } 

}

Gracias a este tipo, me he referido a este ejemplo y está funcionando para mí.

¿Cómo hago una línea punteada / discontinua en Android?

Sólo hay que añadir estas 2 líneas,

  paint.setPathEffect(new DashPathEffect(new float[] {10,10}, 5)); canvas.drawLine(point.x, point.y, point2.x, point2.y, paint); 

Después de establecer,

  paint.setAlpha(120); 

@ Frankenzie, gracias

  • Diff b / w bitmap.recycle () y bitmap = nulo
  • Canvas.drawBitmap () tarda más tiempo en dibujar el mapa de bits por primera vez mientras que el mosaico del mapa de bits
  • Carga de Android desde la URL a Bitmap
  • Guardar Bitmap en un archivo - Xamarin, Monodroid
  • Cómo girar la imagen de "onPictureTaken" sin Excepción de memoria insuficiente?
  • ¿Qué hace llamar a bitmap.recycle () en API 11+?
  • Mapa de bits en ImageView con esquinas redondeadas
  • Mysterious stacktrace en la consola de desarrolladores de Android (tamaño de mapa de bits supera los 32 bits)
  • OOM cuando se utiliza NetworkImageView (de Volley biblioteca)
  • Sólo Android 4.1, Bitmap se recicla automáticamente
  • Utilizar Glide para cargar mapa de bits en ImageView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.