You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

110 lines
3.3 KiB
JavaScript

11 months ago
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
},
};