百度地图 实现行走轨迹描绘(觉得网上好多缺点,不全,自己写了一个)

百度地图 实现行走轨迹描绘(觉得网上好多缺点,不全,自己写了一个)

<?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>
  1 package com.xmb.navigationdemoactivity;

  2 

  3 import android.content.Context;

  4 

  5 import android.graphics.Canvas;

  6 

  7 import android.graphics.Color;

  8 

  9 import android.graphics.Paint;

 10 

 11 import android.graphics.Paint.Style;

 12 

 13 import android.graphics.Path;

 14 

 15 import android.graphics.Point;

 16 

 17 import android.os.Bundle;

 18 import android.util.Log;

 19 import android.widget.Toast;

 20 

 21 import com.baidu.mapapi.BMapManager;

 22 import com.baidu.mapapi.MKEvent;

 23 import com.baidu.mapapi.MKGeneralListener;

 24 

 25 import com.baidu.mapapi.GeoPoint;

 26 

 27 import com.baidu.mapapi.MapActivity;

 28 

 29 import com.baidu.mapapi.MapController;

 30 

 31 import com.baidu.mapapi.MapView;

 32 

 33 import com.baidu.mapapi.Overlay;

 34 

 35 import com.baidu.mapapi.Projection;

 36 

 37 

 38 

 39 public class LineTest extends MapActivity {

 40 

 41         private Context mContext;

 42 

 43         private MapView mapView;

 44         private BMapManager mMapManager = null;

 45         private double mLat1 = 23.178848; // point1纬度

 46         private double mLon1 = 113.418792; // point1经度

 47 

 48         private double mLat2 = 23.078848;

 49         private double mLon2 = 113.418792;

 50 

 51         private double mLat3 = 23.178848;

 52         private double mLon3 = 113.018792;

 53         @Override

 54 

 55         protected boolean isRouteDisplayed() {

 56 

 57                 // TODO Auto-generated method stub

 58 

 59                 return false;

 60 

 61         }

 62 

 63         private GeoPoint gpoint1, gpoint2, gpoint3;// 连线的点

 64 

 65         @Override

 66 

 67         protected void onCreate(Bundle arg0) {

 68 

 69                 super.onCreate(arg0);

 70 

 71                 setContentView(R.layout.line);

 72                 mMapManager = new BMapManager(getApplication());

 73                 mMapManager.init("C9DF0F24E9FFCCEB4AF1DA296E8A694B311A3073", new MyGeneralListener());

 74                 

 75                 super.initMapActivity(mMapManager);

 76 

 77 

 78 /*                BaseApplication baseApp = (BaseApplication) this.getApplication();

 79 

 80                 if (baseApp.mMapManagerage == null) {

 81 

 82                         baseApp.mMapManagerage = new BMapManager(mContext);

 83 

 84                         baseApp.mMapManagerage.init(baseApp.mStrKey,

 85 

 86                                         new BaseApplication.MyGeneralListener());

 87 

 88                 }

 89 

 90                 baseApp.mMapManagerage.start();

 91 

 92                 super.initMapActivity(baseApp.mMapManagerage);// 初始化map sdk

 93 

 94  */               mapView = (MapView) findViewById(R.id.bmapsView1);

 95 

 96                 mapView.setBuiltInZoomControls(true);

 97 

 98                 // 设置在缩放动画过程中也显示overlay,默认为不绘制

 99 

100                 mapView.setDrawOverlayWhenZooming(true);

101 

102 

103 

104                 // RouteLine routeLine =

105 

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

107                 gpoint1 = new GeoPoint((int) (mLat1 * 1E6), (int) (mLon1 * 1E6));

108 

109                 gpoint2 = new GeoPoint((int) (mLat2 * 1E6), (int) (mLon2 * 1E6));

110 

111                 gpoint3 = new GeoPoint((int) (mLat3 * 1E6), (int) (mLon3 * 1E6)); 

112                 MapController mapController = mapView.getController();

113                 //mapController.animateTo(gpoint1);//设置一个起点

114                 //这里画点和连接线

115                 mapController.setCenter(gpoint1);

116                 MyOverlay myOverlay = new MyOverlay();

117 

118                 mapView.getOverlays().add(myOverlay);

119 

120                 

121 

122                 

123 

124                 mapController.zoomIn();

125 

126                 

127 

128                                

129 

130                 

131 

132         }

133 

134 

135      // 常用事件监听,用来处理通常的网络错误,授权验证错误等

136         class MyGeneralListener implements MKGeneralListener {

137                 @Override

138                 public void onGetNetworkState(int iError) {

139                     Log.d("MyGeneralListener", "onGetNetworkState error is "+ iError);

140                     Toast.makeText(LineTest.this, "您的网络出错啦!",

141                             Toast.LENGTH_LONG).show();

142                 }

143 

144                 @Override

145                 public void onGetPermissionState(int iError) {

146                     Log.d("MyGeneralListener", "onGetPermissionState error is "+ iError);

147                     if (iError ==  MKEvent.ERROR_PERMISSION_DENIED) {

148                         // 授权Key错误:

149                         Toast.makeText(LineTest.this, 

150                                 "请在BMapApiDemoApp.java文件输入正确的授权Key!",

151                                 Toast.LENGTH_LONG).show();

152                     }

153                 }

154             }

155         

156         

157         

158         @Override

159         protected void onDestroy() {

160             // TODO Auto-generated method stub

161              if (mMapManager != null) {            

162                  mMapManager.destroy();            

163                  mMapManager = null;        

164                  }

165             super.onDestroy();

166         }

167 

168 

169 

170         @Override

171         protected void onPause() {

172             // TODO Auto-generated method stub

173             if (mMapManager != null) {            

174                 mMapManager.stop();        

175                 }

176             super.onPause();

177         }

178 

179 

180 

181         @Override

182         protected void onResume() {

183             // TODO Auto-generated method stub

184              if (mMapManager != null) {            

185                  mMapManager.start();        

186                  }

187             super.onResume();

188         }

189 

190 

191         class MyOverlay extends Overlay {

192 

193 

194 

195                 @Override

196 

197                 public void draw(Canvas canvas, MapView mapView, boolean shadow) {

198 

199                         super.draw(canvas, mapView, shadow);

200 

201                         

202 

203                         Projection projection = mapView.getProjection();

204 

205                         Point p1 = new Point();

206 

207                         Point p2 = new Point();

208 

209                         Point p3 = new Point();

210 

211                         // 经度转像素

212 

213                         projection.toPixels(gpoint1, p1);

214 

215                         projection.toPixels(gpoint2, p2);

216 

217                         projection.toPixels(gpoint3, p3);

218 

219                 

220 

221                         //第一个画笔 画圆

222 

223                         Paint fillPaint = new Paint();

224 

225                         fillPaint.setColor(Color.GREEN);

226 

227                         fillPaint.setAntiAlias(true);

228 

229                         fillPaint.setStyle(Style.FILL);

230 

231                         

232 

233                         // 将图画到上层

234 

235                         canvas.drawCircle(p1.x, p1.y, 5.0f, fillPaint);

236 

237                         canvas.drawCircle(p2.x, p2.y, 5.0f, fillPaint);

238 

239                         canvas.drawCircle(p3.x, p3.y, 5.0f, fillPaint);

240 

241 

242 

243                         //第二个画笔 画线

244 

245                         Paint paint = new Paint();

246 

247                         paint.setColor(Color.BLUE);

248 

249                         paint.setDither(true);

250 

251                         paint.setStyle(Paint.Style.STROKE);

252 

253                         paint.setStrokeJoin(Paint.Join.ROUND);

254 

255                         paint.setStrokeCap(Paint.Cap.ROUND);

256 

257                         paint.setStrokeWidth(8);

258 

259 

260 

261                         //连接

262 

263                         Path path = new Path();

264 

265                         path.moveTo(p1.x, p1.y);

266 

267                         path.lineTo(p2.x, p2.y);

268 

269                         path.lineTo(p3.x, p3.y);

270 

271                         //画出路径

272 

273                         canvas.drawPath(path, paint);

274 

275                 }

276 

277         }

278 

279 

280 

281 }

 

你可能感兴趣的:(百度地图)