百度地图路线规划功能的实现

最终实现效果图:
百度地图路线规划功能的实现_第1张图片
实现过程主要注意有两个:
(1)com.baidu.mapapi.overlayutil包的导入。
(2)在百度地图RoutePlaneDemo里面添加定位,定位到当前位置。

com.baidu.mapapi.overlayutil包的导入:
导入overlayutil包主要是因为百度在SDK中没有集成clusterutil和overlayutil工具类。
导入方法:
按照百度地图demo给出的项目结构,把工具类复制到项目中。
demo的项目结构:
百度地图路线规划功能的实现_第2张图片
自己项目的结构:
百度地图路线规划功能的实现_第3张图片
这下就可以导入overlayutil包了。

在百度地图RoutePlaneDemo里面添加定位,定位到当前位置:
参考百度地图的LocationDemo里面的定位方式,主要分为三个部分:

初始条件:

// 定位相关
    LocationClient mLocClient;
    public MyLocationListenner myListener = new MyLocationListenner();
    private MyLocationConfiguration.LocationMode mCurrentMode;
    BitmapDescriptor mCurrentMarker;
    private static final int accuracyCircleFillColor = 0xAAFFFF88;
    private static final int accuracyCircleStrokeColor = 0xAA00FF00;

    boolean isFirstLoc = true; // 是否首次定位

初始化地图和定位:

// 初始化地图
        mMapView = (MapView) findViewById(R.id.map);
        mBaidumap = mMapView.getMap();

        // 开启定位图层
        mBaidumap.setMyLocationEnabled(true);
        // 定位初始化
        mLocClient = new LocationClient(this);
        mLocClient.registerLocationListener(myListener);
        LocationClientOption option = new LocationClientOption();
        option.setOpenGps(true); // 打开gps
        option.setCoorType("bd09ll"); // 设置坐标类型
        option.setScanSpan(1000);

        mLocClient.setLocOption(option);
        mLocClient.start();

定位SDK监听函数:

/**
     * 定位SDK监听函数
     */
    public class MyLocationListenner implements BDLocationListener {

        @Override
        public void onReceiveLocation(BDLocation location) {
            // map view 销毁后不在处理新接收的位置
            if (location == null || mMapView == null) {
                return;
            }
            MyLocationData locData = new MyLocationData.Builder()
                    .accuracy(location.getRadius())
                            // 此处设置开发者获取到的方向信息,顺时针0-360
                    .direction(100).latitude(location.getLatitude())
                    .longitude(location.getLongitude()).build();
            mBaidumap.setMyLocationData(locData);
            if (isFirstLoc) {
                isFirstLoc = false;
                LatLng ll = new LatLng(location.getLatitude(),
                        location.getLongitude());
                MapStatus.Builder builder = new MapStatus.Builder();
                builder.target(ll).zoom(14.0f);
                mBaidumap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
            }
        }

        public void onReceivePoi(BDLocation poiLocation) {
        }
    }

这样就可以实现百度地图路线规划功能了,上面只是提供大致思路和可能遇见的问题,具体可以参考官方demo和百度地图论坛。

最终的代码可以参考:
http://download.csdn.net/detail/u014465934/9520542

你可能感兴趣的:(Android)