userAddressAdd.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. var id = mobile.getUrlVars('id');
  2. var index;
  3. var map = new BMap.Map("map");
  4. var myGeo = new BMap.Geocoder();
  5. mui.init();
  6. mui.ready(function() {
  7. mui('#scroll').scroll({
  8. indicators: true //是否显示滚动条
  9. });
  10. if(id){
  11. getById();
  12. $('#del').removeClass('mui-hidden');
  13. }
  14. // var cityPicker = new mui.PopPicker({
  15. // layer: 3
  16. // });
  17. // cityPicker.setData(cityData);
  18. // cityPicker.pickers[0].setSelectedValue(360000);
  19. // setTimeout(function(){
  20. // cityPicker.pickers[1].setSelectedValue(361100);
  21. // },100);
  22. // $('#to_address').on('tap', function(event){
  23. // cityPicker.show(function(items) {
  24. // var arr = [];
  25. // arr.push('<span id="province">'+(items[0] || {}).text+'</span> ');
  26. // arr.push('<span id="city">'+(items[1] || {}).text+'</span> ');
  27. // arr.push('<span id="district">'+(items[2] || {}).text+'</span> ');
  28. // $('#to_address').html(arr.join(''));
  29. // });
  30. // });
  31. $('#del').on('tap', function() {
  32. mobile.ajaxPost(base + '/userAddress/delete', {id:id}, function(json) {
  33. if(json.success){
  34. layer.open({content:'删除成功',time:1});
  35. setTimeout(function() {
  36. history.back();
  37. }, 1000);
  38. }else{
  39. layer.open({content:'删除失败',time:3});
  40. }
  41. });
  42. });
  43. $("#location").on("tap","li",function(){
  44. $('#province').html($(this).attr("province"));
  45. $('#city').html($(this).attr("city"));
  46. $('#district').html($(this).attr("district"));
  47. $('#longitude').val($(this).find(".longitude").html());
  48. $('#latitude').val($(this).find(".latitude").html());
  49. $('#post_code').val($(this).find(".postCode").html());
  50. $('#address').val($(this).find(".address").html());
  51. $('#select').removeClass('mui-active');
  52. });
  53. $('.mui-btn-primary').on('tap',function(){
  54. var param = new Object();
  55. if(id){
  56. param.id=id;
  57. }
  58. param.consignee = $.trim($('#consignee').val());
  59. param.mobile = $.trim($('#mobile').val());
  60. param.province = $.trim($('#province').html());
  61. param.city = $.trim($('#city').html());
  62. param.district = $.trim($('#district').html());;
  63. param.address = $.trim($('#address').val());
  64. param.house_num = $.trim($('#house_num').val());
  65. param.longitude = $.trim($('#longitude').val());
  66. param.latitude = $.trim($('#latitude').val());
  67. param.post_code = $.trim($('#post_code').val());
  68. if(document.querySelector('#is_default').checked){
  69. param.is_default = '1';
  70. }else{
  71. param.is_default = '0';
  72. }
  73. if(!param.consignee){
  74. layer.open({content:'请输入收货人',time:3});
  75. $('#consignee').focus();
  76. return;
  77. }
  78. if(!param.mobile){
  79. layer.open({content:'请输入手机号码',time:3});
  80. $('#mobile').focus();
  81. return;
  82. }
  83. if(!mobile.checkMobile(param.mobile)){
  84. layer.open({content:'请输入正确手机号码',time:3});
  85. return;
  86. }
  87. if(!param.address){
  88. layer.open({content:'请选择地址',time:3});
  89. $('#address').focus();
  90. return;
  91. }
  92. if(!param.house_num){
  93. layer.open({content:'请输入门牌号码',time:3});
  94. $('#house_num').focus();
  95. return;
  96. }
  97. mobile.ajaxPost(base + '/userAddress/save', param, function(json) {
  98. if(json.success){
  99. layer.open({content:json.msg,time:1});
  100. setTimeout(function() {
  101. history.back();
  102. }, 1000);
  103. }else{
  104. layer.open({content:json.msg,time:3});
  105. }
  106. });
  107. });
  108. $(".to-address").on("tap",function(){
  109. initmap();
  110. $('#select').addClass('mui-active');
  111. });
  112. $("#select").on("tap",'.mui-icon-left-nav',function(){
  113. $('#select').removeClass('mui-active');
  114. });
  115. //搜索
  116. $(".mui-search").on("keyup","input[type='search']",function(){
  117. var key = $.trim($(this).val());
  118. local.search(key);
  119. });
  120. //搜索
  121. $("#search").on("tap",function(){
  122. var key = $.trim($('.mui-indexed-list-search-input').val());
  123. local.search(key);
  124. });
  125. var options = {
  126. onSearchComplete: function(results){
  127. $('#location').html('');
  128. if (local.getStatus() == BMAP_STATUS_SUCCESS){
  129. for (var i = 0; i < results.getCurrentNumPois(); i ++){
  130. (function(i){
  131. var place = results.getPoi(i);
  132. var point = new BMap.Point(place.point.lng,place.point.lat);
  133. myGeo.getLocation(point, function(result){
  134. if (result){
  135. var addComp = result.addressComponents;
  136. var html = '<li class="mui-table-view-cell" province="'+place.province+'" city="'+place.city+'" district="'+addComp.district+'">' +
  137. '<p class="mui-ellipsis-2 color1 fs16 mb5">'+
  138. '<i class="fs16 color2 mui-icon iconfont icon-shouhuodizhi"></i><span class="address">' + place.title + '</span></p>' +
  139. '<p>' + place.address + '</p>' +
  140. '<span class="longitude" style="display: none;">' + place.point.lng + '</span>' +
  141. '<span class="latitude" style="display: none;">' + place.point.lat + '</span>' +
  142. '<span class="postCode" style="display: none;"></span>' +
  143. '</li>';
  144. $('#location').append(html);
  145. }
  146. });
  147. })(i);
  148. }
  149. }
  150. }
  151. };
  152. var local = new BMap.LocalSearch(map, options);
  153. });
  154. //获取地址
  155. function getById() {
  156. mobile.ajaxPost(base + '/userAddress/getById', {id:id}, function(json) {
  157. if(json.data){
  158. $.each(json.data,function(key,value){
  159. if($('#'+key)){
  160. $('#'+key).val(mobile.nullToSpace(value));
  161. }
  162. });
  163. var arr = [];
  164. arr.push('<span id="province">'+json.data.province+'</span> ');
  165. arr.push('<span id="city">'+json.data.city+'</span> ');
  166. arr.push('<span id="district">'+mobile.nullToSpace(json.data.district)+'</span> ');
  167. $('#to_address').html(arr.join(''));
  168. if(json.data.is_default=='1'){
  169. document.querySelector('#is_default').checked=true;
  170. }
  171. }
  172. });
  173. }
  174. //初始化地图
  175. function initmap() {
  176. //index = layer.open({type: 3, shadeClose:false, content: '定位中...'});
  177. map.centerAndZoom(new BMap.Point(117.950, 28.463), 16);
  178. map.enableScrollWheelZoom();
  179. map.enableDragging();
  180. wx.ready(function(){
  181. wx.getLocation({
  182. type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
  183. success: function (res) {
  184. $.ajax({
  185. url:'http://api.map.baidu.com/geoconv/v1/?coords='+res.longitude+','+res.latitude+'&from=1&to=5&ak=3Q4laSROftZI4chFMPVUno90',
  186. dataType:'jsonp',
  187. processData: false,
  188. type:'get',
  189. success:function(data){
  190. if (data.status=='0'){
  191. var latitude=data.result[0].y;
  192. var longitude=data.result[0].x;
  193. var point = new BMap.Point(longitude,latitude);
  194. map.panTo(point);
  195. function PositionControl() {
  196. // 默认停靠位置和偏移量
  197. this.defaultAnchor = BMAP_ANCHOR_TOP_LEFT;
  198. this.defaultOffset = new BMap.Size($(document).width()/2 - 12, $('#map').height()/2 - 26); // 距离左上角位置
  199. }
  200. // 通过JavaScript的prototype属性继承于BMap.Control
  201. PositionControl.prototype = new BMap.Control();
  202. // 自定义控件必须实现自己的initialize方法,并且将控件的DOM元素返回
  203. // 在本方法中创建个div元素作为控件的容器,并将其添加到地图容器中
  204. PositionControl.prototype.initialize = function(map) {
  205. // 创建一个DOM元素,24X26
  206. var div = document.createElement("span");
  207. // 设置样式
  208. div.className = "mui-icon iconfont icon-wodeweizhi";
  209. div.style.color = 'red';
  210. // 绑定事件
  211. div.onclick = function(e) {
  212. }
  213. // 添加DOM元素到地图中
  214. map.getContainer().appendChild(div);
  215. // 将DOM元素返回
  216. return div;
  217. }
  218. // 创建控件
  219. var myZoomCtrl = new PositionControl();
  220. // 添加到地图当中
  221. map.addControl(myZoomCtrl);
  222. map.addEventListener('moveend', function() {
  223. var pos = map.getCenter();
  224. getAddress(pos.lat, pos.lng);
  225. });
  226. getAddress(point.lat, point.lng);
  227. }else{
  228. layer.msg('坐标转换失败');
  229. }
  230. },
  231. error:function(XMLHttpRequest, textStatus, errorThrown) {
  232. layer.msg('坐标转换失败');
  233. }
  234. });
  235. }
  236. });
  237. });
  238. }
  239. function getAddress(baiduPointLat, baiduPointLng) {
  240. $('#location').html('');
  241. var url = 'http://api.map.baidu.com/geocoder/v2/?ak=3Q4laSROftZI4chFMPVUno90' +
  242. '&callback=renderReverse' +
  243. '&location=' + baiduPointLat + ',' + baiduPointLng +
  244. '&output=json' +
  245. '&pois=1';
  246. $.ajax({
  247. type: 'GET',
  248. dataType: 'jsonp',
  249. url: url,
  250. beforeSend: function() {
  251. //index = layer.open({type: 3, shadeClose:false, content: '加载中...'});
  252. },
  253. success: function(json) {
  254. layer.close(index);
  255. if (json == null || typeof (json) == 'undefined') {
  256. return;
  257. }
  258. if (json.status != '0') {
  259. return;
  260. }
  261. var result = json.result;
  262. var province = result.addressComponent.province;
  263. var city = result.addressComponent.city;
  264. var district = result.addressComponent.district;
  265. for (var i = 0; i < json.result.pois.length; i++) {
  266. var poi = json.result.pois[i];
  267. var html = '<li class="mui-table-view-cell" province="'+province+'" city="'+city+'" district="'+district+'">' +
  268. '<p class="mui-ellipsis-2 color1 fs16 mb5">'+
  269. '<i class="fs16 color2 mui-icon iconfont icon-shouhuodizhi"></i><span class="address">' + poi.name + '</span></p>' +
  270. '<p>' + poi.addr + '</p>' +
  271. '<span class="longitude" style="display: none;">' + poi.point.x + '</span>' +
  272. '<span class="latitude" style="display: none;">' + poi.point.y + '</span>' +
  273. '<span class="postCode" style="display: none;">' + poi.zip + '</span>' +
  274. '</li>';
  275. $('#location').append(html);
  276. }
  277. },
  278. error: function (XMLHttpRequest, textStatus, errorThrown) {
  279. layer.close(index);
  280. layer.open({content:'地址位置获取失败', time:3});
  281. $('#refreshLocation').show();
  282. }
  283. });
  284. }