110 lines
3.3 KiB
JavaScript
110 lines
3.3 KiB
JavaScript
import TransformCoordinate from "./transformCoordinate.js";
|
|
function openMapByDefault(latitude, longitude, name) {
|
|
uni.openLocation({
|
|
type: "gcj02",
|
|
latitude: latitude,
|
|
longitude: longitude,
|
|
name: name,
|
|
success: function (res) {
|
|
console.log("**定位信息", res);
|
|
// that.latitude = res.latitude;
|
|
// that.longitude = res.longitude;
|
|
// that.area = res.address.city;
|
|
},
|
|
fail: () => {
|
|
uni.showModal({
|
|
content: "打开地图失败,请重",
|
|
});
|
|
},
|
|
});
|
|
}
|
|
function openMapByAndroid(latitude, longitude, name) {
|
|
let url = ""; // 回调地址
|
|
let identity = ""; // 程序名称
|
|
if (plus.runtime.isApplicationExist({ pname: "com.baidu.BaiduMap" })) {
|
|
// baidumap
|
|
url = `baidumap://map/marker?location=${latitude},${longitude}&title=${name}&coord_type=gcj02&src=andr.baidu.openAPIdemo`;
|
|
identity = "com.baidu.BaiduMap";
|
|
openURL(url, identity);
|
|
} else if (
|
|
plus.runtime.isApplicationExist({ pname: "com.autonavi.minimap" })
|
|
) {
|
|
// 高德
|
|
url = `androidamap://viewMap?sourceApplication=appname&poiname=${name}&lat=${latitude}&lon=${longitude}&dev=0`;
|
|
identity = "com.autonavi.minimap";
|
|
openURL(url, identity);
|
|
} else {
|
|
openMapByDefault(latitude, longitude, name);
|
|
}
|
|
}
|
|
function openMapByIos(latitude, longitude, name) {
|
|
let url = ""; // 回调地址
|
|
let errorCB = ""; // url失败的回调地址
|
|
let identity = ""; // 程序名称
|
|
|
|
if (plus.runtime.isApplicationExist({ action: "baidumap://" })) {
|
|
// baidumap
|
|
url = `baidumap://map/marker?location=${latitude},${longitude}&title=${name}&content=${name}&src=ios.baidu.openAPIdemo&coord_type=gcj02`;
|
|
openURL(url, identity);
|
|
} else if (plus.runtime.isApplicationExist({ action: "iosamap://" })) {
|
|
// 高德
|
|
url = `iosamap://viewMap?sourceApplication=applicationName&poiname=${name}&lat=${latitude}&lon=${longitude}&dev=0`;
|
|
openURL(url, identity);
|
|
} else {
|
|
openMapByDefault(latitude, longitude, name);
|
|
}
|
|
}
|
|
function openURL(url, identity) {
|
|
let newurl = encodeURI(url);
|
|
plus.runtime.openURL(
|
|
newurl,
|
|
function (res) {
|
|
uni.showModal({
|
|
content: res.message,
|
|
});
|
|
},
|
|
identity
|
|
);
|
|
}
|
|
function getCoordByType(longitude, latitude, coord_type) {
|
|
switch (coord_type) {
|
|
case "gcj02":
|
|
return [longitude, latitude];
|
|
break;
|
|
case "bd09":
|
|
return TransformCoordinate.bd09togcj02(longitude, latitude);
|
|
break;
|
|
case "wgs84":
|
|
return TransformCoordinate.wgs84togcj02(longitude, latitude);
|
|
break;
|
|
default:
|
|
return [longitude, latitude];
|
|
break;
|
|
}
|
|
}
|
|
export default {
|
|
/* 打开地图 */
|
|
openMap(latitude, longitude, name, coord_type = "gcj02") {
|
|
let arr = getCoordByType(longitude, latitude, coord_type);
|
|
// #ifdef APP-PLUS
|
|
switch (uni.getSystemInfoSync().platform) {
|
|
case "android":
|
|
console.log("运行Android上");
|
|
openMapByAndroid(arr[1], arr[0], name);
|
|
break;
|
|
case "ios":
|
|
console.log("运行iOS上");
|
|
openMapByIos(arr[1], arr[0], name);
|
|
break;
|
|
default:
|
|
openMapByDefault(arr[1], arr[0], name);
|
|
console.log("运行在开发者工具上");
|
|
break;
|
|
}
|
|
// #endif
|
|
// #ifndef APP-PLUS
|
|
openMapByDefault(arr[1], arr[0], name);
|
|
// #endif
|
|
},
|
|
};
|