虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > Android编程 > android 获取GPS经纬度在百度地图上绘制轨迹

android 获取GPS经纬度在百度地图上绘制轨迹
类别:Android编程   作者:码皇   来源:互联网   点击:

实现将一组GPS模块获取的经纬度数据在百度地图上绘制轨迹1 将经纬度转换成百度地图坐标 ** * 标准的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;
    }




相关热词搜索: android 获取 经纬度