yiqing.js 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. var id = mobile.getUrlVars('id');
  2. var index;
  3. var map = new BMap.Map("map");
  4. var myGeo = new BMap.Geocoder();
  5. var mypoint;
  6. mui.init();
  7. mui.ready(function() {
  8. initmap();
  9. $("#location").on("tap","li",function(){
  10. $('#location').hide();
  11. mypoint = new BMap.Point($(this).find(".longitude").html(),$(this).find(".latitude").html());
  12. var allOverlay = map.getOverlays();
  13. for (var i = 0; i < allOverlay.length -1; i++){
  14. console.info(allOverlay[i].getTitle());
  15. if(allOverlay[i].getTitle() == "位置"){
  16. map.removeOverlay(allOverlay[i]);
  17. }
  18. }
  19. addPoint();
  20. });
  21. //搜索
  22. $(".mui-search").on("input propertychange","input[type='search']",function(){
  23. var key = $.trim($('.mui-indexed-list-search-input').val());
  24. local.search(key);
  25. });
  26. //搜索
  27. $("#search").on("tap",function(){
  28. var key = $.trim($('.mui-indexed-list-search-input').val());
  29. local.search(key);
  30. });
  31. //隐藏
  32. $(".mui-icon-closeempty").on("tap",function(){
  33. $('.source').hide();
  34. });
  35. var options = {
  36. onSearchComplete: function(results){
  37. $('#location').html('');
  38. if (local.getStatus() == BMAP_STATUS_SUCCESS){
  39. for (var i = 0; i < results.getCurrentNumPois(); i ++){
  40. (function(i){
  41. var place = results.getPoi(i);
  42. var point = new BMap.Point(place.point.lng,place.point.lat);
  43. myGeo.getLocation(point, function(result){
  44. if (result){
  45. var addComp = result.addressComponents;
  46. var html = '<li class="mui-table-view-cell" style="padding: 0.15rem 0.3rem" province="'+place.province+'" city="'+place.city+'" district="'+addComp.district+'">' +
  47. '<p class="mui-ellipsis-2 color1 fs16">'+
  48. '<i class="fs16 color2 mui-icon iconfont icon-shouhuodizhi"></i><span class="address">' + place.title + '</span></p>' +
  49. '<span class="longitude" style="display: none;">' + place.point.lng + '</span>' +
  50. '<span class="latitude" style="display: none;">' + place.point.lat + '</span>' +
  51. '<span class="postCode" style="display: none;"></span>' +
  52. '</li>';
  53. $('#location').append(html);
  54. $('#location').show();
  55. }
  56. });
  57. })(i);
  58. }
  59. }
  60. }
  61. };
  62. var local = new BMap.LocalSearch(map, options);
  63. });
  64. //初始化地图
  65. function initmap() {
  66. $("#map").css("height",$(window).height()-$(".mui-search").height()-$(".mui-bar-tab").height());
  67. map.centerAndZoom(new BMap.Point(117.950, 28.463), 16);
  68. var top_right_navigation = new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_LEFT, type: BMAP_NAVIGATION_CONTROL_SMALL});
  69. map.addControl(top_right_navigation);
  70. map.enableScrollWheelZoom();
  71. map.enableDragging();
  72. wx.ready(function(){
  73. index = layer.open({type: 3, shadeClose:false, content: '定位中...'});
  74. wx.getLocation({
  75. type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
  76. success: function (res) {
  77. $.ajax({
  78. url:'http://api.map.baidu.com/geoconv/v1/?coords='+res.longitude+','+res.latitude+'&from=1&to=5&ak=3Q4laSROftZI4chFMPVUno90',
  79. dataType:'jsonp',
  80. processData: false,
  81. type:'get',
  82. success:function(data){
  83. layer.close(index);
  84. if (data.status=='0'){
  85. var latitude=data.result[0].y;
  86. var longitude=data.result[0].x;
  87. mypoint = new BMap.Point(longitude,latitude);
  88. addPoint();
  89. }else{
  90. layer.msg('坐标转换失败');
  91. }
  92. },
  93. error:function(XMLHttpRequest, textStatus, errorThrown) {
  94. layer.close(index);
  95. layer.msg('坐标转换失败');
  96. }
  97. });
  98. }
  99. });
  100. });
  101. }
  102. function getAddress(baiduPointLat, baiduPointLng) {
  103. $('#location').html('');
  104. var url = 'http://api.map.baidu.com/geocoder/v2/?ak=3Q4laSROftZI4chFMPVUno90' +
  105. '&callback=renderReverse' +
  106. '&location=' + baiduPointLat + ',' + baiduPointLng +
  107. '&output=json' +
  108. '&pois=1';
  109. $.ajax({
  110. type: 'GET',
  111. dataType: 'jsonp',
  112. url: url,
  113. beforeSend: function() {
  114. //index = layer.open({type: 3, shadeClose:false, content: '加载中...'});
  115. },
  116. success: function(json) {
  117. layer.close(index);
  118. if (json == null || typeof (json) == 'undefined') {
  119. return;
  120. }
  121. if (json.status != '0') {
  122. return;
  123. }
  124. var result = json.result;
  125. var province = result.addressComponent.province;
  126. var city = result.addressComponent.city;
  127. var district = result.addressComponent.district;
  128. for (var i = 0; i < json.result.pois.length; i++) {
  129. var poi = json.result.pois[i];
  130. var html = '<li class="mui-table-view-cell" province="'+province+'" city="'+city+'" district="'+district+'">' +
  131. '<p class="mui-ellipsis-2 color1 fs16 mb5">'+
  132. '<i class="fs16 color2 mui-icon iconfont icon-shouhuodizhi"></i><span class="address">' + poi.name + '</span></p>' +
  133. '<p>' + poi.addr + '</p>' +
  134. '<span class="longitude" style="display: none;">' + poi.point.x + '</span>' +
  135. '<span class="latitude" style="display: none;">' + poi.point.y + '</span>' +
  136. '<span class="postCode" style="display: none;">' + poi.zip + '</span>' +
  137. '</li>';
  138. $('#location').append(html);
  139. }
  140. },
  141. error: function (XMLHttpRequest, textStatus, errorThrown) {
  142. layer.close(index);
  143. layer.open({content:'地址位置获取失败', time:3});
  144. $('#refreshLocation').show();
  145. }
  146. });
  147. }
  148. function addPoint(){
  149. map.clearOverlays();
  150. map.panTo(mypoint);
  151. var myIcon = new BMap.Icon(base+"/static/mobile/image/p.png", new BMap.Size(48,48));
  152. var marker = new BMap.Marker(mypoint,{icon:myIcon});// 创建标注
  153. marker.setTitle("位置");
  154. map.addOverlay(marker);// 将标注添加到地图中
  155. yiying();
  156. }
  157. function yiying(){
  158. var min=0;
  159. var minYiqing;
  160. var km3=0;
  161. var km5=0;
  162. $.each(yiqing,function (i,item) {
  163. var point = new BMap.Point(item.lng,item.lat);
  164. var myIcon = new BMap.Icon(base+"/static/mobile/image/y.png", new BMap.Size(40,40));
  165. var marker = new BMap.Marker(point,{icon:myIcon});// 创建标注
  166. marker.setTitle("病历");
  167. map.addOverlay(marker);// 将标注添加到地图中
  168. var distance = parseInt(map.getDistance(mypoint,point));
  169. if (distance<=3000){
  170. km3++;
  171. }
  172. if (distance<=5000){
  173. km5++;
  174. }
  175. if (i==0 ){
  176. min = distance;
  177. minYiqing=item;
  178. }else{
  179. if (distance<min){
  180. min = distance;
  181. minYiqing=item;
  182. }
  183. }
  184. });
  185. $(".distance").html(getDistance(min));
  186. $(".address").html(minYiqing.address);
  187. $(".km3").html("3公里内有"+km3+"个病例");
  188. $(".km5").html("5公里内有"+km5+"个病例");
  189. var point = new BMap.Point(minYiqing.lng,minYiqing.lat);
  190. map.panTo(point);
  191. $(".source").show();
  192. }
  193. function getDistance(distance){
  194. var i= parseInt(distance);
  195. if(i<1000){
  196. return i+"米";
  197. }else{
  198. var f = parseFloat(i/1000);
  199. if (isNaN(f)) {
  200. return;
  201. }
  202. f = Math.round(i/1000 * 10) / 10;
  203. return f+"公里";
  204. }
  205. }