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?
- Gire un ImageView en sentido horario usando ObjectAnimator
- SetColorFilter () y mutable drawables
- Cómo borrar la imagen con el dedo en Android
- RenderScript no procesa ScriptIntrinsicBlur correctamente, haciendo que ScriptIntrinsicBlur genere un arco iris de colores
- Si se establece myBitmap = null sin recycle (), qué diferencia con recycle ()
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); }
}
- ¿Cómo puedo transformar un Bitmap en un Uri?
- Convertir Bitmap a Byte matriz sin método de compresión en android
- Cómo capturar el error 'Bitmap demasiado grande para ser cargado en una textura'
- ¿"Bitmap.createScaledBitmap" convierte una imagen de 32 bits en 24 bits?
- Fuera de memoria en una asignación 9830416-byte con mapa de bits
- Android - OutOfMemory mientras decodifica Bitmap de recursos en Android 5.0
- Tratando de reducir un mapa de bits en Android no funciona
- Fondo de pantalla en vivo con imágenes
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
- Cookies HTTP WebView HTTP no funcionan en la API 21
- ¿Cómo descargar una parte de un archivo de URL en android?