第三方路径规划

地图路径规划
1,  // 定义 Marker 点击事件监听
        AMap.OnMarkerClickListener markerClickListener = new AMap.OnMarkerClickListener() {
            // marker 对象被点击时回调的接口
            // 返回 true 则表示接口已响应事件,否则返回false
            @Override
            public boolean onMarkerClick(Marker marker) {
                lujingguihua(marker);
                return true;
            }
        };
        // 绑定 Marker 被点击事件
        aMap.setOnMarkerClickListener(markerClickListener);






2, private void lujingguihua(Marker marker){
        RouteSearch routeSearch = new RouteSearch(MainActivity.this);
        routeSearch.setRouteSearchListener(listener);


        //TODO 难点1
        // fromAndTo包含路径规划的起点和终点,drivingMode表示驾车模式
// 第三个参数表示途经点(最多支持16个),第四个参数表示避让区域(最多支持32个),第五个参数表示避让道路
        //获取自己的坐标系
        Location myLocation = aMap.getMyLocation();
        LatLonPoint startPoint = new LatLonPoint(myLocation.getLatitude(),myLocation.getLongitude());
        //目的地坐标系
        LatLng position = marker.getPosition();
        LatLonPoint endPoint = new LatLonPoint(position.latitude,position.longitude);
        RouteSearch.FromAndTo fat = new RouteSearch.FromAndTo(startPoint,endPoint);




        RouteSearch.DriveRouteQuery query = new RouteSearch.DriveRouteQuery(fat, 0, null, null, "");
        routeSearch.calculateDriveRouteAsyn(query);//发起请求
    }
    RouteSearch.OnRouteSearchListener listener =  new RouteSearch.OnRouteSearchListener() {
        @Override
        public void onBusRouteSearched(BusRouteResult busRouteResult, int i) {


        }


        @Override
        public void onDriveRouteSearched(DriveRouteResult result, int errorCode) {
            //TODO 难点2
            //展示算路的数据
            aMap.clear();// 清理地图上的所有覆盖物
            if (errorCode == AMapException.CODE_AMAP_SUCCESS) {
                if (result != null && result.getPaths() != null) {
                    if (result.getPaths().size() > 0) {
                        final DrivePath drivePath = result.getPaths()
                                .get(0);
                        DrivingRouteOverlay drivingRouteOverlay = new DrivingRouteOverlay(
                                MainActivity.this, aMap, drivePath,
                                result.getStartPos(),
                                result.getTargetPos(), null);
                        drivingRouteOverlay.setNodeIconVisibility(false);//设置节点marker是否显示
                        drivingRouteOverlay.setIsColorfulline(true);//是否用颜色展示交通拥堵情况,默认true
                        drivingRouteOverlay.removeFromMap();
                        drivingRouteOverlay.addToMap();
                        drivingRouteOverlay.zoomToSpan();
                    }
                }
            }


        }


        @Override
        public void onWalkRouteSearched(WalkRouteResult walkRouteResult, int i) {


        }


        @Override
        public void onRideRouteSearched(RideRouteResult rideRouteResult, int i) {


        }
    };






3,加入两个文件夹(overlay,drawable)

文件在第三方找到。





正地理编码获取经纬度:

GeocodeSearch("地址");

//发起正地理编码搜索
        public void GeocodeSearch(String city) {
            //构造 GeocodeSearch 对象,并设置监听。
            geocodeSearch = new GeocodeSearch(this);
            geocodeSearch.setOnGeocodeSearchListener(this);
//通过GeocodeQuery设置查询参数,调用getFromLocationNameAsyn(GeocodeQuery geocodeQuery) 方法发起请求。
//address表示地址,第二个参数表示查询城市,中文或者中文全拼,citycode、adcode都ok
            GeocodeQuery query = new GeocodeQuery(city, city);
            geocodeSearch.getFromLocationNameAsyn(query);
        }

        @Override
        public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) {

        }

        @Override
        public void onGeocodeSearched(GeocodeResult geocodeResult, int i) {

            if (i == AMapException.CODE_AMAP_SUCCESS) {
                if (geocodeResult != null && geocodeResult.getGeocodeAddressList() != null
                        && geocodeResult.getGeocodeAddressList().size() > 0) {
                    GeocodeAddress address = geocodeResult.getGeocodeAddressList().get(0);
                    //获取到的经纬度
                    LatLonPoint latLongPoint = address.getLatLonPoint();
                    double latitude = latLongPoint.getLatitude();
                    double longitude = latLongPoint.getLongitude();
                    LatLng latLng = new LatLng(latitude,longitude);
                    Marker marker = aMap.addMarker(new MarkerOptions().position(latLng).title(address.getFormatAddress()).snippet(""+address.getFormatAddress()+":"+latitude+", "+latLongPoint+""));
                    lujingguihua(marker);
                }
            }
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值