以下是一个使用高德地图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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录