在Google地图上绘制直线


 mars chen 老师第三季视频 08集

绘制路线的步骤

  1.确定路线的起始和终止的经纬度坐标

  2在起点和终点上绘制图标

  3将经纬度坐标换算成屏幕上x轴/y轴坐标

  4在起点和终点绘制直线

代码如下:

public class MainActivity extends MapActivity {

	private GeoPoint beginGeoPoint;
	private GeoPoint endGeoPoint;
	
	private MapController mapController;
	private List<Overlay> overlays;
	private Projection projection;
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //指定起始和终止位置经纬度
        beginGeoPoint=new GeoPoint(19240000,-99120000);
        endGeoPoint=new GeoPoint(19340000,-99220000);
        
        MapView mapView=(MapView)findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);
        
        //对地图进行控制
        mapController=mapView.getController();
        overlays=mapView.getOverlays();
        projection=mapView.getProjection();
        
        overlays.add(new PointOverlay(beginGeoPoint));
        overlays.add(new PointOverlay(endGeoPoint));
        overlays.add(new LineOverlay(beginGeoPoint,endGeoPoint));
        
        //
        mapController.animateTo(beginGeoPoint);
        mapController.setZoom(12);
        
    }

	@Override
	protected boolean isRouteDisplayed() {
		return false;
	}
	
	
	//该类对象用于在地图上绘制线条 
	class LineOverlay extends Overlay{
		private GeoPoint begin;
		private GeoPoint end;
		
		public LineOverlay() {
		
		}

		public LineOverlay(GeoPoint begin, GeoPoint end) {
			this.begin = begin;
			this.end = end;
		}

		
		//canvas画布 paint画笔
		@Override
		public void draw(Canvas canvas, MapView mapView, boolean shadow) {
			super.draw(canvas, mapView, shadow);
			Paint paint=new Paint();
			paint.setColor(Color.BLUE);
			paint.setStyle(Paint.Style.FILL_AND_STROKE);
			paint.setStrokeWidth(2);
			Point beginPoint=new Point();
			Point endPoint=new Point();
			Path path=new Path();
			projection.toPixels(beginGeoPoint,beginPoint);
			projection.toPixels(endGeoPoint, endPoint);
			path.moveTo(endPoint.x, endPoint.y);
			path.lineTo(beginPoint.x, beginPoint.y);
			canvas.drawPath(path, paint);
		}
		
		
		
	}
	
	//绘制图标
	class PointOverlay extends Overlay{
		
		private GeoPoint geoPoint;
		

		public PointOverlay() {
			
		}

		
		public PointOverlay(GeoPoint geoPoint) {
			super();
			this.geoPoint = geoPoint;
		}

		@Override
		public void draw(Canvas canvas, MapView mapView, boolean shadow) {
			super.draw(canvas, mapView, shadow);
			Point point=new Point();
			projection.toPixels(geoPoint,point);
			Bitmap bmp=BitmapFactory.decodeResource(getResources(), R.drawable.tool);
			Paint paint=new Paint();
			canvas.drawBitmap(bmp, point.x, point.y-10,paint);
		}
		
	}
}

 

效果图:

 

 最近有点忙,等有时间了。一定好好琢磨琢磨,写个漂亮实用的地图出来。先记录下来,备忘。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值