h5判斷百度、高德、騰訊地圖客戶端是否安裝及調起客戶端導航
阿新 • • 發佈:2019-02-06
(function($, navigation) {
navigation.getLocation = function(callback) {
callback = callback || $.noop;
plus.geolocation.getCurrentPosition(callback, function(e) {
mui.toast("異常:" + e.message);
});
}
function translatePoint(position) {
//currentLon = position.coords.longitude;
//currentLat = position.coords.latitude;
// local = position;
// if(showMap) {
// openMap(local);
// }
console.log("-----------position" + JSON.stringify(position))
return {
currentLon: position.coords.longitude,
currentLat: position.coords.latitude
};
}
navigation.startNavigation = function(longitude, latitude,siteName) {
//http://www.html5plus.org/doc/zh_cn/maps.html#plus.maps.CoordinateConvertOptions
var wt = plus.nativeUI.showWaiting('正在獲取當前位置');
navigation.getLocation(function(position) {
var point = new plus.maps.Point(longitude, latitude);
var options = {
coordType:"bd09ll"//源資料的座標型別
};
plus.maps.Map.convertCoordinates(point, options, function(event) {//mui轉換座標系
wt.close();
var dst = event.coord; // 轉換後的座標值
var src = new plus.maps.Point(position.coords.longitude, position.coords.latitude);
// 呼叫系統地圖顯示
plus.maps.openSysMap(dst, siteName, src);
}, function(e) {
alert("Failed:" + JSON.stringify(e));
});
//navigation.openMap(position, latitude, longitude);
});
}
navigation.openMap = function(position, latitude, longitude) {
var lat = latitude;
var lng = longitude;
//inspInfo.latitude = 30.335682;
//inspInfo.longitude = 120.224934;
//百度com.baidu.BaiduMap 高德com.autonavi.minimap 騰訊com.tencent.map
// if(navigation.judgeExists('com.baidu.BaiduMap')) {
// url = "http://api.map.baidu.com/direction?origin=latlng:" + position.coords.latitude + "," + position.coords.longitude + "|name:當前位置&destination=latlng:" + lat + "," + lng + "|name:終點&mode=driving®ion=中國&output=html&src=專案名稱";
// } else
if(navigation.judgeExists('com.autonavi.minimap')) {
//轉換火星座標系
var gd = coordinate.bd09togcj02(position.coords.longitude, position.coords.latitude);
var gd2 = coordinate.bd09togcj02(lng, lat);
url = "http://uri.amap.com/navigation?from=" + gd[0] + "," + gd[1] + ",當前位置&to=" + gd2[0] + "," + gd2[1] + ",站點&mode=car&src=公司名稱&callnative=1"
} else if(navigation.judgeExists('com.tencent.map')) {
//百度轉gps座標系
var gd = coordinate.bd09towgs84(position.coords.longitude, position.coords.latitude);
var gd2 = coordinate.bd09towgs84(lng, lat);
url = "http://apis.map.qq.com/uri/v1/routeplan?type=drive&from=當前位置&fromcoord=" + gd[1] + "," + gd[0] + ",當前位置&to=站點&tocoord=" + gd2[1] + "," + gd2[0] + "&coord_type=1&referer=專案名稱"
} else {
mui.toast('沒有找到地圖客戶端');
return;
}
//呼叫地圖url
var uri = encodeURI(url);
// plus.runtime.openURL(uri);
// mui.openWindow(uri);
}
/**
* 判斷客戶端是否安裝
*/
navigation.judgeExists = function(packageName) {
try {
var main = plus.android.runtimeMainActivity();
var packageManager = main.getPackageManager();
var PackageManager = plus.android.importClass(packageManager);
var packageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
if(packageInfo) {
//已安裝
return true;
} else {
//未安裝
return false;
}
} catch(e) {
//未安裝
return false;
}
}
}(mui, window.navigation = {}));
navigation.getLocation = function(callback) {
callback = callback || $.noop;
plus.geolocation.getCurrentPosition(callback, function(e) {
mui.toast("異常:" + e.message);
});
}
function translatePoint(position) {
//currentLon = position.coords.longitude;
//currentLat = position.coords.latitude;
// local = position;
// if(showMap) {
// openMap(local);
// }
console.log("-----------position" + JSON.stringify(position))
return {
currentLon: position.coords.longitude,
currentLat: position.coords.latitude
};
}
//如果導航只用這個方法久可以了,其它方法是為了備註以後可能用到的需求而保留的 。siteName是終點的文字描述。
//http://www.html5plus.org/doc/zh_cn/maps.html#plus.maps.CoordinateConvertOptions
var wt = plus.nativeUI.showWaiting('正在獲取當前位置');
navigation.getLocation(function(position) {
var point = new plus.maps.Point(longitude, latitude);
var options = {
coordType:"bd09ll"//源資料的座標型別
};
plus.maps.Map.convertCoordinates(point, options, function(event) {//mui轉換座標系
wt.close();
var dst = event.coord; // 轉換後的座標值
var src = new plus.maps.Point(position.coords.longitude, position.coords.latitude);
// 呼叫系統地圖顯示
plus.maps.openSysMap(dst, siteName, src);
}, function(e) {
alert("Failed:" + JSON.stringify(e));
});
//navigation.openMap(position, latitude, longitude);
});
}
navigation.openMap = function(position, latitude, longitude) {
var lat = latitude;
var lng = longitude;
//inspInfo.latitude = 30.335682;
//inspInfo.longitude = 120.224934;
//百度com.baidu.BaiduMap 高德com.autonavi.minimap 騰訊com.tencent.map
// if(navigation.judgeExists('com.baidu.BaiduMap')) {
// url = "http://api.map.baidu.com/direction?origin=latlng:" + position.coords.latitude + "," + position.coords.longitude + "|name:當前位置&destination=latlng:" + lat + "," + lng + "|name:終點&mode=driving®ion=中國&output=html&src=專案名稱";
// } else
if(navigation.judgeExists('com.autonavi.minimap')) {
//轉換火星座標系
var gd = coordinate.bd09togcj02(position.coords.longitude, position.coords.latitude);
var gd2 = coordinate.bd09togcj02(lng, lat);
url = "http://uri.amap.com/navigation?from=" + gd[0] + "," + gd[1] + ",當前位置&to=" + gd2[0] + "," + gd2[1] + ",站點&mode=car&src=公司名稱&callnative=1"
} else if(navigation.judgeExists('com.tencent.map')) {
//百度轉gps座標系
var gd = coordinate.bd09towgs84(position.coords.longitude, position.coords.latitude);
var gd2 = coordinate.bd09towgs84(lng, lat);
url = "http://apis.map.qq.com/uri/v1/routeplan?type=drive&from=當前位置&fromcoord=" + gd[1] + "," + gd[0] + ",當前位置&to=站點&tocoord=" + gd2[1] + "," + gd2[0] + "&coord_type=1&referer=專案名稱"
} else {
mui.toast('沒有找到地圖客戶端');
return;
}
//呼叫地圖url
var uri = encodeURI(url);
// plus.runtime.openURL(uri);
// mui.openWindow(uri);
}
/**
* 判斷客戶端是否安裝
*/
navigation.judgeExists = function(packageName) {
try {
var main = plus.android.runtimeMainActivity();
var packageManager = main.getPackageManager();
var PackageManager = plus.android.importClass(packageManager);
var packageInfo = packageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
if(packageInfo) {
//已安裝
return true;
} else {
//未安裝
return false;
}
} catch(e) {
//未安裝
return false;
}
}
}(mui, window.navigation = {}));