调用高德地图、百度地图客户端(Android版)


今天项目中要调用百度地图和高德地图的导航功能,上网搜了很多资料,介绍的都很局限,当然最好的学习方式是查看官方文档了。

百度地图URI:

http://lbsyun.baidu.com/index.php?title=uri/api/android

高德地图URI:

http://lbs.amap.com/api/amap-mobile/guide/android/navigation

当时搜资料时高德地图URI网上给的是过时,坑的我在开发者平台上找了好久。。。。



ok,我们现在来看看效果图和参数

百度地图:



高德地图:



言归正传,开始分享我的代码了,我写了一个工具类MapUtil,比较简单,各位可以根据上面看到的参数自行增减

public class MapUtil {    /**     * 获取打开百度地图应用     * @param context 上下文对象     * @param originLat 起点经度     * @param originLon 起点纬度     * @param desLat 终点经度     * @param desLon 终点纬度     * @return     *     * mode:导航模式,可选transit(公交)、driving(驾车)、walking(步行)和riding(骑行).默认:driving     *     */    public static void getBaiduMapUri(Context context,String originLat, String originLon,String desLat, String desLon){      String uri="baidumap://map/direction?origin=name:我的位置|latlng:"+originLat+","+originLon+"&destination=name:目的地|latlng:"+desLat+","+desLon+"&mode=driving";      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));      intent.setPackage("com.baidu.BaiduMap");      context.startActivity(intent);    }    /**     * 启动高德App进行导航     *     * @param slat 起点纬度。如果不填写此参数则自动将用户当前位置设为起点纬度。     * @param slon 起点经度。如果不填写此参数则自动将用户当前位置设为起点经度。     * @param dlat 终点纬度     * @param dlon 终点经度     *     *  dev 必填 是否偏移(0:lat 和 lon 是已经加密后的,不需要国测加密; 1:需要国测加密)     *  t 必填 t = 0(驾车)= 1(公交)= 2(步行)= 3(骑行)= 4(火车)= 5(长途客车)(骑行仅在V788以上版本支持)     *     */    public static  void getGaoDeMapUri(Context context, String slat , String slon ,String dlat , String dlon){       String uri="amapuri://route/plan/?slat="+slat+"&slon="+slon+"&sname=我的位置&dlat="+dlat+"&dlon="+dlon+"&dname=目的地&dev=0&t=0";        Intent intent = new Intent("android.intent.action.VIEW", android.net.Uri.parse(uri));        intent.setPackage("com.autonavi.minimap");        context.startActivity(intent);    }    /**     * 根据包名检测某个APP是否安装     * @param packageName 包名     * @return true 安装 false 没有安装     */    public static boolean isInstallByRead(String packageName) {        return new File("/data/data/" + packageName).exists();    }    /**     * 百度地图定位经纬度转高德经纬度     * @param bd_lat     * @param bd_lon     * @return     */    public static double[] bdToGaoDe(double bd_lat, double bd_lon) {        double[] gd_lat_lon = new double[2];        double PI = 3.14159265358979324 * 3000.0 / 180.0;        double x = bd_lon - 0.0065, y = bd_lat - 0.006;        double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * PI);        double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * PI);        gd_lat_lon[0] = z * Math.cos(theta);        gd_lat_lon[1] = z * Math.sin(theta);        return gd_lat_lon;    }    /**     * 高德地图定位经纬度转百度经纬度     * @param gd_lon     * @param gd_lat     * @return     */    public static double[] gaoDeToBaidu(double gd_lon, double gd_lat) {        double[] bd_lat_lon = new double[2];        double PI = 3.14159265358979324 * 3000.0 / 180.0;        double x = gd_lon, y = gd_lat;        double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * PI);        double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * PI);        bd_lat_lon[0] = z * Math.cos(theta) + 0.0065;        bd_lat_lon[1] = z * Math.sin(theta) + 0.006;        return bd_lat_lon;    }}

使用说明:

 //调用百度地图客户端  if(MapUtil.isInstallByRead("com.baidu.BaiduMap")){      MapUtil.getBaiduMapUri(this,"39.98871 ","116.43234","39.91441","116.40405");  }else{      Toast.makeText(MainActivity.this, "您尚未安装百度地图", Toast.LENGTH_LONG).show();      Uri uri = Uri.parse("market://details?id=com.baidu.BaiduMap");      Intent intent = new Intent(Intent.ACTION_VIEW, uri);      startActivity(intent);  }//调用高德地图客户端 if (MapUtil.isInstallByRead("com.autonavi.minimap")){                           MapUtil.getGaodeMapUri(this,"39.92848272","116.39560823","39.98848272","116.47560823"); }else{     Toast.makeText(MainActivity.this, "您尚未安装高德地图", Toast.LENGTH_LONG).show();     Uri uri = Uri.parse("market://details?id=com.autonavi.minimap");     Intent intent = new Intent(Intent.ACTION_VIEW, uri);     startActivity(intent);}

效果图

已安装百度地图和高德地图




百度地图




高德地图





未安装百度地图和高德地图(调用手机的应用商店进行下载)












好了,就分享到这了!!!

更多相关文章

  1. Android百度地图将经纬度转换为地址信息
  2. Android中调用外部地图程序
  3. 深入学习百度地图Android(安卓)SDK v4.0.0【第九关】检索功能
  4. flutter高德地图使用
  5. Android(安卓)高德地图 INVALID_USER_KEY 错误解决方案
  6. ArcGIS for Android示例解析之离线地图-----LocalTiledLayer
  7. Android(安卓)Studio 2.3.2 下载 - 百度网盘
  8. Android版百度地图的移动定位开发过程
  9. Android(安卓)实现模拟地图定位功能

随机推荐

  1. Android(安卓)NDK学习笔记
  2. 用Xamarin 实现园友的 :Android浮动小球与
  3. Android漫游记(1)---内存映射镜像(memory
  4. Android中view重绘问题
  5. Android(安卓)面试题总结之Android(安卓)
  6. Android的Camera架构介绍
  7. Android创始人安迪 罗宾(Andy Rubin)离职
  8. android之Menu
  9. Android(安卓)应用程序基础
  10. Android(安卓)(SQLite 数据库与ContentPr