From 5ddef25bcb1f56a10eddf2a264cb338d178ff5f1 Mon Sep 17 00:00:00 2001 From: fengxiang <110431245@qq.com> Date: Wed, 05 Sep 2018 09:50:15 +0800 Subject: [PATCH] 百度地图,方案助手完善 --- src/main/webapp/page/scheme-helper.html | 124 ++++++++++++++++++++++++++++++++++------- 1 files changed, 102 insertions(+), 22 deletions(-) diff --git a/src/main/webapp/page/scheme-helper.html b/src/main/webapp/page/scheme-helper.html index ab8a551..891e692 100644 --- a/src/main/webapp/page/scheme-helper.html +++ b/src/main/webapp/page/scheme-helper.html @@ -30,13 +30,15 @@ padding: 14px 10px 0px; text-align: center; width: 280px; - height: 110px; + height: 150px; } .search-box { width: 220px; } - + .city-box { + width: 80px; + } .anchorBL { display: none; } @@ -63,6 +65,11 @@ </tr> </table> <table> + <tr> + <td colspan="5" class="click-handle-title"> + ���������������<input class="city-box" type="input" /> <a id="setCityBtn" style=" text-decoration:underline; color:#00F;cursor:pointer;">������</a> + </td> + </tr> <tr> <td> <input id="clickHandle_0" type="radio" name="mapClickHandle" checked value="0" /> @@ -121,9 +128,14 @@ var baiduMap; var markerManager = { data: { + mpoint:[], + star:[], _regionName:null, _boundary:[], _boundaryState:false + }, + menuItems:{ + boundaryMenuItem:null }, bind: {} }; @@ -142,8 +154,8 @@ } } } - markerManager.setRegionName = function (regionName){ - this.data._regionName = regionName; + markerManager.setRegionName = function (regionName,successCallBack,errorCallBack){ + var thatData = this.data; function getBoundary(regionName){ var bdary = new BMap.Boundary(); var map = baiduMap; @@ -151,9 +163,13 @@ map.clearOverlays(); //��������������������� var count = rs.boundaries.length; //������������������������������ if (count === 0) { - alert('������������������������������������'); + // alert('������������������������������������'); + if(!!errorCallBack&&errorCallBack instanceof Function){ + errorCallBack(regionName); + } return ; } + map.setCurrentCity(regionName); // ��������������������������� ������������������������ // var pointArray = []; var polygonArray = []; for (var i = 0; i < count; i++) { @@ -165,21 +181,24 @@ // map.setViewport(pointArray); //������������ //addlabel(); //������������ + markerManager.reloadCustomOverlays(); + thatData._regionName = regionName; markerManager.data._boundary = polygonArray; + if(!!successCallBack && successCallBack instanceof Function){ + successCallBack(regionName); + } }); } getBoundary(regionName); } markerManager.openBoundary = function(){ - debugger; - console.log(this.data._boundary); + // console.log(this.data._boundary); if(!!this.data._boundary&&this.data._boundary.length>0){ for(var n =0 ;n< this.data._boundary.length;n++){ baiduMap.addOverlay(this.data._boundary[n]); } this.data._boundaryState = true; } - } markerManager.closeBoundary = function(){ for(var n =0 ;n< this.data._boundary.length;n++){ @@ -250,7 +269,29 @@ } } } + markerManager.addOverlaysToBmap = function (overlays) { + if(!!overlays && overlays instanceof Object){ + for(var n in overlays){ + var overlay = overlays[n]; + baiduMap.addOverlay(overlay); + } + }else { + throw new Error("in addOverlaysToBmap overlays is not list"); + } + } + markerManager.reloadCustomOverlays = function() { + if(!!markerManager.data['mpoint']){ + markerManager.addOverlaysToBmap(markerManager.data['mpoint']); + } + if(!!markerManager.data['star']){ + markerManager.addOverlaysToBmap(markerManager.data['star']); + } + } + function clearBaiduOverlays() { + baiduMap.clearOverlays();//������������������������ + markerManager.reloadCustomOverlays(); + } function clearOverlays() { for (var key in markerManager.data) { markerManager.data[key] = []; @@ -258,7 +299,6 @@ } baiduMap.clearOverlays(); } - function removeOverlay(key, marker) { baiduMap.removeOverlay(marker); markerManager.removeMarker(key, marker); @@ -306,7 +346,19 @@ // option.offset = new BMap.Size(0,-15); addMarker(point, option); } - + function switchBoundary() { + if(!markerManager.isBoundaryState()){ + markerManager.openBoundary(); + if(markerManager.isBoundaryState()){ + this.setText("������������"); + }else { + alert('���������������������'); + } + }else { + markerManager.closeBoundary(); + this.setText("������������"); + } + } function mapInit() { var map = new BMap.Map("mapCanvas"); this.baiduMap = map; @@ -366,19 +418,17 @@ } }, { + id: 'boundaryMenuItem', text: '������������', callback: function () { - if(!markerManager.isBoundaryState()){ - markerManager.openBoundary(); - if(markerManager.isBoundaryState()){ - this.setText("������������"); - }else{ - - } - }else { - markerManager.closeBoundary(); - this.setText("������������"); - } + var that = this; + switchBoundary.apply(this); + } + }, + { + text: '������������������', + callback: function (menuItem) { + clearBaiduOverlays(); } }, { @@ -405,6 +455,9 @@ width: 120, iconUrl: item.icon }); + if(item.id == "boundaryMenuItem"){ + markerManager.menuItems.boundaryMenuItem = menuItem; + } menu.addItem(menuItem); if (item.switch) { switchMenuItems[item.handleType] = menuItem; @@ -420,12 +473,39 @@ } (function ($) { var map = mapInit(); + var local = new BMap.LocalSearch(map, { + renderOptions:{map: map}, + onMarkersSet:function () { + markerManager.reloadCustomOverlays(); + } + }); + $('#setCityBtn').click(function () { + var cityName = $('.city-box').val(); + if(!!cityName){ + baiduMap.centerAndZoom(cityName); + markerManager.setRegionName(cityName,function () { + if(markerManager.isBoundaryState()){ + switchBoundary.apply(markerManager.menuItems.boundaryMenuItem); + } + },function (value) { + alert('������������������'+value+'������������'); + }) + } + }); // ������������ $('.search-btn').on('click', function (args) { var searchValue = $('.search-box').val(); if (!!searchValue) { baiduMap.centerAndZoom(searchValue); - markerManager.setRegionName(searchValue); + markerManager.setRegionName(searchValue, + function (searchValue) { + $('.city-box').val(searchValue); + if(markerManager.isBoundaryState()){ + switchBoundary.apply(markerManager.menuItems.boundaryMenuItem); + } + },function (searchValue) { + local.search(searchValue); + }); } }); markerManager.bindSelect("mpoint", "#mpointCount"); -- Gitblit v1.8.0