You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.8 KiB
96 lines
2.8 KiB
import TransformCoordinate from './transformCoordinate.js'
|
|
function openMapByDefault(latitude, longitude, name) {
|
|
uni.openLocation({
|
|
latitude: latitude,
|
|
longitude: longitude,
|
|
name: name,
|
|
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
|
|
}
|
|
}
|