main.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418
  1. var map = new BMap.Map("map"); // 创建Map实例
  2. !function(){ //初始化地图模块相关代码
  3. map.enableScrollWheelZoom(); // 启用滚轮放大缩小 map.enableContinuousZoom(); // 启用地图惯性拖拽,默认禁用 map.enableInertialDragging(); // 启用连续缩放效果,默认禁用。 map.addControl(new BMap.NavigationControl()); // 添加平移缩放控件
  4. map.addControl(new BMap.ScaleControl()); // 添加比例尺控件
  5. map.addControl(new BMap.OverviewMapControl()); // 添加缩略地图控件
  6. map.addControl(new BMap.MapTypeControl()); // 添加地图类型控件
  7. map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); // 初始化地图,设置中心点坐标和地图级别
  8. map.setCurrentCity("北京"); //由于有3D图,需要设置城市哦
  9. }();
  10. /**
  11. * 一些常用的方法
  12. */
  13. var Util = {
  14. /**
  15. * 根据类型的id获取相应的名称
  16. * @param Number typeid
  17. * @return String 名称
  18. */
  19. getLeaseNameByType: function(type) {
  20. var lease = {
  21. '1' : "整租",
  22. '2' : "单间出租",
  23. '3' : "单间出租(隔断)",
  24. '4' : "床位出租"
  25. }
  26. return lease[type];
  27. },
  28. /**
  29. * 设置Map容器的高度
  30. */
  31. setMapHeight: function() {
  32. var mapBoxHeight = $(window).height() - $('#pageHeader').height() - $('#pageMiddle').height() - 38;
  33. $('#mapBox').css({height: mapBoxHeight + 'px'});
  34. },
  35. //跳转到小猪短租页时添加统计
  36. addLogCount: function() {
  37. var img = new Image();
  38. var t = new Date().getTime();
  39. img.src = "http://api.map.baidu.com/images/blank.gif?platform=pc&logname=lbsyunduanzu&t=" + t;
  40. }
  41. }
  42. Util.addLogCount();
  43. !function(){
  44. /**
  45. * 条件筛选模块相关代码 start
  46. * 条件筛选的数据
  47. */
  48. var filterData = [
  49. {
  50. "name" : "区域",
  51. "value" : "location",
  52. "data" : [
  53. {
  54. "name" : "朝阳",
  55. "value" : "朝阳"
  56. },
  57. {
  58. "name" : "海淀",
  59. "value" : "海淀"
  60. },
  61. {
  62. "name" : "东城",
  63. "value" : "东城 "
  64. },
  65. {
  66. "name" : "西城",
  67. "value" : "西城 "
  68. },
  69. {
  70. "name" : "崇文",
  71. "value" : "崇文"
  72. },
  73. {
  74. "name" : "宣武",
  75. "value" : "宣武"
  76. },
  77. {
  78. "name" : "丰台",
  79. "value" : "丰台"
  80. },
  81. {
  82. "name" : "通州",
  83. "value" : "通州"
  84. },
  85. {
  86. "name" : "石景山",
  87. "value" : "石景山"
  88. },
  89. {
  90. "name" : "房山",
  91. "value" : "房山"
  92. },
  93. {
  94. "name" : "昌平",
  95. "value" : "昌平"
  96. },
  97. {
  98. "name" : "大兴",
  99. "value" : "大兴"
  100. },
  101. {
  102. "name" : "顺义",
  103. "value" : "顺义"
  104. },
  105. {
  106. "name" : "密云",
  107. "value" : "密云"
  108. },
  109. {
  110. "name" : "怀柔",
  111. "value" : "怀柔"
  112. },
  113. {
  114. "name" : "延庆",
  115. "value" : "延庆"
  116. },
  117. {
  118. "name" : "平谷",
  119. "value" : "平谷"
  120. },
  121. {
  122. "name" : "门头沟",
  123. "value" : "门头沟"
  124. }
  125. ]
  126. },
  127. {
  128. "name" : "租金",
  129. "value" : "dayprice",
  130. "data" : [
  131. {
  132. "name" : "50元以下",
  133. "value" : "0,50"
  134. },
  135. {
  136. "name" : "50-100元",
  137. "value" : "50,100"
  138. },
  139. {
  140. "name" : "100-105元",
  141. "value" : "100,150"
  142. },
  143. {
  144. "name" : "150-200元",
  145. "value" : "150,200"
  146. },
  147. {
  148. "name" : "200-250元",
  149. "value" : "200,250"
  150. },
  151. {
  152. "name" : "250-300元",
  153. "value" : "250,300"
  154. },
  155. {
  156. "name" : "300元以上",
  157. "value" : "300,10000"
  158. }
  159. ]
  160. },
  161. {
  162. "name" : "类型",
  163. "value" : "leasetype",
  164. "data" : [
  165. {
  166. "name" : "整套出租",
  167. "value" : "1,1"
  168. },
  169. {
  170. "name" : "单间出租",
  171. "value" : "2,2"
  172. },
  173. {
  174. "name" : "单间出租(隔断)",
  175. "value" : "3,3"
  176. },
  177. {
  178. "name" : "床位出租",
  179. "value" : "4,4"
  180. }
  181. ]
  182. }
  183. ]
  184. for (var i in filterData) { //条件筛选的各个项
  185. var item = filterData[i],
  186. data = item.data,
  187. dl = $('<dl id="' + item.value + '" class="dl-horizontal" value="' + item.value + '"><dt>' + item.name + ':</dt></dl>'),
  188. ul = $('<ul class="inline"></ul>');
  189. for(var j in data) { //各个项对应的各详细选项
  190. var subData = data[j];
  191. $('<li><a href="###" value = "' + subData.value + '">' + subData.name +'</a></li>').appendTo(ul);
  192. }
  193. ul.appendTo($('<dd></dd>')).appendTo(dl);
  194. dl.appendTo($('#filterBox'));
  195. }
  196. // 点击选择项的事件
  197. $('#filterBox li a').click(function(){
  198. var type = $(this).parents('dl').attr('value');
  199. $('#' + type + " li a").removeClass('activate');
  200. if (!$(this).hasClass('activate')) { //点击的不是当前的选项
  201. $(this).addClass('activate');
  202. $('#selectedValue div[type$=' + type + ']').remove(); //当前条件之前选择过的条件删除
  203. var item = $('<div class="span1" value="' + $(this).attr('value') + '" type="' + type + '"><span>' + $(this).html() + '</span></div>');
  204. //添加删除按钮
  205. var deleteBtn = $('<i class="icon-remove"></i>').click(function(){
  206. $(this).parent().remove();
  207. $('#' + type + " li a").removeClass('activate');
  208. keyword = $('#keyword').val();
  209. searchAction(keyword);
  210. });
  211. deleteBtn.appendTo(item);
  212. item.appendTo('#selectedValue'); //添加当前的筛选条件
  213. keyword = $('#keyword').val();
  214. searchAction(keyword);
  215. }
  216. });
  217. //条件筛选模块相关代码 end
  218. //检索模块相关代码
  219. var keyword = "", //检索关键词
  220. page = 0, //当前页码
  221. points = [], //存储检索出来的结果的坐标数组
  222. customLayer = null; //麻点图层
  223. customLayer=new BMap.CustomLayer(4392); //新建麻点图图层对象
  224. map.addTileLayer(customLayer); //将麻点图添加到地图当中
  225. customLayer.addEventListener('hotspotclick', hotspotclickCallback); //给麻点图添加点击麻点回调函数
  226. /**
  227. * 麻点图点击麻点的回调函数
  228. * @param 麻点图点击事件返回的单条数据
  229. */
  230. function hotspotclickCallback(e) {
  231. var customPoi = e.customPoi,
  232. str = [];
  233. str.push("address = " + customPoi.address);
  234. str.push("phoneNumber = " + customPoi.phoneNumber);
  235. var content = '<p style="width:280px;margin:0;line-height:20px;">地址:' + customPoi.address + '</p>';
  236. //创建检索信息窗口对象
  237. var searchInfoWindow = new BMapLib.SearchInfoWindow(map, content, {
  238. title: customPoi.title, //标题
  239. width: 290, //宽度
  240. height: 40, //高度
  241. enableAutoPan : true, //自动平移
  242. enableSendToPhone: true, //是否显示发送到手机按钮
  243. searchTypes :[
  244. BMAPLIB_TAB_SEARCH, //周边检索
  245. BMAPLIB_TAB_TO_HERE, //到这里去
  246. BMAPLIB_TAB_FROM_HERE //从这里出发
  247. ]
  248. });
  249. var point = new BMap.Point(customPoi.point.lng, customPoi.point.lat);
  250. searchInfoWindow.open(point); //打开信息窗口
  251. }
  252. //绑定检索按钮事件
  253. $('#searchBtn').bind('click', function(){
  254. keyword = $('#keyword').val();
  255. searchAction(keyword);
  256. });
  257. /**
  258. * 进行检索操作
  259. * @param 关键词
  260. * @param 当前页码
  261. */
  262. function searchAction(keyword, page) {
  263. page = page || 0;
  264. var filter = []; //过滤条件
  265. $.each($('#selectedValue div'), function(i, item){ //将选中的筛选条件添加到过滤条件参数中
  266. var type = $(item).attr('type'),
  267. value = $(item).attr('value');
  268. if (type == "location") {
  269. keyword = value + " " + keyword;
  270. } else {
  271. filter.push(type + ':' + value);
  272. }
  273. });
  274. var url = "http://api.map.baidu.com/geosearch/v2/local?callback=?";
  275. $.getJSON(url, {
  276. 'q' : keyword, //检索关键字
  277. 'page_index' : page, //页码
  278. 'filter' : filter.join('|'), //过滤条件
  279. 'region' : '131', //北京的城市id
  280. 'scope' : '2', //显示详细信息
  281. 'geotable_id': 30960,
  282. 'ak' : 'A4749739227af1618f7b0d1b588c0e85' //用户ak
  283. },function(e) {
  284. renderList(e, page + 1);
  285. renderMap(e, page + 1);
  286. });
  287. }
  288. //绑定展开/收起事件
  289. $('#toggleBtn').bind('click', function(){
  290. $('#filterBox').toggle('normal', function(){
  291. Util.setMapHeight();
  292. });
  293. });
  294. //办定列表/地图模式切换事件
  295. $('#chgMode').bind('click', function(){
  296. $('#listBox').toggle('normal');
  297. $('#mapBox').toggle('normal', function(){
  298. if ($('#mapBox').is(":visible")) { //单显示地图时候,设置最佳视野
  299. map.setViewport(points);
  300. };
  301. });
  302. });
  303. /**
  304. * 渲染地图模式
  305. * @param result
  306. * @param page
  307. */
  308. function renderMap(res, page) {
  309. var content = res.contents;
  310. $('#mapList').html('');
  311. map.clearOverlays();
  312. points.length = 0;
  313. if (content.length == 0) {
  314. $('#mapList').append($('<p style="border-top:1px solid #DDDDDD;padding-top:10px;text-align:center;text-align:center;font-size:18px;" class="text-warning">抱歉,没有找到您想要的短租信息,请重新查询</p>'));
  315. return;
  316. }
  317. $.each(content, function(i, item){
  318. var point = new BMap.Point(item.location[0], item.location[1]),
  319. marker = new BMap.Marker(point);
  320. points.push(point);
  321. var tr = $("<tr><td width='75%'><a href='" + item.roomurl + "' target='_blank' onclick='Util.addLogCount()'>" + item.title + "<a/><br/>" + item.address + "</td><td width='25%'>" + item.dayprice + "<br/><span style='color:red;'>元/晚</span></td></tr>").click(showInfo);
  322. $('#mapList').append(tr);;
  323. marker.addEventListener('click', showInfo);
  324. function showInfo() {
  325. var content = "<img src='" + item.mainimage + "' style='width:111px;height:83px;float:left;margin-right:5px;'/>" +
  326. "<p>名称:" + item.title + "</p>" +
  327. "<p>地址:" + item.address + "</p>" +
  328. "<p>价格:" + item.dayprice + "</p>";
  329. //创建检索信息窗口对象
  330. var searchInfoWindow = new BMapLib.SearchInfoWindow(map, content, {
  331. title : item.title, //标题
  332. width : 290, //宽度
  333. panel : "panel", //检索结果面板
  334. enableAutoPan : true, //自动平移
  335. searchTypes :[
  336. BMAPLIB_TAB_SEARCH, //周边检索
  337. BMAPLIB_TAB_TO_HERE, //到这里去
  338. BMAPLIB_TAB_FROM_HERE //从这里出发
  339. ]
  340. });
  341. searchInfoWindow.open(marker);
  342. };
  343. map.addOverlay(marker);
  344. });
  345. /**
  346. * 分页
  347. */
  348. var pagecount = Math.ceil(res.total / 10);
  349. if (pagecount > 76) {
  350. pagecount = 76; //最大页数76页
  351. }
  352. function PageClick (pageclickednumber) {
  353. pageclickednumber = parseInt(pageclickednumber);
  354. $("#pager").pager({ pagenumber: pageclickednumber, pagecount: pagecount, showcount: 3, buttonClickCallback: PageClick });
  355. searchAction(keyword, pageclickednumber -1);
  356. }
  357. $("#mapPager").pager({ pagenumber: page, pagecount: pagecount, showcount:3, buttonClickCallback: PageClick });
  358. map.setViewport(points);
  359. };
  360. /**
  361. * 渲染列表模式
  362. * @param result
  363. * @param page
  364. */
  365. function renderList(res, page) {
  366. var content = res.contents;
  367. $('#listBoby').html('');
  368. if (content.length == 0) {
  369. $('#listBoby').append($('<p style="border-top:1px solid #DDDDDD;padding-top:10px;text-align:center;text-align:center;font-size:18px;" class="text-warning">抱歉,没有找到您想要的短租信息,请重新查询</p>'));
  370. return;
  371. }
  372. $.each(content, function(i, item){
  373. $('#listBoby').append("<tr><td width='13%'><img src='" + item.mainimage + "' style='width:111px;height:83px;'/></td><td width='67%'><a href='" + item.roomurl + "' target='_blank' onclick='Util.addLogCount()'>" + item.title + "<a/><br/>地址:" + item.address + "<br/>类型:" + Util.getLeaseNameByType(item.leasetype) + "</td><td width='20%'>" + item.dayprice + " <span style='color:red;'>元/晚</span></td></tr>");;
  374. });
  375. /**
  376. * 分页
  377. */
  378. var pagecount = Math.ceil(res.total / 10);
  379. if (pagecount > 76) {
  380. pagecount = 76;
  381. }
  382. function PageClick (pageclickednumber) {
  383. pageclickednumber = parseInt(pageclickednumber);
  384. $("#pager").pager({ pagenumber: pageclickednumber, pagecount: pagecount, showcount:9, buttonClickCallback: PageClick });
  385. searchAction(keyword, pageclickednumber -1);
  386. }
  387. $("#pager").pager({ pagenumber: page, pagecount: pagecount, showcount:9, buttonClickCallback: PageClick });
  388. }
  389. searchAction(keyword);
  390. }();
  391. $(document).ready(function(){
  392. Util.setMapHeight();
  393. });