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