百度地图 实现行走轨迹描绘(觉得网上好多缺点,不全,自己写了一个)
2013-03-12 17:17
316 查看
<?xml version="1.0" encoding="UTF-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <com.baidu.mapapi.MapView android:id="@+id/bmapsView1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /> </LinearLayout>
package com.xmb.navigationdemoactivity; 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 android.util.Log; import android.widget.Toast; import com.baidu.mapapi.BMapManager; import com.baidu.mapapi.MKEvent; import com.baidu.mapapi.MKGeneralListener; 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; public class LineTest extends MapActivity { private Context mContext; private MapView mapView; private BMapManager mMapManager = null; private double mLat1 = 23.178848; // point1纬度 private double mLon1 = 113.418792; // point1经度 private double mLat2 = 23.078848; private double mLon2 = 113.418792; private double mLat3 = 23.178848; private double mLon3 = 113.018792; @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.line); mMapManager = new BMapManager(getApplication()); mMapManager.init("C9DF0F24E9FFCCEB4AF1DA296E8A694B311A3073", new MyGeneralListener()); super.initMapActivity(mMapManager); /* BaseApplication baseApp = (BaseApplication) this.getApplication(); if (baseApp.mMapManagerage == null) { baseApp.mMapManagerage = new BMapManager(mContext); baseApp.mMapManagerage.init(baseApp.mStrKey, new BaseApplication.MyGeneralListener()); } baseApp.mMapManagerage.start(); super.initMapActivity(baseApp.mMapManagerage);// 初始化map sdk */ mapView = (MapView) findViewById(R.id.bmapsView1); mapView.setBuiltInZoomControls(true); // 设置在缩放动画过程中也显示overlay,默认为不绘制 mapView.setDrawOverlayWhenZooming(true); // RouteLine routeLine = // (RouteLine)getIntent().getSerializableExtra("routeLine"); gpoint1 = new GeoPoint((int) (mLat1 * 1E6), (int) (mLon1 * 1E6)); gpoint2 = new GeoPoint((int) (mLat2 * 1E6), (int) (mLon2 * 1E6)); gpoint3 = new GeoPoint((int) (mLat3 * 1E6), (int) (mLon3 * 1E6)); MapController mapController = mapView.getController(); //mapController.animateTo(gpoint1);//设置一个起点 //这里画点和连接线 mapController.setCenter(gpoint1); MyOverlay myOverlay = new MyOverlay(); mapView.getOverlays().add(myOverlay); mapController.zoomIn(); } // 常用事件监听,用来处理通常的网络错误,授权验证错误等 class MyGeneralListener implements MKGeneralListener { @Override public void onGetNetworkState(int iError) { Log.d("MyGeneralListener", "onGetNetworkState error is "+ iError); Toast.makeText(LineTest.this, "您的网络出错啦!", Toast.LENGTH_LONG).show(); } @Override public void onGetPermissionState(int iError) { Log.d("MyGeneralListener", "onGetPermissionState error is "+ iError); if (iError == MKEvent.ERROR_PERMISSION_DENIED) { // 授权Key错误: Toast.makeText(LineTest.this, "请在BMapApiDemoApp.java文件输入正确的授权Key!", Toast.LENGTH_LONG).show(); } } } @Override protected void onDestroy() { // TODO Auto-generated method stub if (mMapManager != null) { mMapManager.destroy(); mMapManager = null; } super.onDestroy(); } @Override protected void onPause() { // TODO Auto-generated method stub if (mMapManager != null) { mMapManager.stop(); } super.onPause(); } @Override protected void onResume() { // TODO Auto-generated method stub if (mMapManager != null) { mMapManager.start(); } super.onResume(); } 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.GREEN); 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(8); //连接 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); } } }
相关文章推荐
- ios如何集成百度地图---还是自己动手做一下--网上好多博客说的都不甚靠谱。
- 结合微软的部分代码再加上自己整理的代码实现的一个我个人觉得很强大的序列化/反序化类
- 创建一个数组, 实现函数init()初始化数组、 实现reverse()函数完成数组元素的逆置,实现empty()清空数组。要求:自己设计函数的参数,返回值。
- 控制台设置字体的大小,网上找得自己还没来的及实现
- 自己实现一个SQL解析引擎
- . 有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列,要求执行效率高,并说明如何改善执行效率(该函数必须自己实现,不能使用php函数)。
- 教你自己实现一个事件总线EventBus
- 自己动手实现一个WEB服务器
- 10 分钟实现一个自己的server监控器
- 自己实现的一个字符串分割截取函数,以及查找指定字符
- 新手提问 想要做一个单机android应用,要实现注册登录功能。目前折在了连数据库这一步上,也不知道自己这么做对不对,哪儿错了。求教求教!
- 怎样自己构建一个小型的Zoomeye----从技术细节探讨到实现
- 自己实现一个简单的散列表
- 自己实现一个右滑删除的ListView
- 网上流传的一个Canny边缘检测算法C语言实现的bug
- 自己实现一个右滑删除的ListView, SwipeMenuListView
- 自己实现一个下拉刷新的ListView
- 实现过程全纪录——自己写一个“微信朋友圈”(包括移动端与PC端)
- [JAVA]集合框架之自己实现一个具有基本增查删改功能的ArrayList
- 工作笔记五——自己实现一个Vue的下拉刷新组件