MyOverLay.java
上传用户:vip_99
上传日期:2021-03-27
资源大小:61159k
文件大小:2k
源码类别:

android开发

开发平台:

Java

  1. package irdc.ex10_02; 
  2. import android.graphics.Canvas; 
  3. import android.graphics.Color;
  4. import android.graphics.Paint; 
  5. import android.graphics.Point; 
  6. import android.graphics.RectF; 
  7. import com.google.android.maps.GeoPoint; 
  8. import com.google.android.maps.MapView; 
  9. import com.google.android.maps.Overlay; 
  10. import com.google.android.maps.Projection; 
  11. public class MyOverLay extends Overlay
  12.   private GeoPoint gp1;
  13.   private GeoPoint gp2;
  14.   private int mRadius=6;
  15.   private int mode=0;
  16.       
  17.   /* 构造器,传入起点与终点的GeoPoint与mode */ 
  18.   public MyOverLay(GeoPoint gp1,GeoPoint gp2,int mode) 
  19.   { 
  20.     this.gp1 = gp1;
  21.     this.gp2 = gp2;
  22.     this.mode = mode;
  23.   } 
  24.    
  25.   @Override 
  26.   public boolean draw 
  27.   (Canvas canvas, MapView mapView, boolean shadow, long when)
  28.   { 
  29.     Projection projection = mapView.getProjection();
  30.     if (shadow == false) 
  31.     {      
  32.       /* 设置笔刷 */ 
  33.       Paint paint = new Paint();
  34.       paint.setAntiAlias(true);
  35.       paint.setColor(Color.BLUE);
  36.       Point point = new Point();
  37.       projection.toPixels(gp1, point);
  38.       /* mode=1:创建起点 */
  39.       if(mode==1)
  40.       {
  41.         /* 定义RectF对象 */
  42.         RectF oval=new RectF(point.x - mRadius, point.y - mRadius,
  43.                              point.x + mRadius, point.y + mRadius); 
  44.         /* 绘制起点的圆形 */ 
  45.         canvas.drawOval(oval, paint);
  46.       }
  47.       /* mode=2:画路线 */
  48.       else if(mode==2)
  49.       {
  50.         Point point2 = new Point(); 
  51.         projection.toPixels(gp2, point2);
  52.         paint.setColor(Color.BLACK);
  53.         paint.setStrokeWidth(5);
  54.         paint.setAlpha(120);
  55.         /* 画线 */ 
  56.         canvas.drawLine(point.x, point.y, point2.x,point2.y, paint);
  57.       }
  58.       /* mode=3:创建终点 */
  59.       else if(mode==3)
  60.       {
  61.         /* 避免误差,先画最后一段的路线 */
  62.         Point point2 = new Point(); 
  63.         projection.toPixels(gp2, point2);
  64.         paint.setStrokeWidth(5);
  65.         paint.setAlpha(120);
  66.         canvas.drawLine(point.x, point.y, point2.x,point2.y, paint);
  67.         
  68.         /* 定义RectF对象 */ 
  69.         RectF oval=new RectF(point2.x - mRadius,point2.y - mRadius,  
  70.                              point2.x + mRadius,point2.y + mRadius);
  71.         /* 绘制终点的圆形 */
  72.         paint.setAlpha(255);
  73.         canvas.drawOval(oval, paint);
  74.       }
  75.     }
  76.     return super.draw(canvas, mapView, shadow, when);
  77.   }
  78. }