1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > android百度地图轨迹实现 android 获取GPS经纬度在百度地图上绘制轨迹

android百度地图轨迹实现 android 获取GPS经纬度在百度地图上绘制轨迹

时间:2024-04-17 00:18:28

相关推荐

android百度地图轨迹实现 android 获取GPS经纬度在百度地图上绘制轨迹

实现将一组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;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。