Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 獲取GPS經緯度在百度地圖上繪制軌跡

android 獲取GPS經緯度在百度地圖上繪制軌跡

編輯:關於Android編程

實現將一組GPS模塊獲取的經緯度數據在百度地圖上繪制軌跡


1.將經緯度轉換成百度地圖坐標

	/**
	 * 標准的GPS經緯度坐標直接在地圖上繪制會有偏移,這是測繪局和地圖商設置的加密,要轉換成百度地圖坐標
	 * 
	 * @return 百度地圖坐標
	 */
	public GeoPoint gpsToBaidu(String data) {//data格式  nmea標准數據  ddmm.mmmmm,ddmm.mmmm 如3030.90909,11449.1234
		String[] p = data.split(",");
		int lat = (int) (((int) (Float.valueOf(p[0]) / 100) + (100 * (Float//將ddmm.mmmm格式轉成dd.ddddd
				.valueOf(p[0]) / 100.0 - (int) (Float.valueOf(p[0]) / 100)) / 60.0)) * 1E6);
		int lon = (int) (((int) (Float.valueOf(p[1]) / 100) + (100 * (Float
				.valueOf(p[1]) / 100.0 - (int) (Float.valueOf(p[1]) / 100)) / 60.0)) * 1E6);
		GeoPoint pt = new GeoPoint(lat, lon);
		return CoordinateConvert.fromWgs84ToBaidu(pt);//轉成百度坐標

	}

2.在地圖上繪制軌跡(已設置好地圖)


	/**
	 * 繪制點線
	 * 
	 */
	public void addCustomElementsDemo(String[] data) {
		GraphicsOverlay graphicsOverlay = new GraphicsOverlay(mMapView);
		mMapView.getOverlays().add(graphicsOverlay);
		// 添加折線
		graphicsOverlay.setData(drawLine(data));//軌跡
		// 添加點
		graphicsOverlay.setData(drawPoint(data[0]));//起點
		graphicsOverlay.setData(drawPoint(data[count - 1]));//終點
		// 執行地圖刷新使生效
		mMapView.refresh();
	}

	/**
	 * 繪制單點,該點狀態不隨地圖狀態變化而變化
	 * 
	 * @return 點對象
	 */
	public Graphic drawPoint(String data) {

		GeoPoint pt1 = gpsToBaidu(data);

		// 構建點
		Geometry pointGeometry = new Geometry();
		// 設置坐標
		pointGeometry.setPoint(pt1, 10);
		// 設定樣式
		Symbol pointSymbol = new Symbol();
		Symbol.Color pointColor = pointSymbol.new Color();
		pointColor.red = 0;
		pointColor.green = 126;
		pointColor.blue = 255;
		pointColor.alpha = 255;
		pointSymbol.setPointSymbol(pointColor);
		// 生成Graphic對象
		Graphic pointGraphic = new Graphic(pointGeometry, pointSymbol);
		return pointGraphic;
	}

	/**
	 * 繪制折線,該折線狀態隨地圖狀態變化
	 * 
	 * @return 折線對象
	 */
	public Graphic drawLine(String[] data) {

		// 構建線
		Geometry lineGeometry = new Geometry();
		// 設定折線點坐標
		GeoPoint[] linePoints = new GeoPoint[count];
		for (int i = 0; i < count; i++) {
			linePoints[i] = gpsToBaidu(data[i]);
		}

		lineGeometry.setPolyLine(linePoints);
		// 設定樣式
		Symbol lineSymbol = new Symbol();
		Symbol.Color lineColor = lineSymbol.new Color();
		lineColor.red = 33;
		lineColor.green = 99;
		lineColor.blue = 255;
		lineColor.alpha = 255;
		lineSymbol.setLineSymbol(lineColor, 10);
		// 生成Graphic對象
		Graphic lineGraphic = new Graphic(lineGeometry, lineSymbol);
		return lineGraphic;
	}




  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved