Advertisement

Android 使用第三方导航(如百度、高德、腾讯)及坐标转换

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
本文介绍在Android设备上使用百度地图、高德地图和腾讯地图等第三方应用进行导航的方法,并讲解如何实现不同坐标系统之间的转换。 ```java View.OnClickListener onClickListener = new View.OnClickListener() { @Override public void onClick(View view) { switch (view.getId()) { case R.id.baidu_btn: if (MDMUtil.appIsInstalled(getContext(), com.baidu.BaiduMap)) { // 传入指定应用包名 try { double[] gd_lat_lon; if(RoutingXModel.isGpslatlon){ gd_lat_lon = gaoDeToBaidu(xModel.poc_lon, xModel.poc_lat); } else{ gd_lat_lon = new double[2]; gd_lat_lon[0] = xModel.poc_lon; gd_lat_lon[1] = xModel.poc_lat; } Intent intent = Intent.getIntent(intent://map/direction? + destination=latlng: + gd_lat_lon[1] + , + gd_lat_lon[0]+ |name:我的目的地 + // 终点 &mode=driving& + // 导航路线方式 &src=appname#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); getContext().startActivity(intent); } catch (URISyntaxException e) { Log.e(intent, e.getMessage()); } } else { // 未安装 Toast.makeText(getContext(), 您尚未安装百度地图, Toast.LENGTH_LONG).show(); Uri uri = Uri.parse(market://details?id=com.baidu.BaiduMap); Intent intent = new Intent(Intent.ACTION_VIEW, uri); if (intent.resolveActivity(getContext().getPackageManager()) != null){ getContext().startActivity(intent); } } dismiss(); break; case R.id.gaode_btn: if (MDMUtil.appIsInstalled(getContext(), com.autonavi.minimap)) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); double[] gd_lat_lon; if(!RoutingXModel.isGpslatlon){ gd_lat_lon= bdToGaoDe(xModel.poc_lat,xModel.poc_lon); } else{ gd_lat_lon = new double[2]; gd_lat_lon[0] = xModel.poc_lon; gd_lat_lon[1] = xModel.poc_lat; } // 将功能Scheme以URI的方式传入data Uri uri = Uri.parse(androidamap://navi?sourceApplication=appname&poiname=fangheng⪫= + gd_lat_lon[1] + &lon;= + gd_lat_lon[0]+ &dev=0&style=4); intent.setData(uri); // 启动该页面即可 getContext().startActivity(intent); } else { Toast.makeText(getContext(), 您尚未安装高德地图, Toast.LENGTH_LONG).show(); Uri uri = Uri.parse(market://details?id=com.autonavi.minimap); Intent intent = new Intent(Intent.ACTION_VIEW, uri); if (intent.resolveActivity(getContext().getPackageManager()) != null){ getContext().startActivity(intent); } } dismiss(); break; case R.id.tencent_btn: Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); double[] gd_lat_lon ; if(!RoutingXModel.isGpslatlon){ gd_lat_lon= bdToGaoDe(xModel.poc_lat,xModel.poc_lon); } else{ gd_lat_lon = new double[2]; gd_lat_lon[0] = xModel.poc_lon; gd_lat_lon[1] = xModel.poc_lat; } // 将功能Scheme以URI的方式传入data Uri uri = Uri.parse(qqmap://map/routeplan?type=drive&to;=我的目的地&tocoord;= + gd_lat_lon[1]+ , + gd_lat_lon[0]); intent.setData(uri); if (intent.resolveActivity(getContext().getPackageManager()) != null) { // 启动该页面即可 getContext().startActivity(intent); } else { Toast.makeText(getContext(), 您尚未安装腾讯地图, Toast.LENGTH_LONG).show(); } dismiss(); break; case R.id.cancel_btn2: dismiss(); } } }; ```

全部评论 (0)

还没有任何评论哟~
客服
客服
  • Android 使
    优质
    本文介绍在Android设备上使用百度地图、高德地图和腾讯地图等第三方应用进行导航的方法,并讲解如何实现不同坐标系统之间的转换。 ```java View.OnClickListener onClickListener = new View.OnClickListener() { @Override public void onClick(View view) { switch (view.getId()) { case R.id.baidu_btn: if (MDMUtil.appIsInstalled(getContext(), com.baidu.BaiduMap)) { // 传入指定应用包名 try { double[] gd_lat_lon; if(RoutingXModel.isGpslatlon){ gd_lat_lon = gaoDeToBaidu(xModel.poc_lon, xModel.poc_lat); } else{ gd_lat_lon = new double[2]; gd_lat_lon[0] = xModel.poc_lon; gd_lat_lon[1] = xModel.poc_lat; } Intent intent = Intent.getIntent(intent://map/direction? + destination=latlng: + gd_lat_lon[1] + , + gd_lat_lon[0]+ |name:我的目的地 + // 终点 &mode=driving& + // 导航路线方式 &src=appname#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); getContext().startActivity(intent); } catch (URISyntaxException e) { Log.e(intent, e.getMessage()); } } else { // 未安装 Toast.makeText(getContext(), 您尚未安装百度地图, Toast.LENGTH_LONG).show(); Uri uri = Uri.parse(market://details?id=com.baidu.BaiduMap); Intent intent = new Intent(Intent.ACTION_VIEW, uri); if (intent.resolveActivity(getContext().getPackageManager()) != null){ getContext().startActivity(intent); } } dismiss(); break; case R.id.gaode_btn: if (MDMUtil.appIsInstalled(getContext(), com.autonavi.minimap)) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); double[] gd_lat_lon; if(!RoutingXModel.isGpslatlon){ gd_lat_lon= bdToGaoDe(xModel.poc_lat,xModel.poc_lon); } else{ gd_lat_lon = new double[2]; gd_lat_lon[0] = xModel.poc_lon; gd_lat_lon[1] = xModel.poc_lat; } // 将功能Scheme以URI的方式传入data Uri uri = Uri.parse(androidamap://navi?sourceApplication=appname&poiname=fangheng⪫= + gd_lat_lon[1] + &lon;= + gd_lat_lon[0]+ &dev=0&style=4); intent.setData(uri); // 启动该页面即可 getContext().startActivity(intent); } else { Toast.makeText(getContext(), 您尚未安装高德地图, Toast.LENGTH_LONG).show(); Uri uri = Uri.parse(market://details?id=com.autonavi.minimap); Intent intent = new Intent(Intent.ACTION_VIEW, uri); if (intent.resolveActivity(getContext().getPackageManager()) != null){ getContext().startActivity(intent); } } dismiss(); break; case R.id.tencent_btn: Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); double[] gd_lat_lon ; if(!RoutingXModel.isGpslatlon){ gd_lat_lon= bdToGaoDe(xModel.poc_lat,xModel.poc_lon); } else{ gd_lat_lon = new double[2]; gd_lat_lon[0] = xModel.poc_lon; gd_lat_lon[1] = xModel.poc_lat; } // 将功能Scheme以URI的方式传入data Uri uri = Uri.parse(qqmap://map/routeplan?type=drive&to;=我的目的地&tocoord;= + gd_lat_lon[1]+ , + gd_lat_lon[0]); intent.setData(uri); if (intent.resolveActivity(getContext().getPackageManager()) != null) { // 启动该页面即可 getContext().startActivity(intent); } else { Toast.makeText(getContext(), 您尚未安装腾讯地图, Toast.LENGTH_LONG).show(); } dismiss(); break; case R.id.cancel_btn2: dismiss(); } } }; ```
  • 经纬(适、谷歌、、搜狗)
    优质
    本工具提供精准的经纬度坐标互转服务,支持百度地图、高德地图、谷歌地图、腾讯地图及搜狗地图等多种平台间的坐标系统转换。 地图经纬度互换(支持百度、高德、谷歌、腾讯、搜狗)具备以下功能: 1. 通过经纬度获取地址信息。 2. 根据地址信息查询对应的经纬度。 3. 实现高德或谷歌地图的经纬度转换为百度地图的坐标系。 4. 将百度地图的经纬度数据转化为适用于高德和谷歌的地图系统。 该程序源自网络资源,初步浏览后认为可以使用,但未经过实际验证。具体的技术实现细节请参考相应的Java文件(com/john/util/LocationUtil.java)。
  • 为天地图
    优质
    本文介绍了一种方法,用于将高德地图和百度地图的坐标数据转换至天地图坐标系统,旨在帮助开发者实现不同地图服务之间的兼容与互换。 在IT行业特别是地理信息系统(GIS)领域内,不同的地图服务供应商通常采用各自的坐标系来表示地理位置。比如高德地图、百度地图以及天地图分别使用了它们特有的坐标系统。本段落将深入探讨如何从高德、百度的坐标系转换到天地图的坐标系,并分析这种转换的重要性。 理解坐标系统的概念是基础性的,它是指在地理信息系统中用于定义地球上任何位置的数学框架。WGS84(世界大地测量系统)是最常见的全球标准之一,在GPS等卫星导航系统中被广泛应用。然而,鉴于提高定位精度的需求,国内地图服务提供商通常会选择更适合中国地区的坐标系。比如高德和百度使用的是GCJ-02(国家测绘局02版),又称为火星坐标系;而天地图则采用CGCS2000(中国2000国家大地坐标系)。 从高德、百度的GCJ-02到天地图的CGCS2000转换通常涉及两个步骤:首先,将GCJ-02转为WGS84;随后再由WGS84转向CGCS2000。由于WGS84是全球广泛使用的坐标系统,因此它作为两者之间转换的桥梁显得尤为重要。 从GCJ-02到WGS84的转变通常采用双线性反解法或称作反加密算法来求得原始的WGS84坐标值。这个过程包括复杂的数学计算,如偏移量和位置移动等操作,并且需要编程实现浮点数运算及矩阵变换。 另一方面,从WGS84到CGCS2000的转换则需利用投影方法完成地理坐标向平面坐标的转变。鉴于WGS84基于地球椭球体模型而CGCS2000则是根据中国的地理位置特点建立起来的平面系统,高斯-克吕格投影是实现这种转换的一种常见方式。 实际应用中,这些转换操作可以通过Python、Java或C++等编程语言完成,并借助开源库如pyproj、gdal或geotiff来执行坐标变换。虽然经过转变后的数据误差较小,但依然存在一定的精度损失问题,在处理大规模地理信息时需要考虑并适当调整以保证准确性。 掌握不同坐标系统之间的转换技术对于开发地图应用、数据分析和位置服务等IT项目至关重要。正确完成这种转换能够确保地图上的点位显示准确无误,并提供更精确的定位服务及地理信息服务。
  • 地图GCJ02和BD09之间的
    优质
    本文介绍了腾讯地图GCJ02与百度地图BD09坐标系之间相互转换的方法和技术细节,帮助开发者实现精准的地图服务集成。 腾讯地图使用的GCJ02坐标系是WGS84坐标系经过加密后的火星坐标系。百度地图采用的BD09坐标系则是从GCJ02坐标系进一步加密得到的百度专用坐标系。
  • 地图的偏移
    优质
    本文探讨了高德地图和百度地图之间的坐标系差异,并提供了将两者之间进行坐标偏移转换的方法和技术。 所有电子地图必须对位置进行偏移处理,这导致从底层接口获取的经纬度坐标在地图上展示时会有偏差。这种偏移并非线性变化,不能通过简单的数值加减来校正,并且不同的地图提供商使用的算法也各不相同。例如,百度地图和高德地图就采用了各自的偏移方式。
  • Android上模仿微信调的地图应进行
    优质
    本教程指导用户在Android设备上如何通过微信等应用程序,直接激活并使用腾讯地图、高德地图和百度地图执行导航功能。 Android仿微信调用第三方地图应用导航(如腾讯、高德、百度),可参考相关博文。
  • 的WGS84批量工具
    优质
    本工具旨在提供高效便捷的坐标转换服务,支持用户将大量数据从百度地图坐标系统快速准确地转换为全球通用的WGS84标准格式,同样兼容高德地图坐标系。适用于地理信息系统、导航应用开发及位置大数据分析等领域。 用于百度、高德坐标的批量转换需要先安装AccessDatabaseEngine。
  • 地图拾取工具(支持
    优质
    简介:百度地图坐标拾取工具是一款便捷的地图应用辅助软件,允许用户轻松选取并转换百度地图与高德地图之间的坐标信息。 百度坐标拾取并可自动转换为高德坐标的工具已开发完成,并将于2020年1月1日交付使用。该程序支持每分钟最多进行2万次的高德坐标转换。