跳转schema
// 百度包名
public static final String BAIDU_MAP_PAK = "com.baidu.BaiduMap";
public static final String BAIDU_MAP_SCHEMA = "bdapp://map/direction?origin=%s,%s&destination=%s,%s&coord_type=bd09ll&sy=3&index=0&target=1";
// 高德包名
public static final String GAODE_MAP_PAK = "com.autonavi.minimap";
public static final String GAODE_MAP_SCHEMA = "amapuri://route/plan/?sourceApplication=app&slat=%s&slon=%s&dlat=%s&dlon=%s&dev=0&t=0";
高德文档传送门
百度文档传送门
搜索
baidumap://map/direction
以及检验是否已安装
/*
* 检查手机上是否安装了指定的软件
*
* @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中是否有目标程序的包名,有TRUE,没有FALSE
return packageNames.contains(packageName);
}
转换坐标 java版本
private double[] bd2gd(double lat, double lng) {
double X_PI = Math.PI * 3000.0 / 180.0;
double x = lng - 0.0065;
double y = lat - 0.006;
double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * X_PI);
double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * X_PI);
double gg_lng = z * Math.cos(theta);
double gg_lat = z * Math.sin(theta);
return new double[]{gg_lat, gg_lng};
}
private double[] gd2bd(double lat, double lng) {
double X_PI = Math.PI * 3000.0 / 180.0;
double x = lng;
double y = lat;
double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * X_PI);
double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * X_PI);
double bd_lng = z * Math.cos(theta) + 0.0065;
double bd_lat = z * Math.sin(theta) + 0.006;
return new double[]{bd_lat, bd_lng}
}
转换坐标 js版本
//百度坐标转高德(传入经度、纬度)
function bd2gd(bd_lng, bd_lat) {
var X_PI = Math.PI * 3000.0 / 180.0;
var x = bd_lng - 0.0065;
var y = bd_lat - 0.006;
var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * X_PI);
var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * X_PI);
var gg_lng = z * Math.cos(theta);
var gg_lat = z * Math.sin(theta);
return {lng: gg_lng, lat: gg_lat}
}
//高德坐标转百度(传入经度、纬度)
function gd2bd(gg_lng, gg_lat) {
var X_PI = Math.PI * 3000.0 / 180.0;
var x = gg_lng, y = gg_lat;
var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * X_PI);
var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * X_PI);
var bd_lng = z * Math.cos(theta) + 0.0065;
var bd_lat = z * Math.sin(theta) + 0.006;
return {
bd_lat: bd_lat,
bd_lng: bd_lng
};
}