mapto.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. export function handleNavigation(toData) {
  2. console.log("s-xsxd", toData)
  3. if (!toData.latitude || !toData.longitude || !toData.name) return
  4. // 微信
  5. // #ifdef MP-WEIXIN
  6. uni.openLocation({
  7. ..._obj,
  8. latitude: parseFloat(toData.latitude),
  9. longitude: parseFloat(toData.longitude),
  10. success: function (res) {
  11. console.log('打开系统位置地图成功')
  12. },
  13. fail: function (error) {
  14. console.log(error)
  15. }
  16. })
  17. console.log(toData, '---')
  18. // #endif
  19. console.log(toData, '---')
  20. // #ifdef APP-PLUS
  21. // 判断系统安装的地图应用有哪些, 并生成菜单按钮
  22. let _mapName = [
  23. { title: '高德地图', name: 'amap', androidName: 'com.autonavi.minimap', iosName: 'iosamap://' },
  24. { title: '百度地图', name: 'baidumap', androidName: 'com.baidu.BaiduMap', iosName: 'baidumap://' },
  25. { title: '腾讯地图', name: 'qqmap', androidName: 'com.tencent.map', iosName: 'qqmap://' },
  26. ]
  27. // 根据真机有的地图软件 生成的 操作菜单
  28. let buttons = []
  29. let platform = uni.getSystemInfoSync().platform
  30. platform === 'android' && _mapName.forEach(item => {
  31. if (plus.runtime.isApplicationExist({ pname: item.androidName })) {
  32. buttons.push(item)
  33. }
  34. })
  35. platform === 'ios' && _mapName.forEach(item => {
  36. console.log(item.iosName)
  37. if (plus.runtime.isApplicationExist({ action: item.iosName })) {
  38. buttons.push(item)
  39. }
  40. })
  41. console.log(buttons, '---')
  42. if (buttons.length) {
  43. plus.nativeUI.actionSheet({ //选择菜单
  44. title: "选择地图应用",
  45. cancel: "取消",
  46. buttons: buttons
  47. }, function (e) {
  48. let _map = buttons[e.index - 1]
  49. openURL(_map, platform, toData)
  50. })
  51. } else {
  52. uni.showToast({
  53. title: '请安装地图软件',
  54. icon: 'none'
  55. })
  56. return
  57. }
  58. // #endif
  59. }
  60. // 打开第三方程序实际应用
  61. function openURL(map, platform, toData) {
  62. let _defaultUrl = {
  63. android: {
  64. "amap": `amapuri://route/plan/?sid=&did=&dlat=${toData.latitude}&dlon=${toData.longitude}&dname=${toData.name}&dev=0&t=0`,
  65. 'qqmap': `qqmap://map/routeplan?type=drive&to=${toData.name}&tocoord=${toData.latitude},${toData.longitude}&referer=fuxishan_uni_client`,
  66. 'baidumap': `baidumap://map/direction?origin=${toData.selfLocation.latitude},${toData.selfLocation.longitude}&destination=name:${toData.name}|latlng:${toData.latitude},${toData.longitude}&coord_type=wgs84&mode=driving&src=andr.baidu.openAPIdemo"`
  67. },
  68. ios: {
  69. "amap": `iosamap://path?sourceApplication=fuxishan_uni_client&dlat=${toData.latitude}&dlon=${toData.longitude}&dname=${toData.name}&dev=0&t=0`,
  70. 'qqmap': `qqmap://map/routeplan?type=drive&to=${toData.name}&tocoord=${toData.latitude},${toData.longitude}&referer=fuxishan_uni_client`,
  71. 'baidumap': `baidumap://map/direction?origin=${toData.selfLocation.latitude},${toData.selfLocation.longitude}&destination=name:${toData.name}|latlng:${toData.latitude},${toData.longitude}&mode=driving&src=ios.baidu.openAPIdemo`
  72. }
  73. }
  74. let newurl = encodeURI(_defaultUrl[platform][map.name]);
  75. console.log(newurl)
  76. plus.runtime.openURL(newurl, function (res) {
  77. console.log(res)
  78. uni.showModal({
  79. content: res.message
  80. })
  81. }, map.androidName ? map.androidName : '');
  82. }