高德導航 private void openGaoDeMap(double sLon, double sLat, double dLon, double dLat, String sName, String dName) { try { StringBuilder loc = new StringBuilder(); loc.append("androidamap://route?sourceApplication=Sandbox3"); loc.append("&slat="); loc.append(sLat); loc.append("&slon="); loc.append(sLon); loc.append("&sname="); loc.append(sName); loc.append("&dlat="); loc.append(dLat); loc.append("&dlon="); loc.append(dLon); loc.append("&dname="); loc.append(dName); loc.append("&dev=0&t=2"); Intent intent = Intent.getIntent(loc.toString()); startActivity(intent); } catch (Exception e) { e.printStackTrace(); } }
百度導航android
private void openBaiduMap(double lon, double lat, String title, String describle) { try { StringBuilder loc = new StringBuilder(); loc.append("intent://map/direction?origin=latlng:"); loc.append(lat); loc.append(","); loc.append(lon); loc.append("|name:"); loc.append("個人位置"); loc.append("&destination=latlng:"); loc.append(lat); loc.append(","); loc.append(lon); loc.append("|name:"); loc.append(describle); loc.append("&mode=driving"); loc.append("&referer=Autohome|GasStation#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end"); Intent intent = Intent.getIntent(loc.toString()); if (isInstallPackage("com.baidu.BaiduMap")) { startActivity(intent); //啓動調用 Log.e("GasStation", "百度地圖客戶端已經安裝"); } else { Log.e("GasStation", "沒有安裝百度地圖客戶端"); } } catch (Exception e) { e.printStackTrace(); } }
轉換座標 高德轉百度 百度轉高德git
public class AMapUtils { public static boolean isInstallPackage(String packageName) { return new File("/data/data/" + packageName).exists(); } public static double[] bdToGaoDe(double bd_lat, double bd_lon) { double[] gd_lat_lon = new double[2]; double PI = 3.14159265358979324 * 3000.0 / 180.0; double x = bd_lon - 0.0065, y = bd_lat - 0.006; double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * PI); double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * PI); gd_lat_lon[0] = z * Math.cos(theta); gd_lat_lon[1] = z * Math.sin(theta); return gd_lat_lon; } public static double[] gaoDeToBaidu(double gd_lon, double gd_lat) { double[] bd_lat_lon = new double[2]; double PI = 3.14159265358979324 * 3000.0 / 180.0; double x = gd_lon, y = gd_lat; double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * PI); double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * PI); bd_lat_lon[0] = z * Math.cos(theta) + 0.0065; bd_lat_lon[1] = z * Math.sin(theta) + 0.006; return bd_lat_lon; } /** * 檢查手機上是否安裝了指定的軟件 * * @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); } }
調用網頁高德地圖app
StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append("http://uri.amap.com/navigation?from="); stringBuffer.append(myLatLng.longitude); stringBuffer.append(","); stringBuffer.append(myLatLng.latitude); stringBuffer.append(",startpoint&to="); stringBuffer.append(destLatLng.longitude); stringBuffer.append(","); stringBuffer.append(destLatLng.latitude); stringBuffer.append(",endpoint"); stringBuffer.append("&mode=car&policy=1&src=mypage&coordinate=gaode&callnative=0");