Android 高德地图公交路线规划完整代码示例
以下是一个使用高德地图API进行公交路线规划的Android代码示例:
首先,确保在AndroidManifest.xml文件中添加以下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
接下来,在build.gradle文件中添加以下依赖项:
implementation 'com.amap.api:3dmap:latest_version'
implementation 'com.amap.api:busline:latest_version'
implementation 'com.amap.api:search:latest_version'
然后,在你的Activity中,添加以下代码:
import android.os.Bundle;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.amap.api.maps.MapView;
import com.amap.api.services.busline.BusLineQuery;
import com.amap.api.services.busline.BusLineSearch;
import com.amap.api.services.busline.BusStationSearch;
import com.amap.api.services.busline.BusStationSearch.OnBusStationSearchListener;
import com.amap.api.services.busline.BusStationQuery;
import com.amap.api.services.busline.BusStationResult;
import com.amap.api.services.busline.BusStationSearch;
import com.amap.api.services.core.AMapException;
import com.amap.api.services.core.LatLonPoint;
import com.amap.api.services.core.PoiItem;
import com.amap.api.services.route.BusPath;
import com.amap.api.services.route.BusRouteResult;
import com.amap.api.services.route.RouteSearch;
import com.amap.api.services.route.RouteSearch.OnRouteSearchListener;
public class MainActivity extends AppCompatActivity implements OnRouteSearchListener, OnBusStationSearchListener {
private MapView mapView;
private RouteSearch routeSearch;
private BusLineSearch busLineSearch;
private BusStationSearch busStationSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mapView = findViewById(R.id.mapView);
mapView.onCreate(savedInstanceState);
routeSearch = new RouteSearch(this);
routeSearch.setRouteSearchListener(this);
busLineSearch = new BusLineSearch(this, null);
busLineSearch.setOnBusLineSearchListener(new BusLineSearch.OnBusLineSearchListener() {
@Override
public void onBusLineSearched(BusLineResult busLineResult, int i) {
// 处理公交线路搜索结果
}
@Override
public void onBusStationSearched(BusStationResult busStationResult, int i) {
// 处理公交站点搜索结果
}
});
busStationSearch = new BusStationSearch(this, null);
busStationSearch.setOnBusStationSearchListener(this);
// 搜索公交路线
searchBusRoute();
}
private void searchBusRoute() {
// 创建公交路径规划查询
RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(
new LatLonPoint(39.90923, 116.397428), // 起点坐标
new LatLonPoint(39.99233, 116.397428) // 终点坐标
);
RouteSearch.BusRouteQuery query = new RouteSearch.BusRouteQuery(fromAndTo, RouteSearch.BUS_DEFAULT, '北京', 0);
routeSearch.calculateBusRouteAsyn(query);
}
@Override
public void onBusRouteSearched(BusRouteResult busRouteResult, int i) {
if (i == AMapException.CODE_AMAP_SUCCESS) {
if (busRouteResult != null && busRouteResult.getPaths() != null
&& busRouteResult.getPaths().size() > 0) {
BusPath busPath = busRouteResult.getPaths().get(0); // 获取第一条公交路径
// 处理公交路径结果
} else {
Toast.makeText(this, '未找到公交路径', Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(this, '公交路径规划失败:' + i, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onBusStationSearched(BusStationResult busStationResult, int i) {
if (i == AMapException.CODE_AMAP_SUCCESS) {
if (busStationResult != null && busStationResult.getBusStations() != null
&& busStationResult.getBusStations().size() > 0) {
BusStationItem busStationItem = busStationResult.getBusStations().get(0); // 获取第一个公交站点
// 处理公交站点结果
} else {
Toast.makeText(this, '未找到公交站点', Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(this, '公交站点搜索失败:' + i, Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onResume() {
super.onResume();
mapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mapView.onPause();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
}
@Override
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
}
这个示例代码中,首先创建了一个MapView实例,用于显示地图。然后,创建了RouteSearch、BusLineSearch和BusStationSearch实例,用于进行公交路径、公交线路和公交站点搜索。
在searchBusRoute()方法中,创建了一个公交路径规划查询,设置起点坐标和终点坐标,然后调用routeSearch.calculateBusRouteAsyn(query)方法开始进行公交路径规划。
在onBusRouteSearched()方法中,处理公交路径搜索结果。你可以在这个方法中获取到搜索结果的公交路径对象,进行进一步的处理。
在onBusStationSearched()方法中,处理公交站点搜索结果。你可以在这个方法中获取到搜索结果的公交站点对象,进行进一步的处理。
请注意,这只是一个简单的示例代码,你需要根据实际需求进行更详细的处理和逻辑编写。同时,你还需要替换latest_version为你使用的高德地图API的版本号。
原文地址: https://www.cveoy.top/t/topic/pk9N 著作权归作者所有。请勿转载和采集!