上一个我的工具类,没啥好多说的,传递经纬度的时候标准传入方式也有
public class PccGo2MapUtil {
private Context context;
public PccGo2MapUtil(Context context) {
this.context = context;
}
/**
* 启动高德地图,从我的位置到addressName
* @param addressName 终点
*/
private void go2Gaode(String addressName) {
try {
Intent intent = Intent.getIntent("androidamap://route?sourceApplication=softname&sname=我的位置&dname=" + addressName + "&dev=0&m=0&t=1");
if (isAvilible(context, "com.autonavi.minimap")) {
context.startActivity(intent);
} else {
Toast.makeText(context,"高德地图未安装",Toast.LENGTH_SHORT).show();
}
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
/**
* 启动百度地图,从我的位置到addressName
* @param addressName 终点
*/
public void go2Baidu(String addressName) {
try {
Intent intent = Intent.getIntent("intent://map/direction?origin=我的位置&destination=" + addressName + "&mode=driving&src=yourCompanyName|yourAppName#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
if (isAvilible(context, "com.baidu.BaiduMap")) {
context.startActivity(intent);
} else {
Toast.makeText(context,"百度地图未安装",Toast.LENGTH_SHORT).show();
}
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
/**
* 启动百度地图,从我的位置到指定经纬度位置
* @param lat 纬度
* @param lng 经度
*/
public void go2Baidu(double lat,double lng) {
String latlng = lat + "," + lng;
try {
Uri uri = Uri.parse("baidumap://map/direction?destination=latlng:"+"目的地lat"+","+ "目的地lng"+"|name:"+"目的地名称"+"&mode=driving");
Intent intent = Intent.getIntent("intent://map/direction?origin=我的位置&destination=" + latlng + "&mode=driving&src=yourCompanyName|yourAppName#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");
if (isAvilible(context, "com.baidu.BaiduMap")) {
context.startActivity(intent);
} else {
Toast.makeText(context,"百度地图未安装",Toast.LENGTH_SHORT).show();
}
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
/**
* 检查手机上是否安装了指定的packageName的软件
* @param context
* @param packageName 应用包名
* @return */
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>();
//从pinfo中将包名字逐一取出,压入pName list中
if (packageInfos != null) {
for (int i = 0; i < packageInfos.size(); i++) {
String packName = packageInfos.get(i).packageName;
packageNames.add(packName);
}
}
//判断packageNames中是否有目标程序的包名
return packageNames.contains(packageName);
}
}
经纬度规范传入方式:
Intent intent = Intent.getIntent("androidamap://route?sourceApplication=softname&sname=我的位置&dlat=" + location.getLatitude() + "&dlon=" + location.getLongitude() + "&dname=" + addressname + "&dev=0&m=0&t=1");
当然很多时候你已经获取到了经纬度,就不需要像我这样去用location获取了,可以直接传进来