openMap.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619
  1. let itemList = ["百度地图","高德地图","腾讯地图"];
  2. // #ifdef APP-PLUS
  3. var isBaidu = plus.runtime.isApplicationExist({pname:'com.baidu.BaiduMap',action:'baidumap://'});
  4. var isGaode = plus.runtime.isApplicationExist({pname:'com.autonavi.minimap',action:'iosamap://'});
  5. var isQQ = plus.runtime.isApplicationExist({pname:'com.tencent.map',action:'qqmap://'});
  6. let AppitemList = [{title:"腾讯地图"}];
  7. if(isBaidu && isGaode){
  8. AppitemList = [{title:"百度地图"},{title:"高德地图"},{title:"腾讯地图"}];
  9. }
  10. if(!isBaidu && isGaode){
  11. AppitemList = [{title:"高德地图"},{title:"腾讯地图"}];
  12. }
  13. if(isBaidu && !isGaode){
  14. AppitemList = [{title:"百度地图"},{title:"腾讯地图"}];
  15. }
  16. // #endif
  17. function openMapByAndroid(origin, destination,mode) {
  18. let originName = origin&&origin.name?origin.name:"起点";
  19. let destinationName = destination.name?destination.name:"终点";
  20. var bdMode = "driving";
  21. if(mode == "bus"){
  22. bdMode = "transit";
  23. }else if(mode == "walk"){
  24. bdMode = "walking";
  25. }else if(mode == "bike"){
  26. bdMode = "riding";
  27. }
  28. var bdapp = "baidumap://map/direction?destination=name:"+destinationName+"|latlng:"+destination.latitude+","+destination.longitude+"&coord_type=gcj02&mode="+bdMode+"&src=uniapp";
  29. if(origin){
  30. bdapp = "baidumap://map/direction?origin=name:"+originName+"|latlng:"+origin.latitude+","+origin.longitude+"&destination=name:"+destinationName+"|latlng:"+destination.latitude+","+destination.longitude+"&coord_type=gcj02&mode="+bdMode+"&src=uniapp";
  31. }
  32. var bdappDown = "http://map.baidu.com/zt/qudao/newfengchao/1012337a/html/slide.html"
  33. var amapMode = 0;
  34. if(mode == "bus"){
  35. amapMode = 1;
  36. }else if(mode == "walk"){
  37. amapMode = 2;
  38. }else if(mode == "bike"){
  39. amapMode = 3;
  40. }
  41. var amapuri = "amapuri://route/plan/?sourceApplication=uniapp&dlat="+destination.latitude+"&dlon="+destination.longitude+"&dname="+destinationName+"&t="+amapMode;
  42. if(origin){
  43. amapuri = "amapuri://route/plan/?sourceApplication=uniapp&slat="+origin.latitude+"&slon="+origin.longitude+"&sname="+originName+"&dlat="+destination.latitude+"&dlon="+destination.longitude+"&dname="+destinationName+"&t="+amapMode;
  44. }
  45. var amapuriDown = "http://wap.amap.com/";
  46. var qqmap = "qqmap://map/routeplan?type="+mode+"&to="+destinationName+"&tocoord="+destination.latitude+","+destination.longitude;
  47. if(origin){
  48. qqmap = "qqmap://map/routeplan?type="+mode+"&from="+originName+"&fromcoord="+origin.latitude+","+origin.longitude+"&to="+destinationName+"&tocoord="+destination.latitude+","+destination.longitude;
  49. }
  50. var qqmapDefault = "https://apis.map.qq.com/uri/v1/routeplan?type="+mode+"&to="+destinationName+"&tocoord="+destination.latitude+","+destination.longitude+"&policy=1";
  51. if(origin){
  52. qqmapDefault = "https://apis.map.qq.com/uri/v1/routeplan?type="+mode+"&from="+originName+"&fromcoord="+origin.latitude+","+origin.longitude+"&to="+destinationName+"&tocoord="+destination.latitude+","+destination.longitude+"&policy=1";
  53. }
  54. // #ifdef APP-PLUS
  55. plus.nativeUI.actionSheet(
  56. {
  57. title:"选择导航",
  58. cancel:"取消",
  59. buttons:AppitemList
  60. },
  61. function(res){
  62. if(isBaidu && isGaode){
  63. if(res.index == 1){
  64. appOpenUrl(bdapp);
  65. }else if(res.index ==2){
  66. appOpenUrl(amapuri);
  67. }else if(res.index == 3){
  68. if(isQQ){
  69. appOpenUrl(qqmap);
  70. }else{
  71. appOpenUrl(qqmapDefault);
  72. }
  73. }
  74. }else if(!isBaidu && isGaode){
  75. if(res.index == 1){
  76. appOpenUrl(amapuri);
  77. }else if(res.index == 2){
  78. if(isQQ){
  79. appOpenUrl(qqmap);
  80. }else{
  81. appOpenUrl(qqmapDefault);
  82. }
  83. }
  84. }else if(isBaidu && !isGaode){
  85. if(res.index == 1){
  86. appOpenUrl(bdapp);
  87. }else if(res.index == 2){
  88. if(isQQ){
  89. appOpenUrl(qqmap);
  90. }else{
  91. appOpenUrl(qqmapDefault);
  92. }
  93. }
  94. }else{
  95. if(res.index == 1){
  96. if(isQQ){
  97. appOpenUrl(qqmap);
  98. }else{
  99. appOpenUrl(qqmapDefault);
  100. }
  101. }
  102. }
  103. }
  104. );
  105. // #endif
  106. // #ifndef APP-PLUS
  107. uni.showActionSheet({
  108. itemList:itemList,
  109. success: (res) => {
  110. if(res.tapIndex == 0){
  111. openURL(bdapp,bdappDown)
  112. }else if(res.tapIndex == 1){
  113. openURL(amapuri,amapuriDown)
  114. }else{
  115. openURL(qqmap,qqmapDefault)
  116. }
  117. }
  118. })
  119. // #endif
  120. }
  121. function navigationByAndroid(destination){
  122. let destinationName = destination.name?destination.name:"终点";
  123. var bdapp = "baidumap://map/navi?location="+destination.latitude+","+destination.longitude+"&query="+destinationName+"&coord_type=gcj02&src=uniapp";
  124. var bdappDown = "http://map.baidu.com/zt/qudao/newfengchao/1012337a/html/slide.html"
  125. var amapuri = "androidamap://navi?sourceApplication=uniapp&lat="+destination.latitude+"&lon="+destination.longitude+"&poiname="+destinationName+"&dev=1";
  126. var amapuriDown = "http://wap.amap.com/";
  127. var qqmap = "qqmap://map/routeplan?type=drive&to="+destinationName+"&tocoord="+destination.latitude+","+destination.longitude;
  128. var qqmapDefault = "https://apis.map.qq.com/uri/v1/routeplan?type=drive&to="+destinationName+"&tocoord="+destination.latitude+","+destination.longitude+"&policy=1";
  129. // #ifdef APP-PLUS
  130. plus.nativeUI.actionSheet(
  131. {
  132. title:"选择导航",
  133. cancel:"取消",
  134. buttons:AppitemList
  135. },
  136. function(res){
  137. if(isBaidu && isGaode){
  138. if(res.index == 1){
  139. appOpenUrl(bdapp);
  140. }else if(res.index ==2){
  141. appOpenUrl(amapuri);
  142. }else if(res.index == 3){
  143. if(isQQ){
  144. appOpenUrl(qqmap);
  145. }else{
  146. appOpenUrl(qqmapDefault);
  147. }
  148. }
  149. }else if(!isBaidu && isGaode){
  150. if(res.index == 1){
  151. appOpenUrl(amapuri);
  152. }else if(res.index == 2){
  153. if(isQQ){
  154. appOpenUrl(qqmap);
  155. }else{
  156. appOpenUrl(qqmapDefault);
  157. }
  158. }
  159. }else if(isBaidu && !isGaode){
  160. if(res.index == 1){
  161. appOpenUrl(bdapp);
  162. }else if(res.index == 2){
  163. if(isQQ){
  164. appOpenUrl(qqmap);
  165. }else{
  166. appOpenUrl(qqmapDefault);
  167. }
  168. }
  169. }else{
  170. if(res.index == 1){
  171. if(isQQ){
  172. appOpenUrl(qqmap);
  173. }else{
  174. appOpenUrl(qqmapDefault);
  175. }
  176. }
  177. }
  178. }
  179. );
  180. // #endif
  181. // #ifndef APP-PLUS
  182. uni.showActionSheet({
  183. itemList:itemList,
  184. success: (res) => {
  185. if(res.tapIndex == 0){
  186. openURL(bdapp,bdappDown)
  187. }else if(res.tapIndex == 1){
  188. openURL(amapuri,amapuriDown)
  189. }else{
  190. openURL(qqmap,qqmapDefault)
  191. }
  192. }
  193. })
  194. // #endif
  195. }
  196. function openMapByIos(origin, destination,mode) {
  197. let originName = origin&&origin.name?origin.name:"起点";
  198. let destinationName = destination.name?destination.name:"终点";
  199. var bdMode = "driving";
  200. var bdapp = "baidumap://map/direction?origin=我的位置&destination=name:"+destinationName+"|latlng:"+destination.latitude+","+destination.longitude+"&coord_type=gcj02&mode="+bdMode+"&src=uniapp";
  201. if(origin){
  202. bdapp = "baidumap://map/direction?origin=name:"+originName+"|latlng:"+origin.latitude+","+origin.longitude+"&destination=name:"+destinationName+"|latlng:"+destination.latitude+","+destination.longitude+"&coord_type=gcj02&mode="+bdMode+"&src=uniapp";
  203. }
  204. var bdappDown = "https://apps.apple.com/cn/app/id452186370";
  205. var amapMode = 0;
  206. if(mode == "bus"){
  207. amapMode = 1;
  208. }else if(mode == "walk"){
  209. amapMode = 2;
  210. }else if(mode == "bike"){
  211. amapMode = 3;
  212. }
  213. var amapuri = "iosamap://route/plan/?sourceApplication=uniapp&dlat="+destination.latitude+"&dlon="+destination.longitude+"&dname="+destinationName+"&t="+amapMode;
  214. if(origin){
  215. amapuri = "iosamap://route/plan/?sourceApplication=uniapp&slat="+origin.latitude+"&slon="+origin.longitude+"&sname="+originName+"&dlat="+destination.latitude+"&dlon="+destination.longitude+"&dname="+destinationName+"&t="+amapMode;
  216. }
  217. var amapuriDown = "https://apps.apple.com/cn/app/id461703208";
  218. var qqmap = "qqmap://map/routeplan?type="+mode+"&from=我的位置&to="+destinationName+"&tocoord="+destination.latitude+","+destination.longitude;
  219. if(origin){
  220. qqmap = "qqmap://map/routeplan?type="+mode+"&from="+originName+"&fromcoord="+origin.latitude+","+origin.longitude+"&to="+destinationName+"&tocoord="+destination.latitude+","+destination.longitude;
  221. }
  222. var qqmapDefault = "https://apis.map.qq.com/uri/v1/routeplan?type="+mode+"&from=我的位置&to="+destinationName+"&tocoord="+destination.latitude+","+destination.longitude+"&policy=1";
  223. if(origin){
  224. qqmapDefault = "https://apis.map.qq.com/uri/v1/routeplan?type="+mode+"&from="+originName+"&fromcoord="+origin.latitude+","+origin.longitude+"&to="+destinationName+"&tocoord="+destination.latitude+","+destination.longitude+"&policy=1";
  225. }
  226. var iosMode = 'd';
  227. if(mode == "bus"){
  228. bdMode = "transit";
  229. iosMode = 'r';
  230. }else if(mode == "walk"){
  231. bdMode = "walking";
  232. iosMode = 'w';
  233. }else if(mode == "bike"){
  234. bdMode = "riding";
  235. iosMode = 'w';
  236. }
  237. var iosmap = "http://maps.apple.com/?daddr="+destination.latitude+","+destination.longitude+"&dirflg="+iosMode
  238. if(origin){
  239. iosmap = "http://maps.apple.com/?saddr="+origin.latitude+","+origin.longitude+"&daddr="+destination.latitude+","+destination.longitude+"&dirflg="+iosMode
  240. }
  241. // #ifdef APP-PLUS
  242. plus.nativeUI.actionSheet(
  243. {
  244. title:"选择导航",
  245. cancel:"取消",
  246. buttons:AppitemList.indexOf("Apple地图")<0 ? AppitemList.concat({title:"Apple地图"}):AppitemList
  247. },
  248. function(res){
  249. if(isBaidu && isGaode){
  250. if(res.index == 1){
  251. appOpenUrl(bdapp);
  252. }else if(res.index == 2){
  253. appOpenUrl(amapuri);
  254. }else if(res.index == 3){
  255. if(isQQ){
  256. appOpenUrl(qqmap);
  257. }else{
  258. appOpenUrl(qqmapDefault);
  259. }
  260. }else if(res.index == 4){
  261. appOpenUrl(iosmap);
  262. }
  263. }else if(!isBaidu && isGaode){
  264. if(res.index == 1){
  265. appOpenUrl(amapuri);
  266. }else if(res.index == 2){
  267. if(isQQ){
  268. appOpenUrl(qqmap);
  269. }else{
  270. appOpenUrl(qqmapDefault);
  271. }
  272. }else if(res.index == 3){
  273. appOpenUrl(iosmap);
  274. }
  275. }else if(isBaidu && !isGaode){
  276. if(res.index == 1){
  277. appOpenUrl(bdapp);
  278. }else if(res.index == 2){
  279. if(isQQ){
  280. appOpenUrl(qqmap);
  281. }else{
  282. appOpenUrl(qqmapDefault);
  283. }
  284. }else if(res.index == 3){
  285. appOpenUrl(iosmap);
  286. }
  287. }else{
  288. if(res.index == 1){
  289. if(isQQ){
  290. appOpenUrl(qqmap);
  291. }else{
  292. appOpenUrl(qqmapDefault);
  293. }
  294. }else if(res.index == 2){
  295. appOpenUrl(iosmap);
  296. }
  297. }
  298. }
  299. );
  300. // #endif
  301. // #ifndef APP-PLUS
  302. uni.showActionSheet({
  303. itemList:itemList.indexOf("Apple地图")<0 ? itemList.concat("Apple地图"):itemList,
  304. success: (res) => {
  305. if(res.tapIndex == 0){
  306. openURL(bdapp,bdappDown)
  307. }else if(res.tapIndex == 1){
  308. openURL(amapuri,amapuriDown)
  309. }else if(res.tapIndex == 2){
  310. openURL(qqmap,qqmapDefault)
  311. }else if(res.tapIndex == 3){
  312. openURL(iosmap);
  313. }
  314. }
  315. })
  316. // #endif
  317. }
  318. function navigationByIos(destination){
  319. let destinationName = destination.name?destination.name:"终点";
  320. var bdapp = "baidumap://map/navi?location="+destination.latitude+","+destination.longitude+"&coord_type=gcj02&query="+destinationName+"&src=uniapp";
  321. var bdappDown = "https://apps.apple.com/cn/app/id452186370";
  322. var amapuri = "iosamap://navi?sourceApplication=uniapp&lat="+destination.latitude+"&lon="+destination.longitude+"&poiname="+destinationName+"&dev=1";
  323. var amapuriDown = "https://apps.apple.com/cn/app/id461703208";
  324. var qqmap = "qqmap://map/routeplan?type=drive&from=我的位置&to="+destinationName+"&tocoord="+destination.latitude+","+destination.longitude;
  325. var qqmapDefault = "https://apis.map.qq.com/uri/v1/routeplan?type=drive&from=我的位置&to="+destinationName+"&tocoord="+destination.latitude+","+destination.longitude+"&policy=1";
  326. var iosmap = "http://maps.apple.com/?daddr="+destination.latitude+","+destination.longitude+"&dirflg=d";
  327. // #ifdef APP-PLUS
  328. plus.nativeUI.actionSheet(
  329. {
  330. title:"选择导航",
  331. cancel:"取消",
  332. buttons:AppitemList.indexOf("Apple地图")<0 ? AppitemList.concat({title:"Apple地图"}):AppitemList
  333. },
  334. function(res){
  335. if(isBaidu && isGaode){
  336. if(res.index == 1){
  337. appOpenUrl(bdapp);
  338. }else if(res.index == 2){
  339. appOpenUrl(amapuri);
  340. }else if(res.index == 3){
  341. if(isQQ){
  342. appOpenUrl(qqmap);
  343. }else{
  344. appOpenUrl(qqmapDefault);
  345. }
  346. }else if(res.index == 4){
  347. appOpenUrl(iosmap);
  348. }
  349. }else if(!isBaidu && isGaode){
  350. if(res.index == 1){
  351. appOpenUrl(amapuri);
  352. }else if(res.index == 2){
  353. if(isQQ){
  354. appOpenUrl(qqmap);
  355. }else{
  356. appOpenUrl(qqmapDefault);
  357. }
  358. }else if(res.index == 3){
  359. appOpenUrl(iosmap);
  360. }
  361. }else if(isBaidu && !isGaode){
  362. if(res.index == 1){
  363. appOpenUrl(bdapp);
  364. }else if(res.index == 2){
  365. if(isQQ){
  366. appOpenUrl(qqmap);
  367. }else{
  368. appOpenUrl(qqmapDefault);
  369. }
  370. }else if(res.index == 3){
  371. appOpenUrl(iosmap);
  372. }
  373. }else{
  374. if(res.index == 1){
  375. if(isQQ){
  376. appOpenUrl(qqmap);
  377. }else{
  378. appOpenUrl(qqmapDefault);
  379. }
  380. }else if(res.index == 2){
  381. appOpenUrl(iosmap);
  382. }
  383. }
  384. }
  385. );
  386. // #endif
  387. // #ifndef APP-PLUS
  388. uni.showActionSheet({
  389. itemList:itemList.indexOf("Apple地图")<0 ? itemList.concat("Apple地图"):itemList,
  390. success: (res) => {
  391. if(res.tapIndex == 0){
  392. openURL(bdapp,bdappDown)
  393. }else if(res.tapIndex == 1){
  394. openURL(amapuri,amapuriDown)
  395. }else if(res.tapIndex == 2){
  396. openURL(qqmap,qqmapDefault)
  397. }else if(res.tapIndex == 3){
  398. openURL(iosmap);
  399. }
  400. }
  401. })
  402. // #endif
  403. }
  404. function appOpenUrl(_url){
  405. var _time = new Date().getTime()
  406. plus.runtime.openURL(encodeURI(_url+'&time=' + _time));
  407. }
  408. function openURL(url,downLoadUrl="") {
  409. var _time = new Date().getTime()
  410. window.location.href= encodeURI(url+'&time=' + _time);
  411. var startTime = Date.now();
  412. var endTime = 0;
  413. var t= setTimeout(()=>{
  414. endTime = Date.now() - startTime;
  415. if(endTime>=2000&&!(document.hidden || document.webkitHidden)){
  416. window.location.href = encodeURI(downLoadUrl);
  417. }else{
  418. clearTimeout(t)
  419. }
  420. },2000)
  421. document.addEventListener("visibilitychange",(res)=>{
  422. if(document.hidden || document.webkitHidden){
  423. clearTimeout(t)
  424. }
  425. })
  426. }
  427. let PI = 3.14159265358979324;
  428. let x_pi = 3.14159265358979324 * 3000.0 / 180.0
  429. function delta(lat, lon) {
  430. var a = 6378245.0; // a: 卫星椭球坐标投影到平面地图坐标系的投影因子。
  431. var ee = 0.00669342162296594323; // ee: 椭球的偏心率。
  432. var dLat = transformLat(lon - 105.0, lat - 35.0);
  433. var dLon = transformLon(lon - 105.0, lat - 35.0);
  434. var radLat = lat / 180.0 * PI;
  435. var magic = Math.sin(radLat);
  436. magic = 1 - ee * magic * magic;
  437. var sqrtMagic = Math.sqrt(magic);
  438. dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * PI);
  439. dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * PI);
  440. return {'lat': dLat, 'lon': dLon};
  441. }
  442. function gcj_encrypt(wgsLat, wgsLon) {
  443. if(outOfChina(wgsLat, wgsLon))
  444. return {'lat': wgsLat, 'lon': wgsLon};
  445. var d = delta(wgsLat, wgsLon);
  446. return {'lat' : wgsLat + d.lat,'lon' : wgsLon + d.lon};
  447. }
  448. function bd_decrypt(bdLat, bdLon) {
  449. var x = bdLon - 0.0065, y = bdLat - 0.006;
  450. var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
  451. var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
  452. var gcjLon = z * Math.cos(theta);
  453. var gcjLat = z * Math.sin(theta);
  454. return {'lat' : gcjLat, 'lon' : gcjLon};
  455. }
  456. function outOfChina(lat, lon) {
  457. if (lon < 72.004 || lon > 137.8347)
  458. return true;
  459. if (lat < 0.8293 || lat > 55.8271)
  460. return true;
  461. return false;
  462. }
  463. function transformLat(x, y) {
  464. var ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));
  465. ret += (20.0 * Math.sin(6.0 * x * PI) + 20.0 * Math.sin(2.0 * x * PI)) * 2.0 / 3.0;
  466. ret += (20.0 * Math.sin(y * PI) + 40.0 * Math.sin(y / 3.0 * PI)) * 2.0 / 3.0;
  467. ret += (160.0 * Math.sin(y / 12.0 * PI) + 320 * Math.sin(y * PI / 30.0)) * 2.0 / 3.0;
  468. return ret;
  469. }
  470. function transformLon(x, y) {
  471. var ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));
  472. ret += (20.0 * Math.sin(6.0 * x * PI) + 20.0 * Math.sin(2.0 * x * PI)) * 2.0 / 3.0;
  473. ret += (20.0 * Math.sin(x * PI) + 40.0 * Math.sin(x / 3.0 * PI)) * 2.0 / 3.0;
  474. ret += (150.0 * Math.sin(x / 12.0 * PI) + 300.0 * Math.sin(x / 30.0 * PI)) * 2.0 / 3.0;
  475. return ret;
  476. }
  477. export default {
  478. /* 路程规划 */
  479. routePlan(options,type="gcj02") {
  480. let _origin = options.origin,_destination = options.destination,_mode = options.mode?options.mode:"drive";
  481. if(type.toLowerCase() == "wgs84"){
  482. if(options.origin){
  483. _origin.latitude = gcj_encrypt(options.origin.latitude, options.origin.longitude).lat
  484. _origin.longitude = gcj_encrypt(options.origin.latitude,options.origin.longitude).lon
  485. }
  486. _destination.latitude = gcj_encrypt(options.destination.latitude, options.destination.longitude).lat
  487. _destination.longitude = gcj_encrypt(options.destination.latitude,options.destination.longitude).lon
  488. }else if(type.toLowerCase() == "bd09"){
  489. if(options.origin){
  490. _origin.latitude = bd_decrypt(options.origin.latitude, options.origin.longitude).lat
  491. _origin.longitude = bd_decrypt(options.origin.latitude,options.origin.longitude).lon
  492. }
  493. _destination.latitude = bd_decrypt(options.destination.latitude, options.destination.longitude).lat
  494. _destination.longitude = bd_decrypt(options.destination.latitude, options.destination.longitude).lon
  495. }
  496. // #ifdef MP
  497. // #ifdef MP-WEIXIN
  498. const mapCtx = wx.createMapContext(options.mapId, this);
  499. mapCtx.openMapApp({
  500. latitude: _destination.latitude,
  501. longitude: _destination.longitude,
  502. destination: _destination.name,
  503. complete: res => {
  504. console.log(res);
  505. }
  506. });
  507. // #endif
  508. // #ifdef MP-QQ
  509. qq.openLocation({
  510. latitude: _destination.latitude,
  511. longitude: _destination.longitude,
  512. name: _destination.name
  513. })
  514. // #endif
  515. // #ifdef MP-ALIPAY
  516. my.openLocation({
  517. latitude: _destination.latitude,
  518. longitude: _destination.longitude,
  519. name: _destination.name
  520. })
  521. // #endif
  522. // #ifdef MP-360 || MP-BAIDU || MP-TOUTIAO
  523. uni.openLocation({
  524. latitude: _destination.latitude,
  525. longitude: _destination.longitude,
  526. name: _destination.name
  527. })
  528. // #endif
  529. // #endif
  530. // #ifndef MP
  531. switch(uni.getSystemInfoSync().platform){
  532. case 'android':
  533. console.log('运行Android上')
  534. openMapByAndroid(_origin, _destination,_mode)
  535. break;
  536. case 'ios':
  537. console.log('运行iOS上')
  538. openMapByIos(_origin, _destination,_mode)
  539. break;
  540. default:
  541. console.log('运行在开发者工具上')
  542. break;
  543. }
  544. // #endif
  545. },
  546. navigation(options,type="gcj02"){
  547. let _destination = options.destination;
  548. if(type.toLowerCase() == "wgs84"){
  549. _destination.latitude = gcj_encrypt(options.destination.latitude, options.destination.longitude).lat
  550. _destination.longitude = gcj_encrypt(options.destination.latitude,options.destination.longitude).lon
  551. }else if(type.toLowerCase() == "bd09"){
  552. _destination.latitude = bd_decrypt(options.destination.latitude, options.destination.longitude).lat
  553. _destination.longitude = bd_decrypt(options.destination.latitude, options.destination.longitude).lon
  554. }
  555. // #ifdef MP
  556. // #ifdef MP-WEIXIN
  557. const mapCtx = wx.createMapContext(options.mapId, this);
  558. mapCtx.openMapApp({
  559. latitude: _destination.latitude,
  560. longitude: _destination.longitude,
  561. destination: _destination.name,
  562. complete: res => {
  563. console.log(res);
  564. }
  565. });
  566. // #endif
  567. // #ifdef MP-QQ
  568. qq.openLocation({
  569. latitude: _destination.latitude,
  570. longitude: _destination.longitude,
  571. name: _destination.name
  572. })
  573. // #endif
  574. // #ifdef MP-ALIPAY
  575. my.openLocation({
  576. latitude: _destination.latitude,
  577. longitude: _destination.longitude,
  578. name: _destination.name
  579. })
  580. // #endif
  581. // #ifdef MP-360 || MP-BAIDU || MP-TOUTIAO
  582. uni.openLocation({
  583. latitude: _destination.latitude,
  584. longitude: _destination.longitude,
  585. name: _destination.name
  586. })
  587. // #endif
  588. // #endif
  589. // #ifndef MP
  590. switch(uni.getSystemInfoSync().platform){
  591. case 'android':
  592. console.log('运行Android上')
  593. navigationByAndroid(_destination)
  594. break;
  595. case 'ios':
  596. console.log('运行iOS上')
  597. navigationByIos( _destination)
  598. break;
  599. default:
  600. console.log('运行在开发者工具上')
  601. break;
  602. }
  603. // #endif
  604. }
  605. }