// 打开手机已有地图
const openMap = (options) => {
	// #ifdef MP-WEIXIN
	uni.openLocation({
		latitude: parseFloat(options.latitude),
		longitude: parseFloat(options.longitude),
		name: options.name,
		address: options.address,
		success: function (res) {
			console.log('打开系统位置地图成功');
		},
		fail: function (error) {
			console.log(error);
		}
	});
	// #endif
	// #ifdef APP-PLUS
	let platform = uni.getSystemInfoSync().platform;
	let mapApps = [
		{ title: '高德地图', name: 'amap', androidName: 'com.autonavi.minimap', iosName: 'iosamap://' },
		{ title: '百度地图', name: 'baidumap', androidName: 'com.baidu.BaiduMap', iosName: 'baidumap://' },
		{ title: '腾讯地图', name: 'qqmap', androidName: 'com.tencent.map', iosName: 'qqmap://' },
		// { title: '苹果地图', name: 'applemap', androidName: 'com.apple.Maps', iosName: 'maps://' }
	];
	// ,
	// { title: '百度地图', name: 'baidumap', androidName: 'com.baidu.BaiduMap', iosName: 'baidumap://' },
	// { title: '腾讯地图', name: 'qqmap', androidName: 'com.tencent.map', iosName: 'qqmap://' }
	
	let buttons = [];
	mapApps.forEach(item => {
		if (platform === 'android' && plus.runtime.isApplicationExist({ pname: item.androidName })) {
			buttons.push(item);
		} else if (platform === 'ios' && plus.runtime.isApplicationExist({ action: item.iosName })) {
			buttons.push(item);
		}
	});
	
	if (buttons.length) {
		plus.nativeUI.actionSheet({
			title: "选择地图应用",
			cancel: "取消",
			buttons: buttons
		}, function (e) {
			let selectedMap = buttons[e.index - 1];
			openURL(selectedMap, platform, options);
		});
	} else {
		uni.showToast({
		title: '请安装地图软件',
		icon: 'none'
		});
	}
	// #endif
}
const openURL = (map, platform, options) => {
	console.log(2222,map)
	 const androidMapConfigs = {
        amap: {
          scheme: `amapuri://route/plan/?dlat=${options.latitude}&dlon=${options.longitude}&dname=${options.name}&dev=0&t=0`,
          name: "高德地图",
        },
        baidumap: {
          scheme: `baidumap://map/direction?destination=latlng:${options.latitude},${options.longitude}|name:${options.name}&mode=driving&coord_type=gcj02`,
          name: "百度地图",
        },
        qqmap: {
          scheme: `qqmap://map/routeplan?type=drive&from=我的位置&fromcoord=0,0&to=${options.name}&tocoord=${options.latitude},${options.longitude}&policy=0`,
          name: "腾讯地图",
        },
      };
	  const iosMapConfigs= {
        amap: {
          scheme: `iosamap://navi?sourceApplication=plus&poiname=${encodeURIComponent(options.name)}&lat=${parseFloat(options.latitude)}&lon=${parseFloat(options.longitude)}&dev=0&style=0`,
          name: "高德地图",
        },
        baidumap: {
          scheme: `baidumap://map/direction?destination=${parseFloat(options.latitude)},${parseFloat(options.longitude)}&mode=driving&coord_type=gcj02`,
          name: "百度地图",
        },
        qqmap: {
          scheme: `qqmap://map/routeplan?type=drive&fromcoord=CurrentLocation&to=${encodeURIComponent(options.name)}&tocoord=${options.latitude},${options.longitude}`,
          name: "腾讯地图",
        },
		// applemap: {
        //   scheme: `maps://?q=${encodeURIComponent(options.name)}&sll=${options.latitude},${options.longitude}`,
        //   name: "苹果地图",
        // },
      };
	  let url = ''
	  if(platform === 'android'){
		url = androidMapConfigs[map.name].scheme
	  }else{
		url = iosMapConfigs[map.name].scheme
	  }
	// let url = platform === 'android' ?
	// `amapuri://route/plan/?dlat=${options.latitude}&dlon=${options.longitude}&dname=${options.name}&dev=0&t=0` :
	// `qqmap://map/routeplan?type=drive&fromcoord=CurrentLocation&to=${encodeURIComponent(options.name)}&tocoord=${options.latitude},${options.longitude}`;
	console.log(url)
	plus.runtime.openURL(url, function(res) {
		console.log(res)
		uni.showModal({ content: res.message });
	}, map.androidName ? map.androidName : '');
}
// 计算两地距离 distance
const calculateDistance = (lat1, lon1, lat2, lon2) => {
	const R = 6371; // 地球半径，单位：千米
	const toRadians = (degree) => degree * (Math.PI / 180);

	const dLat = toRadians(lat2 - lat1);
	const dLon = toRadians(lon2 - lon1);

	const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
	Math.cos(toRadians(lat1)) * Math.cos(toRadians(lat2)) *
	Math.sin(dLon / 2) * Math.sin(dLon / 2);

	const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
	const distance = R * c;

	return distance.toFixed(2); // 返回距离，单位：千米，保留两位小数
};
// 导出请求方法
export default {
  // 打开手机地图
  goMap(options = {}) {
    return openMap({
      ...options
    })
  },
  calcDistance(lat1, lon1, lat2, lon2) {
	return calculateDistance(lat1, lon1, lat2, lon2)
  },
  roundUpToTwoDecimals(price, ratio) {
    return (Math.floor(price * ratio * 100 + 0.9) / 100).toFixed(2);
  },
  // 获取日期字符串
  getDateStr(days) {
    const date = new Date();
    date.setDate(date.getDate() + days);
    return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`;
  },
}