郑州第一人民医院UI

locations1.js 6.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. /**
  2. * 地图相关
  3. * */
  4. var map, curentlatlng, startHeart = null,
  5. markersArray = [],
  6. rlatLngs = {};//维修师傅坐标
  7. $(function() {
  8. //getRepairlatLng();//获取维修师傅坐标
  9. getLocation(); //获取当前位置
  10. });
  11. //获取当前位置
  12. function getLocation() {
  13. var geolocation = new qq.maps.Geolocation("26KBZ-YBJRO-3RPWW-SUEYL-K2KKQ-BTBYL", "myappV1.00");
  14. var options = {
  15. timeout: 8000
  16. };
  17. geolocation.getLocation(showPosition, showErr, options)
  18. }
  19. function showErr(err) {
  20. mui.alert("定位失败!" + err);
  21. };
  22. function showPosition(position) {
  23. //alert('精确度:' + position.accuracy + '\n方式:' + position.type + '\n' + position.addr + '附近\n' + position.nation + position.province + position.city + position.addr + '附近');
  24. var lat = position.lat;
  25. var lng = position.lng;
  26. curentlatlng = new qq.maps.LatLng(lat, lng); //当前地理位置
  27. var repairlat = rlatLngs.lat;
  28. var repairlng = rlatLngs.lng;
  29. //创建地图
  30. map = new qq.maps.Map(document.getElementById("container"), {
  31. center: curentlatlng,
  32. zoom: 15,
  33. zoomControl: true, //设置缩放控制启用
  34. zoomControlOptions: { //设置缩放控件的样式状态
  35. style: qq.maps.ZoomControlStyle.SMALL
  36. },
  37. //如果为 true,在初始化地图时不会清除地图容器内的内容
  38. noClear: true,
  39. //用作地图 div 的背景颜色。当用户进行平移时,如果尚未载入图块,则显示此颜色。仅在地图初始化时,才能设置此选项
  40. backgroundColor: "#96bffd",
  41. });
  42. //可以设置中心点
  43. // if(repairlat && repairlng) {
  44. // var repairlatLng = new qq.maps.LatLng(repairlat, repairlng); //维修工位置
  45. // //返回在起终点连线上位于给定比例的点坐标。比例值fraction范围为0~1。
  46. // var centerlatLng = qq.maps.geometry.spherical.interpolate(curentlatlng, repairlatLng, 0.4);
  47. // map.setCenter(centerlatLng);
  48. // }
  49. //设置当前位置的marker标记
  50. var anchor = new qq.maps.Point(6, 6),
  51. size = new qq.maps.Size(50, 76),
  52. origin = new qq.maps.Point(0, 0),
  53. icon = new qq.maps.MarkerImage('../img/myself.png', size, origin, anchor);
  54. var marker = new qq.maps.Marker({
  55. icon: icon,
  56. map: map,
  57. position: curentlatlng,
  58. });
  59. //setTimeout(function() { $("#container").find('[onresize="return;"]').remove(); $("#container").find('[onpositionupdate="return;"]').remove(); }, 500);
  60. //实时路况图层
  61. var layer = new qq.maps.TrafficLayer();
  62. layer.setMap(map);
  63. getRepairs();
  64. startHeart = setInterval(getRepairs, 60000);
  65. }
  66. //获取维修工位置添加标记
  67. function getRepairs() {
  68. getRepairlatLng();//获取维修师傅坐标
  69. var repairlat = rlatLngs.lat;
  70. var repairlng = rlatLngs.lng;
  71. if(repairlat && repairlng) {
  72. var repairlatLng = new qq.maps.LatLng(repairlat, repairlng); //维修工位置这个位置需要每隔 1分钟 动态获取
  73. //返回在起终点连线上位于给定比例的点坐标。比例值fraction范围为0~1。
  74. //var centerlatLng = qq.maps.geometry.spherical.interpolate(curentlatlng, repairlatLng, 0.4);
  75. //map.setCenter(centerlatLng);
  76. //计算两点间的距离
  77. var distance = qq.maps.geometry.spherical.computeDistanceBetween(curentlatlng, repairlatLng);
  78. console.log("维修工距离我:" + Math.ceil(distance) + "米");
  79. //删除标记
  80. deleteOverlays();
  81. //给维修工添加位置标记
  82. getRepairPoint(repairlatLng);
  83. //当两者距离小于50米视为到了
  84. if(Math.ceil(distance) < 50) {
  85. clearInterval(startHeart);
  86. mui.alert('维修师傅到了,请准备开门!');
  87. }
  88. }else{
  89. //mui.alert("维修师傅的位置获取失败,请确认网络状态良好!");
  90. }
  91. }
  92. //获取维修工位置
  93. function getRepairlatLng(usercode) {
  94. $.getJSON(huayi.config.callcenter_url + 'wechatapi/api/location/getlocationasync', { usercode: usercode }, function (data) {
  95. if (res.state.toLowerCase() == "success") {
  96. rlatLngs.lat = res.data.longitude;
  97. rlatLngs.lng = res.data.latitude;
  98. }
  99. });
  100. }
  101. //给维修工添加位置标记(自定义标记,添加文本标记,划线)
  102. function getRepairPoint(latLng) {
  103. var anchor = new qq.maps.Point(6, 6),
  104. size = new qq.maps.Size(50, 76),
  105. origin = new qq.maps.Point(0, 0),
  106. icon = new qq.maps.MarkerImage('../img/worker.png', size, origin, anchor);
  107. var marker = new qq.maps.Marker({
  108. icon: icon,
  109. map: map,
  110. position: latLng
  111. });
  112. //划线
  113. // var polyline = new qq.maps.Polyline({
  114. // path: [curentlatlng, latLng],
  115. // strokeColor: '#39a8de',
  116. // strokeWeight: 1,
  117. // editable: false,
  118. // map: map
  119. // });
  120. markersArray.push(marker);
  121. // markersArray.push(polyline);
  122. }
  123. //删除覆盖物
  124. function deleteOverlays() {
  125. if(markersArray) {
  126. for(i in markersArray) {
  127. markersArray[i].setMap(null);
  128. }
  129. markersArray.length = 0;
  130. }
  131. }
  132. //地址和经纬度之间进行转换服务(地址 --》 坐标地址);
  133. function getPointByAddr() {
  134. var address = '中国,北京,海淀区,海淀大街38号';
  135. var geocoder = new qq.maps.Geocoder();
  136. //对指定地址进行解析
  137. geocoder.getLocation(address);
  138. //设置服务请求成功的回调函数
  139. geocoder.setComplete(function(result) {
  140. alert("坐标地址为: " + result.detail.location);
  141. });
  142. //若服务请求失败,则运行以下函数
  143. geocoder.setError(function() {
  144. alert("出错了,请输入正确的地址!!!");
  145. });
  146. }
  147. //地址和经纬度之间进行转换服务(坐标地址 --》 地址 );
  148. function getAddrByPoint() {
  149. var lat = 39.98174;
  150. var lng = 116.30631;
  151. var latLng = new qq.maps.LatLng(lat, lng);
  152. var geocoder = new qq.maps.Geocoder();
  153. //调用获取位置方法
  154. geocoder.getAddress(latLng);
  155. //设置服务请求成功的回调函数
  156. geocoder.setComplete(function(result) {
  157. alert("详细地址为: " + result.detail.address);
  158. });
  159. //若服务请求失败,则运行以下函数
  160. geocoder.setError(function() {
  161. alert("出错了,请输入正确的地址!!!");
  162. });
  163. }