navigation.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. (function () {
  2. var page = {
  3. init: function ($page, param) {
  4. var originName='我的当前位置';//北四环东路 望和路
  5. var origin = new Array(39.98871,116.43234);//origin[0]为纬度,origin[1]为经度
  6. var destinationName = '故宫博物馆';
  7. var destination=new Array(39.9168,116.3908);//目的地纬度、经度。先纬度后经度
  8. renlian.layer.loading(true, "加载数据中");
  9. //地图初始化
  10. var map = new AMap.Map("navigation-map", {
  11. resizeEnable: true,
  12. center: [113.955439, 22.542956],//地图中心点
  13. zoom: 12 //地图显示的缩放级别
  14. });
  15. var mapList = [
  16. {
  17. value: "com.baidu.BaiduMap",
  18. text: "百度地图",
  19. },
  20. {
  21. value: "com.autonavi.minimap",
  22. text: "高德地图",
  23. },
  24. {
  25. value: "com.tencent.map",
  26. text: "腾讯地图",
  27. },
  28. {
  29. value: "com.google.android.apps.maps",
  30. text: "谷歌地图",
  31. }
  32. ];
  33. map.on('complete', function(){
  34. renlian.layer.loading(false);
  35. });
  36. var riding = null;
  37. var userMarker = new AMap.Marker({icon: "./images/location.png", offset:new AMap.Pixel(-16, -16)});
  38. //骑行导航
  39. if(!riding){
  40. var riding = new AMap.Riding({
  41. map: map,
  42. autoFitView: true
  43. });
  44. }
  45. param.start = [121.13, 30.33];
  46. //根据起终点坐标规划骑行路线
  47. riding.search(param.start, param.end, function(status, result) {
  48. // result即是对应的骑行路线数据信息,相关数据结构文档请参考 https://lbs.amap.com/api/javascript-api/reference/route-search#m_RidingResult
  49. if (status === 'complete') {
  50. // renlian.layer.toast('绘制骑行路线完成:');
  51. } else {
  52. renlian.layer.toast('骑行路线数据查询失败:' + result);
  53. }
  54. });
  55. var presentLnglat = null;
  56. function get_mobile_gps_location(onSuccess,onError){
  57. var onSuccess = function(position) {
  58. // alert('Latitude: ' + position.coords.latitude + '\n' +
  59. // 'Longitude: ' + position.coords.longitude + '\n' +
  60. // 'Altitude: ' + position.coords.altitude + '\n' +
  61. // 'Accuracy: ' + position.coords.accuracy + '\n' +
  62. // 'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '\n' +
  63. // 'Heading: ' + position.coords.heading + '\n' +
  64. // 'Speed: ' + position.coords.speed + '\n' +
  65. // 'Timestamp: ' + position.timestamp + '\n');
  66. var gps = [position.coords.longitude, position.coords.latitude];
  67. AMap.convertFrom(gps, 'gps', function (status, result) {
  68. if (result.info === 'ok') {
  69. var lnglats = result.locations; // Array.<LngLat>
  70. }
  71. presentLnglat = new AMap.LngLat(lnglats[0].lng, lnglats[0].lat);
  72. userMarker.setPosition(presentLnglat);
  73. userMarker.setMap(map);
  74. });
  75. // presentLnglat = new AMap.LngLat(position.coords.longitude, position.coords.latitude);
  76. // userMarker.setPosition(presentLnglat);
  77. // userMarker.setMap(map);
  78. };
  79. // onError Callback receives a PositionError object
  80. //
  81. function onError(error) {
  82. console.log('code: ' + error.code + '\n' +
  83. 'message: ' + error.message + '\n');
  84. }
  85. navigator.geolocation.getCurrentPosition(onSuccess, onError);
  86. }
  87. var geocoder = null;
  88. var locationAuto = setInterval(function(){
  89. if($('.f-page').length < 2){
  90. clearTimeout(locationAuto);
  91. }
  92. if(window.lrmui.isreal){
  93. get_mobile_gps_location();
  94. var lnglat = presentLnglat;
  95. // var lnglat = [113.951104,22.542902];
  96. if(!geocoder){
  97. geocoder = new AMap.Geocoder({
  98. radius: 50
  99. });
  100. }
  101. console.log('dd');
  102. geocoder.getAddress(lnglat, function(status, result) {
  103. if (status === 'complete' && result.regeocode) {
  104. address = result.regeocode.formattedAddress;
  105. $('#navg-address').text(address);
  106. }else{console.log(JSON.stringify(result))}
  107. });
  108. }
  109. }, 2000);
  110. function haveInstalledApp(){//通过包名判断app是否安装
  111. var mapList = document.getElementsByClassName('mapLi');
  112. var baiduPackageName = "com.baidu.BaiduMap";
  113. var gaodePackageName = "com.autonavi.minimap";
  114. var tengxunPackageName = "com.tencent.map";
  115. var gugePackageName = "com.google.android.apps.maps";
  116. appAvailability.check(baiduPackageName,function () {//success callback
  117. mapList.item(0).style.display = 'block';
  118. },function () {//
  119. mapList.item(0).style.display = 'none';
  120. });
  121. appAvailability.check(gaodePackageName,function () {//success callback
  122. mapList.item(1).style.display = 'block';
  123. },function () {//
  124. mapList.item(1).style.display = 'none';
  125. });
  126. appAvailability.check(tengxunPackageName,function () {//success callback
  127. mapList.item(2).style.display = 'block';
  128. },function () {//
  129. mapList.item(2).style.display = 'none';
  130. });
  131. appAvailability.check(gugePackageName,function () {//success callback
  132. mapList.item(3).style.display = 'block';
  133. // mapList.item(4).style.display = 'block';
  134. },function () {
  135. mapList.item(3).style.display = 'none';
  136. // mapList.item(4).style.display = 'none';
  137. });
  138. }
  139. // $('#daohang-button').on('tap', function(){
  140. // });
  141. $('#daohang-button').rlpicker({
  142. data: mapList
  143. },function(map){
  144. appAvailability.check(map,function () {//success callback
  145. if(map == 'com.baidu.BaiduMap'){
  146. checkBaidu();
  147. }
  148. if(map == 'com.autonavi.minimap'){
  149. checkGaode();
  150. }
  151. if(map == 'com.tencent.map'){
  152. checkTengxun();
  153. }
  154. if(map == 'com.google.android.apps.maps'){
  155. checkGuge();
  156. }
  157. },function () {//
  158. renlian.layer.msg('未检测到该地图应用');
  159. });
  160. });
  161. //
  162. function checkBaidu(){
  163. var sApp = startApp.set({ /* params */
  164. "action":"ACTION_VIEW",
  165. "category":"CATEGORY_DEFAULT",
  166. "type":"text/css",
  167. "package":"com.baidu.BaiduMap",
  168. "uri":"baidumap://map/direction?origin=name:"+originName+"|latlng:"+origin[0]+","+origin[1]+"&destination=name:"+destinationName+"|latlng:"+destination[0]+","+destination[1]+"&mode=driving",
  169. "flags":["FLAG_ACTIVITY_CLEAR_TOP","FLAG_ACTIVITY_CLEAR_TASK"],
  170. "intentstart":"startActivity"
  171. });
  172. sApp.start(function() { /* success */
  173. //alert("OK");
  174. }, function(error) { /* fail */
  175. alert(error);
  176. });
  177. }
  178. function checkGaode(){
  179. var sApp = startApp.set({ /* params */
  180. "action":"ACTION_VIEW",
  181. "category":"CATEGORY_DEFAULT",
  182. "type":"text/css",
  183. "package":"com.autonavi.minimap",
  184. "uri":"amapuri://route/plan/?slat="+origin[0]+"&slon="+origin[1]+"&sname="+originName+"&dlat="+destination[0]+"&dlon="+destination[1]+"&dname="+destinationName+"&dev=0&t=0",
  185. "flags":["FLAG_ACTIVITY_CLEAR_TOP","FLAG_ACTIVITY_CLEAR_TASK"],
  186. "intentstart":"startActivity"
  187. });
  188. sApp.start(function() { /* success */
  189. //alert("OK");
  190. }, function(error) { /* fail */
  191. alert(error);
  192. });
  193. }
  194. function checkTengxun(){
  195. var sApp = startApp.set({ /* params */
  196. "action":"ACTION_VIEW",
  197. "category":"CATEGORY_DEFAULT",
  198. "type":"text/css",
  199. "package":"com.tencent.map",
  200. "uri":"qqmap://map/routeplan?type=drive&from="+originName+"&fromcoord="+origin[0]+","+origin[1]+"&to="+destinationName+"&tocoord="+destination[0]+","+destination[1]+"&coord_type=1&policy=0",
  201. "flags":["FLAG_ACTIVITY_CLEAR_TOP","FLAG_ACTIVITY_CLEAR_TASK"],
  202. "intentstart":"startActivity"
  203. });
  204. sApp.start(function() { /* success */
  205. //alert("OK");
  206. }, function(error) { /* fail */
  207. alert(error);
  208. });
  209. }
  210. function checkGuge(){//指定终点经纬度,默认当前位置
  211. var sApp = startApp.set({ /* params */
  212. "action":"ACTION_VIEW",
  213. "category":"CATEGORY_DEFAULT",
  214. "type":"text/css",
  215. "package":"com.google.android.apps.maps",
  216. "uri":"google.navigation:q="+destination[0]+","+destination[1],
  217. "flags":["FLAG_ACTIVITY_CLEAR_TOP","FLAG_ACTIVITY_CLEAR_TASK"],
  218. "intentstart":"startActivity"
  219. });
  220. sApp.start(function() { /* success */
  221. //alert("OK");
  222. }, function(error) { /* fail */
  223. alert(error);
  224. });
  225. }
  226. },
  227. reload:function(pageinfo){
  228. console.log('testsfadfasd')
  229. }
  230. };
  231. return page;
  232. })();