2012-07-27 4 views
6

J'ai dessiné une ligne entre les géopoints. son dessiné avec succès. quand nous voyons la carte, la ligne de dessin ressemble à pixélisée quand adjecent du traînage suivant. comment fusionner la ligne?Dessiner une ligne lisse entre les géopoints sur android

enter image description here

Mon code est ici,

@Override 
public void draw(Canvas canvas, MapView mapview, boolean shadow) { 
    super.draw(canvas, mapview, shadow); 
    if(! routeIsActive) return; 

    mapview.getProjection().toPixels(locpoint, pp);  // Converts GeoPoint to screen pixels 

    int xoff = 0; 
    int yoff = 0; 
    int oldx = pp.x; 
    int oldy = pp.y; 
    int newx = oldx + xoff; 
    int newy = oldy + yoff; 

    paint.setAntiAlias(true); 
    paint.setDither(true); 
      paint.setStrokeWidth(7); 
    for(int i=0; i<numberRoutePoints-1; i++) 
    { 
     switch(routeMode.get(i)) 
     { 
     case 0: 
      paint.setColor(Color.parseColor("#666666")); 
      break; 
     case 1: 
      paint.setColor(Color.parseColor("#0EA7D6")); 
      break; 
     case 2: 
      paint.setColor(Color.parseColor("#654321")); 
      break; 
     case 3: 
      paint.setColor(Color.parseColor("#123456")); 
      break; 
     } 

     mapview.getProjection().toPixels(routePoints.get(i), pold); 
     oldx = pold.x; 
     oldy = pold.y; 
     mapview.getProjection().toPixels(routePoints.get(i+1), pnew); 
     newx = pnew.x; 
     newy = pnew.y; 

     canvas.drawLine(oldx, oldy, newx, newy, paint); 
    } 

} 

Répondre

3

Vous devez changer le style de l'objet de la peinture comme ceci:

paint.setStrokeCap(Cap.ROUND); 
+0

Bonjour @AndyRes. Merci mec. ça fonctionne bien. – RVG

2

Si vous dessinez un cercle au début et à la fin de chaque ligne (le diamètre du cercle doit être la hauteur de la ligne), je pense qu'il faire l'affaire ou peut-être drawRoundRect de la toile peut le faire bien

Questions connexes