如果項目中用到了地圖導(dǎo)航功能的話囊骤,可以進(jìn)入百度地圖和高德地圖APP里面進(jìn)行導(dǎo)航代乃,簡單方便。
先來看一下最終的效果圖:
1.gif
借助于官方的百度導(dǎo)航和谷歌導(dǎo)航APP實現(xiàn)導(dǎo)航功能,我們要做的就是把起始地址和終止地址傳過去就行了敌卓,如果用戶的手機(jī)沒有安裝百度地圖和高德地圖的話就不能實現(xiàn)此功能,上代碼伶氢;
1趟径、使用導(dǎo)航功能時先判斷一下手機(jī)是否安裝百度地圖或高德地圖APP
public static boolean isInstalledBaidu() {
return new File("/data/data/" + "com.baidu.BaiduMap").exists();
}
public static boolean isInstalledGaode() {
return new File("/data/data/" + "com.autonavi.minimap").exists();
}
2、打開高德地圖APP和打開百度地圖APP
public static void startBaidu(Context context, double latitude1,
double longitude1, double latitude2, double longitude2) {
if (BaiduMapUtil.isInstallByread()) {
LatLng pt1 = new LatLng(latitude1, longitude1);
LatLng pt2 = new LatLng(latitude2, longitude2);
NaviParaOption para = new NaviParaOption();
para.startPoint(pt1);
para.startName("從這里開始");
para.endPoint(pt2);
para.endName("到這里結(jié)束");
try {
BaiduMapNavigation.openBaiduMapNavi(para, context);
} catch (Exception e) {
e.printStackTrace();
BaiduMapUtil.installBaiduMap(context);// 提示安裝百度地圖客戶端;
}
} else {
Log.e("GasStation", "沒有安裝百度地圖客戶端");
BaiduMapUtil.installBaiduMap(context);// 提示安裝百度地圖客戶端;
}
}
public static void startGaode(Context context, double latitude,
double longitude) {
Intent intent = new Intent("android.intent.action.VIEW",
android.net.Uri
.parse("androidamap://navi?sourceApplication=優(yōu)易充&lat="
+ latitude + "&lon=" + longitude + "&dev=0"));
intent.setPackage("com.autonavi.minimap");
context.startActivity(intent);
}
3癣防、百度地圖和高德地圖進(jìn)行坐標(biāo)轉(zhuǎn)換
public static LatLng baidu2Gaode(LatLng ll) {
final double x_pi = Math.PI * 3000.0 / 180.0;
double x = ll.longitude - 0.0065;
double y = ll.latitude - 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 lon = z * Math.cos(theta);
double lat = z * Math.sin(theta);
return new LatLng(lat, lon);
}
4蜗巧、使用的時候直接把起始位置的經(jīng)緯度和終止位置的經(jīng)緯度傳過去即可。
5蕾盯、把以上代碼做一個工具類幕屹,直接調(diào)用即可。