Android 高德地图步行路线规划 - RouteSearchV2.ShowFields 代码示例
以下是一个使用高德地图Android SDK进行步行路线规划的示例代码,展示如何使用RouteSearchV2.ShowFields获取详细的步行路径信息:
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import com.amap.api.maps.AMap;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.LatLng;
import com.amap.api.services.core.LatLonPoint;
import com.amap.api.services.route.RouteResult;
import com.amap.api.services.route.WalkPath;
import com.amap.api.services.route.WalkRouteResult;
import com.amap.api.services.route.WalkStep;
import com.amap.api.services.route.WalkRouteQuery;
import com.amap.api.services.route.WalkRouteSearch;
import com.amap.api.services.route.WalkStep;
import com.amap.api.services.route.WalkStepDetector;
import com.amap.api.services.route.WalkStepDetector.StepDetectorListener;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements WalkRouteSearch.OnRouteSearchListener {
private MapView mapView;
private AMap aMap;
private WalkRouteSearch walkRouteSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mapView = (MapView) findViewById(R.id.mapView);
mapView.onCreate(savedInstanceState);
aMap = mapView.getMap();
// 创建步行路径规划查询对象
walkRouteSearch = new WalkRouteSearch(this);
walkRouteSearch.setRouteSearchListener(this);
// 设置起点和终点
LatLonPoint startPoint = new LatLonPoint(39.993743, 116.472995); // 起点坐标
LatLonPoint endPoint = new LatLonPoint(39.985576, 116.481288); // 终点坐标
// 创建步行路径规划查询参数
WalkRouteQuery query = new WalkRouteQuery(new RouteSearch.FromAndTo(startPoint, endPoint));
query.setShowFields(RouteSearchV2.ShowFields.ALL); // 设置返回步行路径规划结果包含全部信息
walkRouteSearch.calculateWalkRouteAsyn(query);
}
@Override
public void onWalkRouteSearched(WalkRouteResult result, int errorCode) {
if (errorCode == 1000) {
if (result != null && result.getPaths() != null && result.getPaths().size() > 0) {
WalkPath walkPath = result.getPaths().get(0); // 获取第一条步行路径
List<WalkStep> walkSteps = walkPath.getSteps(); // 获取步行路径的详细步骤列表
for (WalkStep walkStep : walkSteps) {
String instruction = walkStep.getInstruction(); // 获取步行路径的详细步骤说明
Log.d('Step', instruction);
}
}
}
}
@Override
protected void onResume() {
super.onResume();
mapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mapView.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
}
}
代码解析
- 创建
WalkRouteSearch对象并设置监听器,监听步行路线规划结果。 - 设置起点和终点坐标,示例代码中使用的是北京市中心的两个坐标。
- 创建
WalkRouteQuery对象,并使用setShowFields(RouteSearchV2.ShowFields.ALL)设置返回所有步行路径规划结果信息。 - 调用
calculateWalkRouteAsyn(query)方法开始异步计算步行路径规划。 - 在
onWalkRouteSearched方法中,判断结果是否成功,并获取第一条步行路径信息。 - 遍历所有步行步骤,并打印每个步骤的说明信息。
注意事项
- 上述代码中的起点和终点坐标是示例坐标,实际使用时需要根据实际情况进行替换。
- 需要在
AndroidManifest.xml文件中添加高德地图的权限和申请的AppKey。 - 为了保证代码的完整性和可读性,请将代码完整的复制到您的项目中。
通过以上代码,您可以轻松地使用高德地图Android SDK进行步行路线规划,并获取详细的步行路径信息。
原文地址: https://www.cveoy.top/t/topic/pjWi 著作权归作者所有。请勿转载和采集!