高德地图 Android SDK 是一套地图开发调用接口,开发者可以轻松地在自己的Android应用中加入高德地图相关的功能,包括:地图显示(含室内、室外地图)、与地图交互、在地图上绘制、兴趣点搜索、地理编码、离线地图等功能。
下面这个实例演示了在Android手机高德地图上查询驾车线路沿途的加油站。
实例功能
此实例主要通过使用高德地图SDK的RoutePOISearchQuery和RoutePOISearch. RoutePOISearchType.TypeGasStation,实现根据指定的驾车线路搜索沿途的加油站。当实例运行之后,如果在“起点纬度经度值: ”输入框中输入重庆北站的纬度和经度值“29.60957,106.551201”,在“终点纬度经度值: ”输入框中输入重庆朝天门的纬度和经度值“29.563361,106.589421”,然后单击“获取最佳驾车线路”按钮,将用粗红线在高德地图上绘制重庆北站到重庆朝天门的驾车线路; 单击“搜索沿途加油站”按钮,将用气泡指示该驾车线路沿途的加油站; 单击气泡,显示该加油站的名称,如图1(a)所示。如果在“起点纬度经度值: ”输入框中输入重庆人和的纬度和经度值“29.619516,106.527946”,在“终点纬度经度值: ”输入框中输入重庆南坪的纬度和经度值“29.52599,106.569885”,然后单击“获取最佳驾车线路”按钮,将用粗红线在高德地图上绘制重庆人和到重庆南坪的驾车线路; 单击“搜索沿途加油站”按钮,将用气泡指示该驾车线路沿途的加油站; 单击气泡,显示该加油站的名称,如图1(b)所示。
■ 图1
实现代码
public void onClickButton1(View v) { //响应单击按钮“获取最佳驾车线路”
EditText myFromLatlng=(EditText)findViewById(R.id.myFromLatlng);
EditText myToLatlng=(EditText)findViewById(R.id.myToLatlng);
String myFromPoint=myFromLatlng.getText().toString();
String myToPoint=myToLatlng.getText().toString();
double myFromLat=
Double.parseDouble(myFromPoint.substring(0, myFromPoint.indexOf(",")));
double myFromLng=
Double.parseDouble(myFromPoint.substring(myFromPoint.indexOf(",")+1));
double myToLat=
Double.parseDouble(myToPoint.substring(0, myToPoint.indexOf(",")));
double myToLng=
Double.parseDouble(myToPoint.substring(myToPoint.indexOf(",")+1));
myFromLatLonPoint = new LatLonPoint(myFromLat,myFromLng);
myToLatLonPoint = new LatLonPoint(myToLat,myToLng);
RouteSearch myRouteSearch =new RouteSearch(this);
//添加线路规划搜索结果回调监听器
myRouteSearch.setRouteSearchListener(
new RouteSearch.OnRouteSearchListener(){
@Override
public void onBusRouteSearched(BusRouteResult busRouteResult, int i){ }
@Override
public void onDriveRouteSearched(DriveRouteResult driveRouteResult, int i){
PolylineOptions myPolylineOptions=new PolylineOptions();
//设置线路的颜色和宽度
myPolylineOptions.color(Color.RED).width(16);
//默认获取第一条驾车线路
DrivePath myDrivePath=driveRouteResult.getPaths().get(0);
//获取该条线路每一步信息
List<DriveStep> myDriveSteps=myDrivePath.getSteps();
for(int j=0;j<myDriveSteps.size();j++){
DriveStep myDriveStep=myDriveSteps.get(j);
//获取该段线路的关键点,并将其逐个绘制在高德地图上
List<LatLonPoint> myLatLonPoints=myDriveStep.getPolyline();
for(LatLonPoint stepPoint:myLatLonPoints){
myPolylineOptions.add(new LatLng(stepPoint.getLatitude(),
stepPoint.getLongitude()));
} }
myAMap.addPolyline(myPolylineOptions); //将驾车线路绘制在高德地图上
}
@Override
public void onWalkRouteSearched(WalkRouteResult walkRouteResult, int i){ }
@Override
public void onRideRouteSearched(RideRouteResult rideRouteResult, int i){ }
});
//使用RouteSearch.FromAndTo指定线路规划的起点和终点
RouteSearch.FromAndTo myFromAndTo=
new RouteSearch.FromAndTo(myFromLatLonPoint, myToLatLonPoint);
//通过RouteSearch.DriveRouteQuery封装线路查询信息,并指定线路起点和终点、
//线路优先使用策略、线路途经点、线路避让区域、线路避让道路等参数
RouteSearch.DriveRouteQuery myDriveRouteQuery=
new RouteSearch.DriveRouteQuery(myFromAndTo,
PathPlanningStrategy.DRIVING_DEFAULT,null,null,"");
//开始搜索最佳驾车线路
myRouteSearch.calculateDriveRouteAsyn(myDriveRouteQuery);
}
public void onClickButton2(View v) { //响应单击按钮“搜索沿途加油站”
RoutePOISearchQuery myRoutePOISearchQuery = new RoutePOISearchQuery(
myFromLatLonPoint, myToLatLonPoint,
RouteSearch.DrivingDefault, //搜索模式是驾车模式
RoutePOISearch.RoutePOISearchType.TypeGasStation,//搜索POI类型是加油站
250);
RoutePOISearch myRoutePOISearch =
new RoutePOISearch(this, myRoutePOISearchQuery);
myRoutePOISearch.setPoiSearchListener(
new RoutePOISearch.OnRoutePOISearchListener() {
@Override
public void onRoutePoiSearched(
RoutePOISearchResult routePOISearchResult, int i) {
List<RoutePOIItem> myRoutePOIItems = routePOISearchResult.getRoutePois();
for (RoutePOIItem item : myRoutePOIItems) {
//使用LatLng封装经纬度
LatLng myLatLng=new LatLng(item.getPoint().getLatitude(),
item.getPoint().getLongitude());
//在高德地图上指定位置添加标记,并设置标记自定义备注
myAMap.addMarker(new MarkerOptions()
.position(myLatLng).snippet(item.getTitle()));
} }
});
myRoutePOISearch.searchRoutePOIAsyn();
}
}
代码说明
上面这段代码在MyCode\MySampleI93\app\src\main\java\com\bin\luo\mysample\ MainActivity.java文件中。
补充说明
在测试代码时,必须保持网络畅通。
源代码下载
关注微信公众号,后台回复关键词 “Android App开发超实用代码261” 即可获得完整源代码。
参考书籍
扫码优惠购书
《Android App开发超实用代码集锦——jQuery Mobile+OpenCV+O》
ISBN:9787302589358
作者:罗帅、罗斌
定价:99元
问题描述+解决方案+真实源码+效果截图
介绍jQuery Mobile、OpenCV、OpenGL等在Android平台运行的应用
300个实例,提供完整源代码,边看边做边学