高德地图之反地理编码、线路规划、天气查询

高德地图之反地理编码、线路规划、天气查询_第1张图片地理编码和反地理编码

 /**
     * 地理编码和反地理编码
     */
    private void geoSearch() {
        //地理编码
        GeocodeSearch geocoderSearch = new GeocodeSearch(this);
        geocoderSearch.setOnGeocodeSearchListener(this);
        // name表示地址,第二个参数表示查询城市,中文或者中文全拼,citycode、adcode
        GeocodeQuery query = new GeocodeQuery("西二旗", "010");
        geocoderSearch.getFromLocationNameAsyn(query);

        //反地理编码
        // 第一个参数表示一个Latlng,第二参数表示范围多少米,第三个参数表示是火系坐标系还是GPS原生坐标系
        LatLonPoint latlonPoint = new LatLonPoint(40.8214661, 116.788097);
        RegeocodeQuery query2 = new RegeocodeQuery(latlonPoint, 200, GeocodeSearch.AMAP);
        geocoderSearch.getFromLocationAsyn(query2);

    }
 //地理编码查询回调
    @Override
    public void onRegeocodeSearched(RegeocodeResult regeocodeResult, int i) {
        Log.e("tag", "反地理编码地址:" + regeocodeResult.getRegeocodeAddress().getCity());

    }

    @Override
    public void onGeocodeSearched(GeocodeResult geocodeResult, int i) {
        Log.e("tag", "地理编码:" + geocodeResult.getGeocodeAddressList().get(0).getCity());

    }

线路规划

 /**
     * 线路规划
     */
    private void routePlan() {
        RouteSearch routeSearch = new RouteSearch(this);
        routeSearch.setRouteSearchListener(this);
        LatLonPoint latLon1 = new LatLonPoint(40.742467, 116.842785);
        LatLonPoint latLon2 = new LatLonPoint(39.893433, 116.124035);
        RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(latLon1, latLon2);
        RouteSearch.DriveRouteQuery query = new RouteSearch.DriveRouteQuery(fromAndTo, RouteSearch.DRIVING_MULTI_CHOICE_HIGHWAY, null, null, "");
        //查询骑行线路
        routeSearch.calculateDriveRouteAsyn(query);

        //步行线路规划
        RouteSearch.WalkRouteQuery queryWalking = new RouteSearch.WalkRouteQuery(fromAndTo, RouteSearch.WALK_DEFAULT);
        routeSearch.calculateWalkRouteAsyn(queryWalking);//开始算路

        //公交线路规划
        // 第三个参数表示公交查询城市区号,第四个参数表示是否计算夜班车,0表示不计算,1表示计算
        RouteSearch.BusRouteQuery queryBus = new RouteSearch.BusRouteQuery(fromAndTo, RouteSearch.BusLeaseWalk, "010", 0);
        //query.setCityd("027");//终点城市区号
        routeSearch.calculateBusRouteAsyn(queryBus);//开始规划路径

        //骑行线路规划
        RouteSearch.RideRouteQuery queryRide = new RouteSearch.RideRouteQuery(fromAndTo, RouteSearch.RIDING_DEFAULT);
        routeSearch.calculateRideRouteAsyn(queryRide);


    }

线路规划回调 ,只处理了驾驶线路规划,其他几种线路规划处理类似,有的同学可能会找不到DrivingRouteOverlay这个类,不用担心,直接下载高德demo在3D_Map_Demo中有包overLay直接copy出来就能用

    //线路规划回调
    @Override
    public void onBusRouteSearched(BusRouteResult busRouteResult, int i) {
        if (i == 1000) {
            Log.e("tag", "公交线路距离:" + busRouteResult.getPaths().get(0).getDistance());
        } else {
            Log.e("tag", "线路规划失败");
        }
    }

    @Override
    public void onDriveRouteSearched(DriveRouteResult mDriveRouteResult, int errorCode) {
        if (errorCode == 1000) {
            aMap.clear();// 清理地图上的所有覆盖物
            if (errorCode == AMapException.CODE_AMAP_SUCCESS) {
                if (mDriveRouteResult != null && mDriveRouteResult.getPaths() != null) {
                    if (mDriveRouteResult.getPaths().size() > 0) {
                        final DrivePath drivePath = mDriveRouteResult.getPaths()
                                .get(0);
                        DrivingRouteOverlay drivingRouteOverlay = new DrivingRouteOverlay(
                                this, aMap, drivePath,
                                mDriveRouteResult.getStartPos(),
                                mDriveRouteResult.getTargetPos(), null);
                        drivingRouteOverlay.setNodeIconVisibility(false);//设置节点marker是否显示
                        drivingRouteOverlay.setIsColorfulline(true);//是否用颜色展示交通拥堵情况,默认true
                        drivingRouteOverlay.removeFromMap();
                        drivingRouteOverlay.addToMap();
                        drivingRouteOverlay.zoomToSpan();
                    }
                } else {
                    Log.e("tag", "线路规划失败");
                }
            } else {
                Log.e("tag", "线路规划失败");
            }

        } else {
            Log.e("tag", "线路规划失败");
        }

    }

    @Override
    public void onWalkRouteSearched(WalkRouteResult walkRouteResult, int i) {
        if (i == 1000) {
            Log.e("tag", "步行线路距离:" + walkRouteResult.getPaths().get(0).getDistance());
        } else {
            Log.e("tag", "线路规划失败");
        }
    }

    @Override
    public void onRideRouteSearched(RideRouteResult rideRouteResult, int i) {
        if (i == 1000) {
            Log.e("tag", "骑行线路距离:" + rideRouteResult.getPaths().get(0).getDistance());
        } else {
            Log.e("tag", "线路规划失败");
        }
    }

天气查询

 /**
     * 天气查询
     */
    private void weatherSearch() {
        //检索参数为城市和天气类型,实况天气为WEATHER_TYPE_LIVE、天气预报为WEATHER_TYPE_FORECAST
        WeatherSearchQuery mquery = new WeatherSearchQuery("北京", WeatherSearchQuery.WEATHER_TYPE_LIVE);
        WeatherSearch mweathersearch = new WeatherSearch(this);
        mweathersearch.setOnWeatherSearchListener(this);
        mweathersearch.setQuery(mquery);
        mweathersearch.searchWeatherAsyn(); //异步搜索
    }

天气查询回调

 //天气查询回调
    @Override
    public void onWeatherLiveSearched(LocalWeatherLiveResult weatherLiveResult, int rCode) {
        if (rCode == 1000) {
            if (weatherLiveResult != null && weatherLiveResult.getLiveResult() != null) {
                LocalWeatherLive weatherlive = weatherLiveResult.getLiveResult();
                Log.e("tag", weatherlive.getReportTime() + "发布");
                Log.e("tag", "天气:" + weatherlive.getWeather());
                Log.e("tag", "温度:" + weatherlive.getTemperature());
                Log.e("tag", "风力:" + weatherlive.getWindDirection() + "风     " + weatherlive.getWindPower() + "级");
                Log.e("tag", "湿度:" + weatherlive.getHumidity() + "%");
            } else {
                Log.e("tag", "没有找到结果");
            }
        } else {
            Log.e("tag", "错误码=" + rCode);
        }

    }





你可能感兴趣的:(高德地图)