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