郑州第一人民医院UI

locations.js 5.5KB

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