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

地理编码和反地理编码

 /**
     * 地理编码和反地理编码
     */
    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);
        }

    }





  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
高德地图的批量逆地理编码可以使用其Web API实现。以下是实现的大致步骤: 1. 准备需要逆地理编码的经纬度坐标数据。 2. 通过高德地图Web API发送HTTP请求,获取逆地理编码结果。 3. 解析返回的JSON格式数据,提取地址信息。 4. 保存地址信息到文件或数据库中。 以下是一个Python示例代码,实现了高德地图批量逆地理编码的功能: ```python import requests import json # 高德地图Web API的请求URL url = 'https://restapi.amap.com/v3/geocode/regeo' # 高德地图Web API的开发者密钥 key = 'your_api_key' # 待逆地理编码的经纬度坐标数据 coordinates = [ {'lng': 116.481488, 'lat': 39.990464}, {'lng': 116.417901, 'lat': 39.921988}, {'lng': 121.47876, 'lat': 31.238176} ] # 批量逆地理编码 for coord in coordinates: params = { 'location': '{},{}'.format(coord['lng'], coord['lat']), 'key': key, 'output': 'JSON', 'radius': 1000, 'extensions': 'base' } response = requests.get(url, params) result = json.loads(response.text) if result['status'] == '1': address = result['regeocode']['formatted_address'] print(address) else: print('逆地理编码失败') ``` 在上述示例代码中,需要将`your_api_key`替换为自己的高德地图Web API开发者密钥。另外,`coordinates`变量中的经纬度坐标可以根据实际情况进行修改。最后,将逆地理编码结果保存到文件或数据库中可以使用Python内置的文件操作或数据库API实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值