模吧

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

2564查看 | 5回复

航拍编程计划:让你的航拍照片变地图(三分之一)

[复制链接]
发表于 2017-3-24 10:33:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 @芋头 于 2017-3-24 10:36 编辑

路线检索:驾车+步行+公交换乘
1、实现目的:广州市内,广工到广州塔的驾车路线
实现过程:
搜索:
1、初始化search:search.init(manager, listener);
2、设置驾车路线规划策略:
search.setDrivingPolicy(MKSearch.ECAR_DIS_FIRST);
3、设置驾车路线搜索:
search.drivingSearch(“广州”, start, “广州”, end);
处理结果
4、设置listener进行数据的处理:
a:实例化RouteOverlay的对象,然后对该对象设置数据
overlay.setData(result.getPlan(0).getRoute(0));获得第一个方案的第一个路线。
b:将overlay添加到overlays集合,然后刷新mapView。
实现效果:


航拍编程计划:让你的航拍照片变地图(三分之一) 照片,计划 作者:@芋头 5840
DrivingSearchDemo.Java
1
  1. package huaxa.it.map;

  2. import com.baidu.mapapi.map.RouteOverlay;
  3. import com.baidu.mapapi.search.MKDrivingRouteResult;
  4. import com.baidu.mapapi.search.MKPlanNode;
  5. import com.baidu.mapapi.search.MKRoute;
  6. import com.baidu.mapapi.search.MKRoutePlan;
  7. import com.baidu.mapapi.search.MKSearch;

  8. import android.os.Bundle;
  9. import android.widget.Toast;

  10. /**
  11. * @项目名: BaiduMap
  12. * @包名: huaxa.it.map
  13. * @类名: DrivingSearchDemo
  14. * @创建者: 黄夏莲
  15. * @创建时间: 2016年12月3日 ,上午10:00:48
  16. *
  17. * @描述: TODO
  18. */
  19. public class DrivingSearchDemo extends BaseActivity
  20. {
  21.     private MySearchListener    listener;

  22.     @Override
  23.     protected void onCreate(Bundle savedInstanceState)
  24.     {
  25.         super.onCreate(savedInstanceState);
  26.         search();
  27.     }

  28.     private void search()
  29.     {
  30.         listener = new MySearchListener();
  31.         search.init(manager, listener);
  32.         // ********驾车路线规划策略************
  33.         // setDrivingPolicy
  34.         // public int setDrivingPolicy(int policy)
  35.         // 设置驾车路线规划策略. 参数为策略常量。对下次搜索有效
  36.         // 参数:
  37.         // policy - ECAR_TIME_FIRST:时间优先;ECAR_DIS_FIRST:距离最短;ECAR_FEE_FIRST:费用最少
  38.         // 返回:
  39.         // 成功返回0,否则返回-1
  40.         search.setDrivingPolicy(MKSearch.ECAR_DIS_FIRST);
  41.         // **********驾乘路线搜索***************
  42.         // public int drivingSearch(String startCity,MKPlanNode start,String
  43.         // endCity,MKPlanNode end)
  44.         // 驾乘路线搜索.
  45.         // 异步函数,返回结果在MKSearchListener里的onGetDrivingRouteResult方法通知
  46.         // 参数:
  47.         // startCity - 起点所在城市,起点为坐标时可不填
  48.         // start - 搜索的起点,可以为坐标,名称任一种
  49.         // endCity - 终点所在城市,终点为坐标时可不填
  50.         // end - 搜索的终点,可以为坐标,名称任一种
  51.         // 返回:
  52.         // 成功返回0,否则返回-1
  53.         // 补充:MKPlanNode的属性
  54.         // 1、String name结点名称
  55.         // 2、GeoPoint pt结点坐标
  56.         MKPlanNode start = new MKPlanNode();
  57.         start.pt = geoPoint;
  58.         MKPlanNode end = new MKPlanNode();
  59.         end.name = "广州塔";
  60.         search.drivingSearch("广州", start, "广州", end);
  61.     }

  62.     private class MySearchListener extends BaseAdapter
  63.     {
  64.         @Override
  65.         public void onGetDrivingRouteResult(MKDrivingRouteResult result,
  66.                 int iError)
  67.         {

  68.             // MKDrivingRouteResult() getAddrResult() 返回起点或终点的地址信息结果,
  69.             // MKPlanNode getEnd() 获取路线终站,
  70.             // int getNumPlan() 获取方案数目,
  71.             // MKRoutePlan getPlan(int index) 获取第index个方案 ,
  72.             // MKPlanNode getStart() 获取路线起点

  73.             if (result != null && iError == 0)
  74.             {
  75.                 // 结果处理
  76.                 RouteOverlay overlay = new RouteOverlay(DrivingSearchDemo.this,
  77.                         mapView);
  78.                 // 获得路线信息
  79.                 if (result.getNumPlan() > 0)
  80.                 {
  81.                     overlay.setData(result.getPlan(0).getRoute(0));
  82.                     mapView.getOverlays().add(overlay);
  83.                     mapView.refresh();
  84.                 }

  85.             } else
  86.             {
  87.                 Toast.makeText(getApplicationContext(), "没有搜索到结果",
  88.                         Toast.LENGTH_LONG).show();
  89.             }
  90.             super.onGetDrivingRouteResult(result, iError);
  91.         }
  92.     }
  93. }
复制代码

2、实现目的:路线检索+设置途经点
修改代码:
实现效果:
航拍编程计划:让你的航拍照片变地图(三分之一) 照片,计划 作者:@芋头 4265
途径中山大学。
  1. private void search()
  2.     {
  3.         listener = new MySearchListener();
  4.         search.init(manager, listener);
  5.         // ********驾车路线规划策略************
  6.         // setDrivingPolicy
  7.         // public int setDrivingPolicy(int policy)
  8.         // 设置驾车路线规划策略. 参数为策略常量。对下次搜索有效
  9.         // 参数:
  10.         // policy - ECAR_TIME_FIRST:时间优先;ECAR_DIS_FIRST:距离最短;ECAR_FEE_FIRST:费用最少
  11.         // 返回:
  12.         // 成功返回0,否则返回-1
  13.         search.setDrivingPolicy(MKSearch.ECAR_DIS_FIRST);
  14.         // **********驾乘路线搜索***************
  15.         // public int drivingSearch(String startCity,MKPlanNode start,String
  16.         // endCity,MKPlanNode end)
  17.         // 驾乘路线搜索.
  18.         // 异步函数,返回结果在MKSearchListener里的onGetDrivingRouteResult方法通知
  19.         // 参数:
  20.         // startCity - 起点所在城市,起点为坐标时可不填
  21.         // start - 搜索的起点,可以为坐标,名称任一种
  22.         // endCity - 终点所在城市,终点为坐标时可不填
  23.         // end - 搜索的终点,可以为坐标,名称任一种
  24.         // 返回:
  25.         // 成功返回0,否则返回-1
  26.         // 补充:MKPlanNode的属性
  27.         // 1、String name结点名称
  28.         // 2、GeoPoint pt结点坐标
  29.         MKPlanNode start = new MKPlanNode();
  30.         start.pt = geoPoint;
  31.         MKPlanNode end = new MKPlanNode();
  32.         end.name = "广州塔";
  33. //      search.drivingSearch("广州", start, "广州", end);

  34.         // public int drivingSearch(String startCity,
  35.         // MKPlanNode start,
  36.         // String endCity,
  37.         // MKPlanNode end,
  38.         // ArrayList<MKWpNode> wpNodes)
  39.         // 驾车路线搜索,可设置途经点
  40.         // 异步函数,返回结果在MKSearchListener里的onGetDrivingRouteResult方法通知
  41.         //
  42.         // 参数:
  43.         // startCity - 起点所在城市,起点为坐标时可不填
  44.         // start - 搜索的起点,可以为坐标,名称任一种
  45.         // endCity - 终点所在城市,终点为坐标时可不填
  46.         // end - 搜索的终点,可以为坐标,名称任一种
  47.         // wpNodes - 途经点数据
  48.         // 返回:
  49.         // 成功返回0,否则返回-1
  50.         ArrayList<MKWpNode> wpNodes = new ArrayList<MKWpNode>();
  51.         MKWpNode node = new MKWpNode();
  52.         node.city = "广州";
  53.         node.name = "中山大学";
  54.         wpNodes.add(node);
  55.         search.drivingSearch("广州", start, "广州", end, wpNodes);

  56.     }
复制代码


3、实现目的:广州市内,广工到广州塔的步行路线
实现过程:同上
实现效果:
航拍编程计划:让你的航拍照片变地图(三分之一) 照片,计划 作者:@芋头 9477
WalkingSearchDemo.java
  1. package huaxa.it.map;


  2. import android.os.Bundle;
  3. import android.widget.Toast;

  4. import com.baidu.mapapi.map.RouteOverlay;
  5. import com.baidu.mapapi.search.MKDrivingRouteResult;
  6. import com.baidu.mapapi.search.MKPlanNode;
  7. import com.baidu.mapapi.search.MKSearch;
  8. import com.baidu.mapapi.search.MKWalkingRouteResult;

  9. /**
  10. * @项目名: BaiduMap
  11. * @包名: huaxa.it.map
  12. * @类名: WalkingSearchDemo
  13. * @创建者: 黄夏莲
  14. * @创建时间: 2016年12月3日 ,下午2:20:29
  15. *
  16. * @描述: TODO
  17. */

  18. public class WalkingSearchDemo extends BaseActivity
  19. {
  20.     private MySearchListener    listener;

  21.     @Override
  22.     protected void onCreate(Bundle savedInstanceState)
  23.     {
  24.         super.onCreate(savedInstanceState);
  25.         search();
  26.     }

  27.     private void search()
  28.     {
  29.         listener = new MySearchListener();
  30.         search.init(manager, listener);
  31.         // **********驾乘路线搜索***************
  32.         // public int walkingSearch(String startCity,
  33.         // MKPlanNode start,
  34.         // String endCity,
  35.         // MKPlanNode end)
  36.         // 步行路线搜索.
  37.         // 异步函数,返回结果在MKSearchListener里的onGetWalkingRouteResult方法通知
  38.         //
  39.         // 参数:
  40.         // startCity - 起点所在城市,起点为坐标时可不填
  41.         // start - 搜索的起点,可以为坐标,名称任一种
  42.         // endCity - 终点所在城市,终点为坐标时可不填
  43.         // end - 搜索的终点,可以为坐标,名称任一种
  44.         // 返回:
  45.         // 成功返回0,否则返回-1
  46.         MKPlanNode start = new MKPlanNode();
  47.         start.pt = geoPoint;
  48.         MKPlanNode end = new MKPlanNode();
  49.         end.name = "广州塔";
  50.         search.walkingSearch("广州", start, "广州", end);
  51.     }

  52.     private class MySearchListener extends BaseAdapter
  53.     {
  54.         @Override
  55.         public void onGetWalkingRouteResult(MKWalkingRouteResult result,
  56.                 int iError)
  57.         {
  58.             // TODO Auto-generated method stub
  59.             if (result != null && iError == 0)
  60.             {
  61.                 // 结果处理
  62.                 RouteOverlay overlay = new RouteOverlay(WalkingSearchDemo.this,
  63.                         mapView);
  64.                 // 获得路线信息
  65.                 if (result.getNumPlan() > 0)
  66.                 {
  67.                     overlay.setData(result.getPlan(0).getRoute(0));
  68.                     mapView.getOverlays().add(overlay);
  69.                     mapView.refresh();
  70.                 }

  71.             } else
  72.             {
  73.                 Toast.makeText(getApplicationContext(), "没有搜索到结果",
  74.                         Toast.LENGTH_LONG).show();
  75.             }



  76.             super.onGetWalkingRouteResult(result, iError);
  77.         }
  78.     }
  79. }
复制代码

4、实现目的:广州市内,广工到广州塔的公交车路线
TransitSearchDemo.java
实现效果:
航拍编程计划:让你的航拍照片变地图(三分之一) 照片,计划 作者:@芋头 879
航拍编程计划:让你的航拍照片变地图(三分之一) 照片,计划 作者:@芋头 3184
  1. package huaxa.it.map;


  2. import android.os.Bundle;
  3. import android.widget.Toast;

  4. import com.baidu.mapapi.map.RouteOverlay;
  5. import com.baidu.mapapi.map.TransitOverlay;
  6. import com.baidu.mapapi.search.MKDrivingRouteResult;
  7. import com.baidu.mapapi.search.MKPlanNode;
  8. import com.baidu.mapapi.search.MKSearch;
  9. import com.baidu.mapapi.search.MKTransitRouteResult;

  10. /**
  11. * @项目名: BaiduMap
  12. * @包名: huaxa.it.map
  13. * @类名: TransitSearchDemo
  14. * @创建者: 黄夏莲
  15. * @创建时间: 2016年12月3日 ,下午2:20:29
  16. *
  17. * @描述: TODO
  18. */

  19. public class TransitSearchDemo extends BaseActivity
  20. {
  21.     private MySearchListener    listener;

  22.     @Override
  23.     protected void onCreate(Bundle savedInstanceState)
  24.     {
  25.         super.onCreate(savedInstanceState);
  26.         search();
  27.     }

  28.     private void search()
  29.     {
  30.         listener = new MySearchListener();
  31.         search.init(manager, listener);
  32.         // ********公车路线规划策略************
  33.         // public int setTransitPolicy(int policy)
  34.         // 设置路线规划策略.
  35.         // 参数为策略常量。对下次搜索有效
  36.         //
  37.         // 参数:
  38.         // policy -
  39.         // EBUS_TIME_FIRST:时间优先;EBUS_TRANSFER_FIRST:少换乘;EBUS_WALK_FIRST:少步行;EBUS_NO_SUBWAY:
  40.         // 非地铁
  41.         // 返回:
  42.         // 成功返回0,否则返回-1
  43.         search.setTransitPolicy(MKSearch.EBUS_TRANSFER_FIRST);
  44.         // **********驾乘路线搜索***************
  45.         //  public int transitSearch(String city,
  46.         // MKPlanNode start,
  47.         // MKPlanNode end)
  48.         // 公交路线搜索.
  49.         // 异步函数,返回结果在MKSearchListener里的onGetTransitRouteResult方法通知
  50.         //
  51.         // 参数:
  52.         // city - 城市名,用于在哪个城市内进行检索(必须填写)
  53.         // start - 检索的起点,可通过关键字,坐标,两种方式指定
  54.         // end - 检索的终点,可通过关键字,坐标,两种方式指定
  55.         // 返回:
  56.         // 成功返回0,否则返回-1
  57.         MKPlanNode start = new MKPlanNode();
  58.         start.pt = geoPoint;
  59.         MKPlanNode end = new MKPlanNode();
  60.         end.name = "广州塔";
  61.         search.transitSearch("广州", start, end);
  62.     }

  63.     private class MySearchListener extends BaseAdapter
  64.     {
  65.         @Override
  66.         public void onGetTransitRouteResult(MKTransitRouteResult result,
  67.                 int iError)
  68.         {
  69.             if (result != null && iError == 0)
  70.             {
  71.                 // 结果处理
  72.                 TransitOverlay overlay = new TransitOverlay(TransitSearchDemo.this, mapView);
  73.                 if (result.getNumPlan() > 0)
  74.                 {
  75.                     overlay.setData(result.getPlan(0));
  76.                     mapView.getOverlays().add(overlay);
  77.                     mapView.refresh();
  78.                 }

  79.             } else
  80.             {
  81.                 Toast.makeText(getApplicationContext(), "没有搜索到结果",
  82.                         Toast.LENGTH_LONG).show();
  83.             }
  84.             super.onGetTransitRouteResult(result, iError);
  85.         }
  86.     }
  87. }
复制代码




发表于 2017-3-24 11:53:28 | 显示全部楼层
没看懂
发表于 2017-3-24 12:44:20 | 显示全部楼层
楼主,你是广工的吗?
发表于 2017-3-24 12:44:28 | 显示全部楼层
虽然我没看懂你想表达什么意思?
 楼主| 发表于 2017-3-24 13:17:16 | 显示全部楼层
质的飞跃 发表于 2017-3-24 12:44
虽然我没看懂你想表达什么意思?

利用无人机航测图片替代百度地图实现便民服务
发表于 2017-3-26 23:17:45 | 显示全部楼层
貌高大上啊!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|关于模吧|APP下载|广告报价|小黑屋|手机版|企业会员|商城入驻|联系我们|模吧 ( 冀公网安备13080502000084号 )

© 2013-2020 Moz8.com 模吧,玩出精彩!