From 73679cdd6274a9505ab205e62747763a4aebe585 Mon Sep 17 00:00:00 2001 From: fengxiang <110431245@qq.com> Date: Thu, 20 Sep 2018 14:15:17 +0800 Subject: [PATCH] 地图 更新 --- src/main/webapp/js/moralmap.js | 161 +++++++++++++++++++++++++++++++++-------------------- 1 files changed, 101 insertions(+), 60 deletions(-) diff --git a/src/main/webapp/js/moralmap.js b/src/main/webapp/js/moralmap.js index 4bcc87a..1364c59 100644 --- a/src/main/webapp/js/moralmap.js +++ b/src/main/webapp/js/moralmap.js @@ -44,22 +44,37 @@ * ��������������������� */ moralMap.mapInit = function() { - baiduMap = new BMap.Map("mapCanvas", { - minZoom: 12, - maxZoom: 20 - }); // ������Map������,���������������������������/��������� + var defaultParam = { + minZoom: 12, + maxZoom: 20 + }; + if(!!arguments[1]) { + $.extend(defaultParam,arguments[1]); + } + baiduMap = new BMap.Map("mapCanvas",defaultParam); // ������Map������,���������������������������/��������� var map = baiduMap; var mapStyle = { features: ["road", "building", "water", "land"], //������������������poi style: "normal" //������������������������������ } map.setMapStyle(mapStyle); - var showZoom = 12; - if(arguments.length == 2) { - map.centerAndZoom(new BMap.Point(arguments[0], arguments[1]), showZoom); - } else if(arguments.length == 1) { - map.centerAndZoom(arguments[0], showZoom); - } + var showZoom = !!arguments[2] + && arguments[2] <=defaultParam.maxZoom + && arguments[2] >= defaultParam.minZoom?arguments[2]:12; + var address = arguments[0]; + var regoinNames = address.split(" "); + var cityName = regoinNames.length>1?regoinNames[1]:regoinNames[0]; + map.setCurrentCity(cityName); + // ���������������������������������������,��������������������� + // ��������������������������� + var myGeo = new BMap.Geocoder(); + myGeo.getPoint(address, function(point){ + if (point) { + map.centerAndZoom(point, showZoom); + }else{ + alert("������������������������������������!"); + } + }, cityName); //������������������ map.enableScrollWheelZoom(true); var navigation = new BMap.NavigationControl({ @@ -107,7 +122,7 @@ var startZoom = moralMap.startZoom(); //������key������������������ // var key = moralMap.lazyKeyer(); - var confine = moralMap.getZooMConfine(); + var confine = moralMap.getZoomConfine(); if(endZoom > startZoom) { //������������������ if(endZoom >= confine && startZoom <= confine) { @@ -139,52 +154,66 @@ } } })(); + // ��������������� + moralMap.Bounds = function (baiduBounds) { + if(!!baiduBounds){ + this.northeastLng = baiduBounds.xl.lng;//��������������������������� + this.northeastLat = baiduBounds.xl.lat;//��������������������������� + this.southwestLng = baiduBounds.Ol.lng;//��������������������������������� + this.southwestLat = baiduBounds.Ol.lat;//��������������������������������� + }else{ + this.northeastLng = null;//��������������������������� + this.northeastLat = null;//��������������������������� + this.southwestLng = null;//��������������������������������� + this.southwestLat = null;//��������������������������������� + } + } moralMap.getBounds = function() { - return baiduMap.getBounds(); //������bounds; + return new moralMap.Bounds(baiduMap.getBounds()); //������bounds; } moralMap.getMaxBounds = function() { var key = "_" + moralMap.layer() + "_bounds"; return this[key]; } - moralMap.setMaxBounds = function(bounds) { + moralMap.setMaxBounds = function(bs) { var key = "_" + moralMap.layer() + "_bounds"; - var _bounds = this[key]; //������������ - if(_bounds == undefined) { - _bounds = {}; - } - if(bounds == undefined) { - bounds = baiduMap.getBounds(); - } + var _bounds = !!this[key]?this[key]:new moralMap.Bounds(); //������������ //������������������ - _bounds["Fe"] = _bounds['Fe'] || bounds['Fe']; //��������������������������� - _bounds["Ge"] = _bounds['Ge'] || bounds['Ge']; //��������������������������� - _bounds["Ke"] = _bounds['Ke'] || bounds['Ke']; //��������������������������������� - _bounds["Le"] = _bounds['Le'] || bounds['Le']; //��������������������������������� - _bounds["Fe"] = bounds['Fe'] > _bounds["Fe"] ? bounds['Fe'] : _bounds["Fe"]; //��������������������������� - _bounds["Ge"] = bounds['Ge'] > _bounds["Ge"] ? bounds['Ge'] : _bounds["Ge"]; //��������������������������� - _bounds["Ke"] = bounds['Ke'] < _bounds["Ke"] ? bounds['Ke'] : _bounds["Ke"]; //��������������������������������� - _bounds["Le"] = bounds['Le'] < _bounds["Le"] ? bounds['Le'] : _bounds["Le"]; //��������������������������������� + _bounds.northeastLng = _bounds.northeastLng || bs.northeastLng; + _bounds.northeastLat = _bounds.northeastLat || bs.northeastLat; + _bounds.southwestLng = _bounds.southwestLng || bs.southwestLng; + _bounds.southwestLat = _bounds.southwestLat || bs.southwestLat; + _bounds.northeastLng = bs.northeastLng > _bounds.northeastLng ? bs.northeastLng: _bounds.northeastLng; + _bounds.northeastLat = bs.northeastLat > _bounds.northeastLat ? bs.northeastLat: _bounds.northeastLat; + _bounds.southwestLng = bs.southwestLng < _bounds.southwestLng ? bs.southwestLng: _bounds.southwestLng; + _bounds.southwestLat = bs.southwestLat < _bounds.southwestLat ? bs.southwestLat: _bounds.southwestLat; this[key] = _bounds; } moralMap.isOverBounds = function() { var isOver = false; var _bounds = moralMap.getMaxBounds(); //������������ - var bounds = baiduMap.getBounds(); //������������ - if(_bounds == null) { + var bs = moralMap.getBounds(); //������������ + if(!_bounds) { isOver = true; - moralMap.setMaxBounds(bounds); + moralMap.setMaxBounds(bs); } else { - isOver = (bounds['Fe'] > _bounds["Fe"] || bounds['Ge'] > _bounds["Ge"] || bounds['Ke'] < _bounds["Ke"] || bounds['Le'] < _bounds["Le"]); - moralMap.setMaxBounds(bounds); + isOver = (bs.northeastLng > _bounds.northeastLng + || bs.northeastLat > _bounds.northeastLat + || bs.southwestLng < _bounds.southwestLng + || bs.southwestLat < _bounds.southwestLat); + if(isOver){ + moralMap.setMaxBounds(bs); + } } return isOver; } moralMap.addOverlay = function(overlay) { if(overlay.getMap() != baiduMap) { - setTimeout(function(){ + // setTimeout(function(){ baiduMap.addOverlay.call(baiduMap, overlay); - },10); + // },10); + baiduMap.addOverlay.call(baiduMap, overlay); } } moralMap.addOverlays = function(overlays) { @@ -195,8 +224,16 @@ } } - moralMap.removeOverlay = function() { + moralMap.removeOverlay = function(overlay) { + // baiduMap.removeOverlay(overlay); baiduMap.removeOverlay.apply(baiduMap, arguments); + } + moralMap.removeOverlays = function(overlays) { + if(overlays != null && typeof overlays == 'object') { + for (var i in overlays) { + moralMap.removeOverlay(overlays[i]); + } + } } moralMap.getOverlays = function() { var overLays = baiduMap.getOverlays.apply(baiduMap, arguments) @@ -286,12 +323,12 @@ if(window["console"]!=undefined){ console.log(equStr); } - if(!!window['external']&&window['external']['callWin']){ + if(!!window['external']&&!!window['external']['callWin']){ window['external'].callWin(equStr); }else{ - if(!!select&&select==='chart'&&!!window['external']&&window['external']['showChartInfo']){ + if(!!select&&select==='chart'&&!!window['external']&&!!window['external']['showChartInfo']){ window['external'].showChartInfo(equStr); - }else if(!!window['external']&&window['external']['showMonitorInfo']){ + }else if(!!window['external']&&!!window['external']['showMonitorInfo']){ window['external'].showMonitorInfo(equStr); }else{ alert(equStr); @@ -414,7 +451,7 @@ state = stateObj["state"]; stateName = stateObj["stateName"]; var name = e['name']; - if(moralMap.getUtf8Length(name) > 24) { + if(moralMap.getUtf8Length(name) > 22) { var stop1 = 0; for(var stop1_i = 0, len = 0; stop1_i < name.length; stop1_i++) { len += ((name.charCodeAt(stop1_i) & 0xff00) != 0) ? 2 : 1; @@ -519,7 +556,7 @@ icon["width"] = 50; icon["height"] = 50; option["icon"] = icon; - var moralMask = new moralMap.MoralMarker(option); + var moralMarker = new moralMap.MoralMarker(option); // var mark =new BMap.Marker(pointObj,{icon:iconObj}); //==================infoWindow-start============================ var infoWindow = (function() { @@ -528,7 +565,7 @@ width: 110, // ������������������ height: 80, // ������������������ title: getTitleOutHtml(), // ������������������ - offset: new BMap.Size(-2, -21) //��������������������� + offset: new BMap.Size(-8,-5) //��������������������� } function getTitleOutHtml() { @@ -562,20 +599,20 @@ } return new BMap.InfoWindow(getAdressOutHtml(), winOpts); })(); - if(moralMask["infoWindow"] == undefined) { - moralMask["infoWindow"] = infoWindow; + if(moralMarker["infoWindow"] == undefined) { + moralMarker["infoWindow"] = infoWindow; } //��������������������� - moralMask.addEventListener("mouseover", function() { + moralMarker.addEventListener("mouseover", function() { moralMap.openInfoWindow(infoWindow, this._point); //������������������ }); - moralMask.addEventListener("mouseout", function() { + moralMarker.addEventListener("mouseout", function() { moralMap.closeInfoWindow(); }); //==================infoWindow-end============================ //��������������� - moralMap.putMpoint(option['id'], moralMask); - return moralMask; + moralMap.putMpoint(option['id'], moralMarker); + return moralMarker; } //������MonitorPoint������ moralMap.putMpoint = function(key, obj) { @@ -611,7 +648,7 @@ option["offline_height"] = 80; option["online_width"] = 355; option["online_height"] = 385; - var moralMask = new moralMap.MoralMarker(option); + var moralMarker = new moralMap.MoralMarker(option); // var mark =new BMap.Marker(pointObj,{icon:iconObj}); //==================infoWindow-start============================ var infoWindow = (function() { @@ -620,7 +657,7 @@ width: option["online_width"], // ������������������ height:option["online_height"], // ������������������ title: getTitleOutHtml(), // ������������������ - offset: new BMap.Size(-2, -30) //��������������������� + offset: new BMap.Size(-2, -10) //��������������������� } function getTitleOutHtml() { @@ -690,12 +727,12 @@ } }; - if(moralMask["infoWindow"] == undefined) { - moralMask["infoWindow"] = infoWindow; + if(moralMarker["infoWindow"] == undefined) { + moralMarker["infoWindow"] = infoWindow; } var mouseOverHandle = option['mouseover']; //��������������������� - moralMask.addEventListener("mouseover", function() { + moralMarker.addEventListener("mouseover", function() { if(mouseOverHandle!=null&&mouseOverHandle instanceof Function){ //���arguments��������������� var args = Array.prototype.slice.call(arguments); @@ -717,16 +754,16 @@ infoWindow.redraw(); } }); - moralMask.addEventListener("mouseout", function() { + moralMarker.addEventListener("mouseout", function() { baiduMap.closeInfoWindow(); infoWindow.setContent(""); moralMap.openSearchBox(); }); //==================infoWindow-end============================ //��������������� - moralMap.putEquipment(option['mac'], moralMask); - var _super_refreshState = moralMask.refreshState; - return $.extend(moralMask, { + moralMap.putEquipment(option['mac'], moralMarker); + var _super_refreshState = moralMarker.refreshState; + return $.extend(moralMarker, { refreshState: function(data) { if(data != null && data!="") { var state = this.getOption()["state"]; @@ -802,11 +839,14 @@ delete moralMap['_equipments']; } } - moralMap.getZooMConfine = function() { + moralMap.getZoomConfine = function() { return 18; } + moralMap.getZoom = function() { + return baiduMap.getZoom(); + } moralMap.getHorizonMarkers = function(isShow) { - var bounds = baiduMap.getBounds(); + var bounds = moralMap.getBounds(); var oldMarkerList; var isShow = (isShow) ? baiduMap : null; if(moralMap.layer() == "equipments") { @@ -823,7 +863,8 @@ if(typeof option == 'object') { var longitude = option['longitude']; var latitude = option['latitude']; - if(longitude < bounds['Ge'] && longitude > bounds['Le'] && latitude < bounds['Fe'] && latitude > bounds['Ke']) { + // ������������������������������������ + if(longitude < bounds.northeastLng && longitude > bounds.southwestLng && latitude < bounds.northeastLat && latitude > bounds.southwestLat) { markers.push(oldmarker); } } -- Gitblit v1.8.0