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

  • Guardar vista como mapa de bits, sólo obtener pantalla en negro
  • Android: Cambiar el tamaño de un archivo de mapa de bits grande a un archivo de salida escalado
  • Error de error de mapa de bits inmutable
  • ¿Es posible mover un fondo de azulejos? (Scroll infinito con TileMode.REPEAT)
  • Android: Error al usar el mapa de bits para mostrar la imagen usando el estudio de Android
  • Bitmap vs ImageView vs Drawable
  • No se puede obtener la calidad de imagen completa de la cadena base64
  • Android NDK y renderizado para vivir fondos de pantalla
  • El tamaño del mapa de bits supera el error de presupuesto de Vm android
  • Repita la imagen con ImageView en RelativeLayout
  • OutOfMemoryError mientras decodifica y codifica Base64 String en Bitmap
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.