要今天使用路径规划功能,您需要使用高德地图或百度地图,然后考虑如何实现更好的发展. 只是放眼未来,这是检查导航应用程序是否在计算机上安装了地图应用程序. 如果有,您可以直接打开它. 如果没有,则可以通过浏览器计划打开百度网络地图.
主要过程是这样,首先确定是否安装了高德地图,如果有,打开高德地图应用程序;否则,确定是否有百度地图;否则,使用浏览器网页路径规划直接跳至高德地图:
if(PackageManagerUtil.haveGaodeMap()){
openGaodeMapToGuide();
} else if(PackageManagerUtil.haveBaiduMap()){
openBaiduMapToGuide();
}else {
openBrowserToGuide();
}
对应的地图调用有其自己的书写方法,可以在官方网站上进行检查. 我在这里的某些点缺少起点,因为我的起点是通过定位获得的. 如果我不写,他们会将起点默认为定位位置.
private void openBaiduMapToGuide() {
Intent intent = new Intent();
double[] location = GPSUtil.gcj02_To_Bd09(locationX , locationY);
String url = "baidumap://map/direction?" +
"destination=name:"+storeName+"|latlng:"+location[0] + "," + location[1]+
"&mode=transit&sy=3&index=0&target=1";
Uri uri = Uri.parse(url);
//将功能Scheme以URI的方式传入data
intent.setData(uri);
//启动该页面即可
startActivity(intent);
}
private void openGaodeMapToGuide() {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
String url = "androidamap://route?sourceApplication=amap&slat="+currLocationX+"&slon="+currLocationY
+"&dlat="+locationX+"&dlon="+locationY+"&dname="+storeName+"&dev=0&t=1";
Uri uri = Uri.parse(url);
//将功能Scheme以URI的方式传入data
intent.setData(uri);
//启动该页面即可
startActivity(intent);
}
private void openBrowserToGuide() {
String url = "http://uri.amap.com/navigation?to=" + locationY + "," + locationX + "," +
storeName + "&mode=car&policy=1&src=mypage&coordinate=gaode&callnative=0";
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
public class PackageManagerUtil {
private static PackageManager mPackageManager = TheApp.instance.getPackageManager();
private static List mPackageNames = new ArrayList<>();
private static final String GAODE_PACKAGE_NAME = "com.autonavi.minimap";
private static final String BAIDU_PACKAGE_NAME = "com.baidu.BaiduMap";
private static void initPackageManager(){
List packageInfos = mPackageManager.getInstalledPackages(0);
if (packageInfos != null) {
for (int i = 0; i < packageInfos.size(); i++) {
mPackageNames.add(packageInfos.get(i).packageName);
}
}
}
public static boolean haveGaodeMap(){
initPackageManager();
return mPackageNames.contains(GAODE_PACKAGE_NAME);
}
public static boolean haveBaiduMap(){
initPackageManager();
return mPackageNames.contains(BAIDU_PACKAGE_NAME);
}
}
注意: 由于我的初始坐标是高德地图的坐标,因此不能在百度地图上使用. 由于两个标准不同,我们需要将高德地图的坐标转换为百度地图使用的坐标. 具体的转换工具方法请参考以下参考文献.
参考:
地图和高德地图之间的坐标系转换
城市地图URI路径规划
调用高德地图应用程序的路径规划
百度地图URI API
Android呼叫高德路线规划相关内容
高道德地图android实现weex可以调用,无法显示地图的功能
读数1885
Weex称Android为本地人
来自oCUPID的博客帖子
Android项目中基于高德地图API的Android移动开发呼叫定位
阅读编号7605
基于地理位置服务的Android平台的开发对于Android移动开发非常重要. 基于地理位置服务的Android平台的开发主要用于Android系统作为载体. 我们可以使用定位的位置进行许多丰富多彩的操作. 例如,天气预报程序可以根据用户的位置自动选择城市. 在微博上发帖时,我们可以向朋友展示我们的地理位置. 当我们不知道道路时,我们可以随时打开地图查询路线; Di或Uber,您可以观看
来自fukaimei的博客帖子
反应本机android高德语地图本机代码编写
阅读编号2772
反应本机android高德语地图本机代码准备版权声明: 本文是博主的原创文章,未经博主许可不得复制. 反应本机android高德语地图本机代码编写android代码MyAmapView高德地图注释代码AMapViewManager代码注释错误代码外部js如何调用viewManager AMapModule代码注释错误
博客帖子来自: qq_27507377
Android呼叫高德地图应用语音导航
读数数0
直接调用高德地图应用进行导航. 首先网页调用高德地图导航,您必须首先进入高德开放平台. 注册并登录后,创建自己的APP,然后生成aey高德开放平台URL: 然后下载jar包并将其导入到项目项目LatLng l = new LatLng(lat网页调用高德地图导航,long); //经度和纬度
博客帖子来自: u013705673
Android调用高德地图汽车版
阅读46
高德地图的汽车版本与百度地图调用方法不同. 高德正在广播,因此无法调整时间,仅当应用程序在后台运行时(此官方API也对此进行了描述),否则请使用代码强制打开应用程序并返回导航(我觉得很麻烦,我没有找到解决方案)字符串pkgName =“ com.autonavi.amapauto”; Intent launchIntent =新的Intent(); launchIntent.setC ...
博客帖子来自: gsmmSummer
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shouji/article-206746-1.html