高德地图多点线路规划

这篇博客介绍了如何在Android应用中使用高德地图实现多点线路规划,并且详细讲解了如何根据途经点到起点的距离进行排序。同时,作者还分享了自定义Marker的方法,包括InfoWindow和Marker的监听,以及如何在地图上绘制标记。
摘要由CSDN通过智能技术生成
public class MyMapActivity extends Activity implements AMap.OnInfoWindowClickListener ,RouteSearch.OnRouteSearchListener ,AMap.OnMarkerClickListener{
    private MapView map;
    private AMap aMap;
    private UiSettings uiSettings;
    private CameraUpdate mUpdate;
    private ArrayList<MapInfo> list,lists,jlist;  //途经点集合
    private ArrayList<LatLonPoint> list1;     
    private DriveRouteResult driveRouteResult;// 驾车模式查询结果
    private int drivingMode = RouteSearch.DrivingDefault;// 驾车默认模式
    private RouteSearch routeSearch;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        setContentView(R.layout.activity_my_map);
        map = (MapView)findViewById(R.id.map);

        map.onCreate(savedInstanceState);

       //(模拟数据)得到途经点集合

        list=new ArrayList<>();
        list.add(new MapInfo("4", 39.8530620000, 116.3747240000, "鸿运水果烟酒超市", "详细地址详细地址5555"));
        list.add(new MapInfo("6", 39.8516080000, 116.3734790000, "世纪华联超市", "详细地址详细地址7777"));
        list.add(new MapInfo("10",39.844693, 116.369901, "鲜花婚庆水果", "详细地址详细地址1010"));
        list.add(new MapInfo("12",39.84237, 116.381086, "街角蛋糕", "详细地址详细地址66666"));
        list.add(new MapInfo("16",39.854152, 116.415689, "北京同仁堂第二中医院", "详细地址详细地址222"));

        list.add(new MapInfo("17",39.860975, 116.412025, "北京市益华食品厂", "详细地址详细地址3333"));

        initdata();//根据途经点到起点的距离进行排序

        init();  //初始化地图


       //得到途经点坐标

        list1=new ArrayList<>();
        for (int i=0;i<list.size();i++){
            list1.add(new LatLonPoint(list.get(i).getLat(),list.get(i).getLng()));

        }

      //InfoWindow  和 Marker 监听 以及线路规划监听

        aMap.setOnInfoWindowClickListener(this);
        aMap.setOnMarkerClickListener(this);

        routeSearch = new RouteSearch(this);

        routeSearch.setRouteSearchListener(this);

        final RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(new LatLonPoint(39.854648,116.367852), new     LatLonPoint(39.833673,116.387424)); //设置起点和终点


        RouteSearch.DriveRouteQuery query = new RouteSearch.DriveRouteQuery(fromAndTo, drivingMode, list1, null, "");// 第一个参数表示路径规划的起点和终点,第二个参数表示驾车模式,第三个参数表示途经点,第四个参数表示避让区域,第五个参数表示避让道路
        routeSearch.calculateDriveRouteAsyn(query);// 异步路径规划驾车模式查询


    }

/**

* 根据途经点到起点的距离进行排序

*/

public  void  initdata(){

       jlist=new ArrayList<>();
        for (int i=0;i<list.size();i++){

            MapInfo mapInfo=new MapInfo();

            float[] results=new float[1];
            Location.distanceBetween(39.854648, 116.367852, list.get(i).getLat(), list.get(i).getLng(), results);

            mapInfo.setJuli(results[0]);

            mapInfo.setUid(list.get(i).getUid());
            jlist.add(mapInfo);
         

        }

        double temp;
        String str;
        for(int i = jlist.size() - 1; i >= 0; i --) {
            for (int j = 0; j < i; j+
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值