`
hualikejava
  • 浏览: 169618 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用百度地图画轨迹

阅读更多
百度地图画轨迹连接线。


package com.life.hua.activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Path;
import android.graphics.Point;
import android.os.Bundle;
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.GeoPoint;
import com.baidu.mapapi.MapActivity;
import com.baidu.mapapi.MapController;
import com.baidu.mapapi.MapView;
import com.baidu.mapapi.Overlay;
import com.baidu.mapapi.Projection;
import com.life.hua.activity.BaseApplication;
import com.life.hua.activity.R;

public class BaiduMapActivity extends MapActivity {
	private Context mContext;
	private MapView mapView;
	@Override
	protected boolean isRouteDisplayed() {
		// TODO Auto-generated method stub
		return false;
	}
	private GeoPoint gpoint1, gpoint2, gpoint3;// 连线的点
	@Override
	protected void onCreate(Bundle arg0) {
		super.onCreate(arg0);
		setContentView(R.layout.baidumap_layout);

		BaseApplication baseApp = (BaseApplication) this.getApplication();
		if (baseApp.mBMapManage == null) {
			baseApp.mBMapManage = new BMapManager(mContext);
			baseApp.mBMapManage.init(baseApp.mStrKey,
					new BaseApplication.MyGeneralListener());
		}
		baseApp.mBMapManage.start();
		super.initMapActivity(baseApp.mBMapManage);// 初始化map sdk
		mapView = (MapView) findViewById(R.id.bmapView);
		mapView.setBuiltInZoomControls(true);
		// 设置在缩放动画过程中也显示overlay,默认为不绘制
		mapView.setDrawOverlayWhenZooming(true);

		// RouteLine routeLine =
		// (RouteLine)getIntent().getSerializableExtra("routeLine");

		//这里画点和连接线
		MyOverlay myOverlay = new MyOverlay();
		mapView.getOverlays().add(myOverlay);
		
		MapController mapController = mapView.getController();
		mapController.zoomIn();
		
		gpoint1 = new GeoPoint((int) (2259316 * 10),
				(int) (11396279 * 10));
		gpoint2 = new GeoPoint((int) (2259245 * 10),
				(int) (11396226 * 10));
		gpoint3 = new GeoPoint((int) (2259121 * 10),
				(int) (11396066 * 10));		
		mapController.animateTo(gpoint1);//设置一个起点
	}

	class MyOverlay extends Overlay {

		@Override
		public void draw(Canvas canvas, MapView mapView, boolean shadow) {
			super.draw(canvas, mapView, shadow);
			
			Projection projection = mapView.getProjection();
			Point p1 = new Point();
			Point p2 = new Point();
			Point p3 = new Point();
			// 经度转像素
			projection.toPixels(gpoint1, p1);
			projection.toPixels(gpoint2, p2);
			projection.toPixels(gpoint3, p3);
		
			//第一个画笔 画圆
			Paint fillPaint = new Paint();
			fillPaint.setColor(Color.BLUE);
			fillPaint.setAntiAlias(true);
			fillPaint.setStyle(Style.FILL);
			
			// 将图画到上层
			canvas.drawCircle(p1.x, p1.y, 5.0f, fillPaint);
			canvas.drawCircle(p2.x, p2.y, 5.0f, fillPaint);
			canvas.drawCircle(p3.x, p3.y, 5.0f, fillPaint);

			//第二个画笔 画线
			Paint paint = new Paint();
			paint.setColor(Color.BLUE);
			paint.setDither(true);
			paint.setStyle(Paint.Style.STROKE);
			paint.setStrokeJoin(Paint.Join.ROUND);
			paint.setStrokeCap(Paint.Cap.ROUND);
			paint.setStrokeWidth(4);

			//连接
			Path path = new Path();
			path.moveTo(p1.x, p1.y);
			path.lineTo(p2.x, p2.y);
			path.lineTo(p3.x, p3.y);
			//画出路径
			canvas.drawPath(path, paint);
		}
	}

}


  • 大小: 27.9 KB
分享到:
评论
3 楼 kuanye345 2013-03-28  
博主 给个demo 啊
2 楼 hualikejava 2012-08-01  
智在千里 写道
找楼主这样做的话,轨迹会穿房而过的,不靠谱这个做法

这种情况可能避免不了,因为我们画轨迹只是在mapview上面一层画的
1 楼 智在千里 2012-07-31  
找楼主这样做的话,轨迹会穿房而过的,不靠谱这个做法

相关推荐

Global site tag (gtag.js) - Google Analytics