您的位置:首页 > 移动开发

android APP调起地图导航(谷歌,高德,百度)工具类

2017-11-06 15:31 871 查看
package com.seatel.recommend.tools;

import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;

import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;

/**
* Created by Mask on 2017/9/13.
*/

public class MapUtils {
public static void startGuide(Context context, String latitude, String longitude) {
if (isAvilible(context, "com.google.android.apps.maps")) {
startNaviGoogle(context, latitude, longitude);
} else if (isAvilible(context, "com.autonavi.minimap")) {
startNaviGao(context, latitude, longitude);
} else if (isAvilible(context, "com.baidu.BaiduMap")) {
startNaviBaidu(context, latitude, longitude);
}

}

//谷歌地图,起点就是定位点
public static void startNaviGoogle(Context context, String latitude, String longitude) {
Uri gmmIntentUri = Uri.parse("google.navigation:q=" + latitude + "," + longitude+"&mode=w");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
context.startActivity(mapIntent);
}

//高德地图,起点就是定位点
// 终点是LatLng ll = new LatLng("你的纬度latitude","你的经度longitude");
public static void startNaviGao(Context context, String latitude, String longitude) {
try {
//sourceApplication
Intent intent = Intent.getIntent("androidamap://navi?sourceApplication=公司的名称&poiname=我的目的地&lat=" + latitude + "&lon=" + longitude + "&dev=0");
context.startActivity(intent);
} catch (URISyntaxException e) {
e.printStackTrace();
}

}

//百度地图
public static void startNaviBaidu(Context context, String latitude, String longitude) {
try {
Intent intent = Intent.getIntent("intent://map/direction?destination=latlng:"+ latitude + "," + longitude +
"|name:&origin=" + "我的位置" + "&mode=driving?ion=" + "我的位置"+ "&referer=Autohome|GasStation#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
context.startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}

//验证各种导航地图是否安装
public static boolean isAvilible(Context context, String packageName) {
//获取packagemanager
final PackageManager packageManager = context.getPackageManager();
//获取所有已安装程序的包信息
List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);
//用于存储所有已安装程序的包名
List<String> packageNames = new ArrayList<String>();
//
4000
从pinfo中将包名字逐一取出,压入pName list中
if (packageInfos != null) {
for (int i = 0; i < packageInfos.size(); i++) {
String packName = packageInfos.get(i).packageName;
packageNames.add(packName);
}
}
//判断packageNames中是否有目标程序的包名,有TRUE,没有FALSE
return packageNames.contains(packageName);
}

}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐