Commit b84f5d16b64eca3b7cd4a12e07a8e3a85ef9954b
1 parent
3409b06a
1.闵行将线调->地图用做线路规划
Showing
2 changed files
with
584 additions
and
572 deletions
src/main/resources/static/real_control_v2/mapmonitor/js/gps_tree.js
| 1 | -var gb_map_gps_tree = (function () { | |
| 2 | - | |
| 3 | - var idBefore = 'map_tree_'; | |
| 4 | - var _devices; | |
| 5 | - | |
| 6 | - var treeObj; | |
| 7 | - var jstreeChanged = function (e, node, event) { | |
| 8 | - gb_map_overlay_mge.refresh(); | |
| 9 | - }; | |
| 10 | - | |
| 11 | - var readyStatus; | |
| 12 | - | |
| 13 | - var init = function (cb) { | |
| 14 | - var allGps = gb_data_gps.allGps; | |
| 15 | - _devices = gb_common.get_keys(allGps); | |
| 16 | - //设备树 | |
| 17 | - var treeData = gb_common.get_device_tree_data(allGps, idBefore); | |
| 18 | - treeObj = $('.real_right_gps_panel .gps_tree_list') | |
| 19 | - //节点初始化完成 | |
| 20 | - .on('ready.jstree', function () { | |
| 21 | - //treeObj.jstree(true).open_all(); | |
| 22 | - //删掉tree node a标签的 href值(避免鼠标悬停浏览器出现状态条) | |
| 23 | - $('.gps_tree_list .jstree-container-ul a.jstree-anchor').removeAttr('href'); | |
| 24 | - }) | |
| 25 | - //state插件 状态恢复完成 | |
| 26 | - .on('state_ready.jstree', function () { | |
| 27 | - //绑定checkbox状态切换事件 | |
| 28 | - treeObj.on('check_node.jstree uncheck_node.jstree', jstreeChanged); | |
| 29 | - readyStatus = true; | |
| 30 | - cb && cb(); | |
| 31 | - }) | |
| 32 | - .on('activate_node.jstree', function (e, n) { | |
| 33 | - var node = n.node; | |
| 34 | - if (node.a_attr && node.a_attr.type == 'device' && node.state.checked) { | |
| 35 | - var device = node.a_attr.device; | |
| 36 | - gb_map_overlay_mge._focus(device); | |
| 37 | - } | |
| 38 | - }) | |
| 39 | - .jstree({ | |
| 40 | - 'core': { | |
| 41 | - 'data': treeData, | |
| 42 | - 'check_callback': true | |
| 43 | - }, | |
| 44 | - 'checkbox': { | |
| 45 | - 'keep_selected_style': false, | |
| 46 | - 'whole_node': false, | |
| 47 | - 'tie_selection': false | |
| 48 | - }, | |
| 49 | - //local storage里的key | |
| 50 | - 'state': { | |
| 51 | - 'key': 'jstree_map_devices' | |
| 52 | - }, | |
| 53 | - 'plugins': ['checkbox', 'state'] | |
| 54 | - }); | |
| 55 | - }; | |
| 56 | - | |
| 57 | - var refresh = function () { | |
| 58 | - var jstreeInts = treeObj.jstree(true); | |
| 59 | - var oldChecks = jstreeInts.get_checked(true); | |
| 60 | - var treeData = gb_common.get_device_tree_data(gb_data_gps.allGps, idBefore); | |
| 61 | - jstreeInts.settings.core.data = treeData; | |
| 62 | - jstreeInts.refresh(); | |
| 63 | - //恢复选中状态 | |
| 64 | - setTimeout(function () { | |
| 65 | - $.each(oldChecks, function () { | |
| 66 | - jstreeInts.check_node(jstreeInts.get_node(this.a_attr.id)); | |
| 67 | - }); | |
| 68 | - }, 700); | |
| 69 | - }; | |
| 70 | - | |
| 71 | - //創建新節點 | |
| 72 | - var create_node = function (array, create_end_cb) { | |
| 73 | - if (!isArray(array)) | |
| 74 | - array = [array]; | |
| 75 | - | |
| 76 | - var jstreeInts = treeObj.jstree(true); | |
| 77 | - var len = array.length, i = 0; | |
| 78 | - (function () { | |
| 79 | - var f = arguments.callee; | |
| 80 | - if (i >= len) { | |
| 81 | - create_end_cb && create_end_cb(); | |
| 82 | - return; | |
| 83 | - } | |
| 84 | - | |
| 85 | - var gps = array[i], | |
| 86 | - pId = idBefore + 'route_' + gps.lineId + '_' + gps.upDown; | |
| 87 | - //上下行节点 | |
| 88 | - var routeNode = jstreeInts.get_node(pId); | |
| 89 | - if (!routeNode) { | |
| 90 | - //父节点不存在 | |
| 91 | - create_route_node(gps.lineId, function () { | |
| 92 | - //重新获取上下行节点 | |
| 93 | - routeNode = jstreeInts.get_node(pId); | |
| 94 | - appendDeviceNode(routeNode, gps, function () { | |
| 95 | - _devices.push(gps.deviceId); | |
| 96 | - i++; | |
| 97 | - f(); | |
| 98 | - }); | |
| 99 | - }); | |
| 100 | - } | |
| 101 | - else { | |
| 102 | - appendDeviceNode(routeNode, gps, function () { | |
| 103 | - _devices.push(gps.deviceId); | |
| 104 | - i++; | |
| 105 | - f(); | |
| 106 | - }); | |
| 107 | - } | |
| 108 | - })(); | |
| 109 | - }; | |
| 110 | - | |
| 111 | - //创建线路和上下行节点 | |
| 112 | - var create_route_node = function (lineCode, cb) { | |
| 113 | - var lineName = gb_data_basic.codeToLine[lineCode].name; | |
| 114 | - var id = treeObj.jstree(true).create_node('#', { | |
| 115 | - 'text': lineName, | |
| 116 | - 'a_attr': {'type': 'line', 'id': idBefore + 'line_' + lineCode}, | |
| 117 | - 'state': {'opened': true}, | |
| 118 | - 'children': [{ | |
| 119 | - 'text': '上行', | |
| 120 | - 'a_attr': { | |
| 121 | - 'type': 'route', | |
| 122 | - 'route': lineCode + '_0', | |
| 123 | - 'id': idBefore + 'route_' + lineCode + '_0', | |
| 124 | - 'state': {'opened': true} | |
| 125 | - } | |
| 126 | - }, { | |
| 127 | - 'text': '下行', | |
| 128 | - 'a_attr': { | |
| 129 | - 'type': 'route', | |
| 130 | - 'route': lineCode + '_1', | |
| 131 | - 'id': idBefore + 'route_' + lineCode + '_1', | |
| 132 | - 'state': {'opened': true} | |
| 133 | - } | |
| 134 | - }] | |
| 135 | - }, 'last', cb); | |
| 136 | - }; | |
| 137 | - | |
| 138 | - var appendDeviceNode = function (routeNode, gps, cb) { | |
| 139 | - if (!routeNode) { | |
| 140 | - return; | |
| 141 | - } | |
| 142 | - | |
| 143 | - //添加车辆節點 | |
| 144 | - treeObj.jstree(true).create_node(routeNode, { | |
| 145 | - 'text': gps.nbbm, | |
| 146 | - 'a_attr': { | |
| 147 | - 'type': 'device', | |
| 148 | - 'device': gps.deviceId | |
| 149 | - }, | |
| 150 | - 'data': {lineId: gps.lineId, upDown: gps.upDown}, | |
| 151 | - 'icon': 'uk-icon-bus' | |
| 152 | - }, 'last', cb); | |
| 153 | - }; | |
| 154 | - | |
| 155 | - var openLineNode = function (lineId, cb) { | |
| 156 | - var tree = treeObj.jstree(true); | |
| 157 | - tree.open_node(tree.get_node('map_tree_line_' + lineId), function () { | |
| 158 | - var upNode = tree.get_node('map_tree_route_' + lineId + '_0') | |
| 159 | - ,downNode = tree.get_node('map_tree_route_' + lineId + '_1'); | |
| 160 | - | |
| 161 | - tree.open_node(upNode, function () { | |
| 162 | - tree.open_node(downNode, cb); | |
| 163 | - }); | |
| 164 | - }); | |
| 165 | - }; | |
| 166 | - | |
| 167 | - var moveNode = function (i, gps) { | |
| 168 | - var tree = treeObj.jstree(true) | |
| 169 | - ,lineId = gps.lineId; | |
| 170 | - openLineNode(lineId, function () { | |
| 171 | - var node = tree.get_node('map_tree_device_' + gps.nbbm); | |
| 172 | - //移动节点 | |
| 173 | - var parent = tree.get_node('map_tree_route_' + lineId + '_' + gps.upDown); | |
| 174 | - treeObj.jstree(true).move_node(node, parent); | |
| 175 | - }); | |
| 176 | - }; | |
| 177 | - | |
| 178 | - /** | |
| 179 | - * 上下行改变 | |
| 180 | - * @param changeArray | |
| 181 | - */ | |
| 182 | - var changeUpDown = function (changeArray) { | |
| 183 | - $.each(changeArray, moveNode); | |
| 184 | - }; | |
| 185 | - | |
| 186 | - /** | |
| 187 | - * 更新节点 | |
| 188 | - */ | |
| 189 | - var abnormalsMapp = { | |
| 190 | - 'outBounds': '越界', | |
| 191 | - 'overspeed': '超速' | |
| 192 | - }; | |
| 193 | - var update_node = function (ups) { | |
| 194 | - var tree = treeObj.jstree(true) | |
| 195 | - ,node,suffix; | |
| 196 | - $.each(ups, function () { | |
| 197 | - node = tree.get_node('map_tree_device_' + this.nbbm); | |
| 198 | - suffix=abnormalsMapp[this['abnormalStatus']]; | |
| 199 | - suffix = suffix?'<a class="gps_tree_abnormal '+this['abnormalStatus']+'">'+suffix+'</a>':''; | |
| 200 | - tree.set_text(node, this.nbbm + suffix); | |
| 201 | - }); | |
| 202 | - }; | |
| 203 | - | |
| 204 | - | |
| 205 | - /** | |
| 206 | - * 搜索 | |
| 207 | - */ | |
| 208 | - var autocom = '.real_right_gps_panel .ral-gps-autocom' | |
| 209 | - ,_input = $('input', autocom); | |
| 210 | - | |
| 211 | - var autocomplete_source = function(release) { | |
| 212 | - var rs = [], | |
| 213 | - v = _input.val().toUpperCase(), count=0; | |
| 214 | - | |
| 215 | - $.each(gb_common.get_vals(gb_data_gps.allGps), function () { | |
| 216 | - if(this.nbbm.indexOf(v) != -1){ | |
| 217 | - rs.push({ | |
| 218 | - value: this.nbbm, | |
| 219 | - stationName: this.stationName?this.stationName:'', | |
| 220 | - dateStr: this.dateStr | |
| 221 | - }); | |
| 222 | - count++; | |
| 223 | - } | |
| 224 | - if(count > 11) | |
| 225 | - return false; | |
| 226 | - }); | |
| 227 | - release && release(rs); | |
| 228 | - }; | |
| 229 | - | |
| 230 | - var selectitem = function (event, data, acobject) { | |
| 231 | - | |
| 232 | - var tree = treeObj.jstree(true) | |
| 233 | - var deviceId = gb_data_basic.nbbm2deviceMap()[data.value] | |
| 234 | - ,gps = gb_data_gps.findOne(deviceId); | |
| 235 | - | |
| 236 | - if(gps.upDown==-1){ | |
| 237 | - UIkit.notify(data.value + " 未知上下行!", {pos:'top-center'}); | |
| 238 | - return; | |
| 239 | - } | |
| 240 | - //展开线路节点 | |
| 241 | - tree.open_node(tree.get_node('map_tree_line_' + gps.lineId), function () { | |
| 242 | - //展开走向节点 | |
| 243 | - tree.open_node(tree.get_node('map_tree_route_' + gps.lineId + '_' + gps.upDown), function () { | |
| 244 | - //选中车辆 | |
| 245 | - var id = 'map_tree_device_' + data.value; | |
| 246 | - var node = tree.get_node(id); | |
| 247 | - tree.check_node(node); | |
| 248 | - | |
| 249 | - var $e = $('#'+id); | |
| 250 | - treeObj.animate({ | |
| 251 | - scrollTop: $e.offset().top - treeObj.offset().top + treeObj.scrollTop() | |
| 252 | - }, 500); | |
| 253 | - //地图定位 | |
| 254 | - gb_map_overlay_mge._focus(gb_data_basic.nbbm2deviceMap()[data.value]); | |
| 255 | - }, false); | |
| 256 | - }); | |
| 257 | - }; | |
| 258 | - var result_template = '<script type="text/autocomplete">' + | |
| 259 | - ' <ul class="uk-nav uk-nav-autocomplete uk-autocomplete-results ral-gps-autocom-results">' + | |
| 260 | - ' {{~items}}' + | |
| 261 | - ' <li data-value="{{ $item.value }}">' + | |
| 262 | - ' <a>' + | |
| 263 | - ' {{ $item.value }} <small class="desc"> {{ $item.stationName }}</small>' + | |
| 264 | - ' <div class="desc"><span>{{$item.dateStr}}</span></div>' + | |
| 265 | - ' </a>' + | |
| 266 | - ' </li>' + | |
| 267 | - ' {{/items}}' + | |
| 268 | - ' </ul>' + | |
| 269 | - '</script>'; | |
| 270 | - | |
| 271 | - $(autocom).append(result_template); | |
| 272 | - UIkit.autocomplete(autocom, { | |
| 273 | - minLength: 1, | |
| 274 | - delay: 10, | |
| 275 | - source: autocomplete_source | |
| 276 | - }).on('selectitem.uk.autocomplete', selectitem); | |
| 277 | - | |
| 278 | - | |
| 279 | - | |
| 280 | - return { | |
| 281 | - init: init, | |
| 282 | - readyStatus: function () { | |
| 283 | - return readyStatus; | |
| 284 | - }, | |
| 285 | - getChecked: function () { | |
| 286 | - return treeObj.jstree(true).get_checked(true); | |
| 287 | - }, | |
| 288 | - all_devices: function () { | |
| 289 | - return _devices; | |
| 290 | - }, | |
| 291 | - create_node: create_node, | |
| 292 | - changeUpDown: changeUpDown, | |
| 293 | - update_node: update_node, | |
| 294 | - refresh: refresh, | |
| 295 | - selectitem: selectitem | |
| 296 | - }; | |
| 1 | +var gb_map_gps_tree = (function () { | |
| 2 | + | |
| 3 | + var idBefore = 'map_tree_'; | |
| 4 | + var _devices; | |
| 5 | + | |
| 6 | + var treeObj; | |
| 7 | + var jstreeChanged = function (e, node, event) { | |
| 8 | + gb_map_overlay_mge.refresh(); | |
| 9 | + }; | |
| 10 | + | |
| 11 | + var readyStatus; | |
| 12 | + | |
| 13 | + var init = function (cb) { | |
| 14 | + var allGps = gb_data_gps.allGps; | |
| 15 | + _devices = gb_common.get_keys(allGps); | |
| 16 | + //设备树 | |
| 17 | + var treeData = gb_common.get_device_tree_data(allGps, idBefore); | |
| 18 | + treeObj = $('.real_right_gps_panel .gps_tree_list') | |
| 19 | + //节点初始化完成 | |
| 20 | + .on('ready.jstree', function () { | |
| 21 | + //treeObj.jstree(true).open_all(); | |
| 22 | + //删掉tree node a标签的 href值(避免鼠标悬停浏览器出现状态条) | |
| 23 | + $('.gps_tree_list .jstree-container-ul a.jstree-anchor').removeAttr('href'); | |
| 24 | + }) | |
| 25 | + //state插件 状态恢复完成 | |
| 26 | + .on('state_ready.jstree', function () { | |
| 27 | + //绑定checkbox状态切换事件 | |
| 28 | + treeObj.on('check_node.jstree uncheck_node.jstree', jstreeChanged); | |
| 29 | + readyStatus = true; | |
| 30 | + cb && cb(); | |
| 31 | + }) | |
| 32 | + .on('activate_node.jstree', function (e, n) { | |
| 33 | + var node = n.node; | |
| 34 | + if (node.a_attr && node.a_attr.type == 'device' && node.state.checked) { | |
| 35 | + var device = node.a_attr.device; | |
| 36 | + gb_map_overlay_mge._focus(device); | |
| 37 | + } | |
| 38 | + }) | |
| 39 | + .jstree({ | |
| 40 | + 'core': { | |
| 41 | + 'data': treeData, | |
| 42 | + 'check_callback': true | |
| 43 | + }, | |
| 44 | + 'checkbox': { | |
| 45 | + 'keep_selected_style': false, | |
| 46 | + 'whole_node': false, | |
| 47 | + 'tie_selection': false | |
| 48 | + }, | |
| 49 | + //local storage里的key | |
| 50 | + 'state': { | |
| 51 | + 'key': 'jstree_map_devices' | |
| 52 | + }, | |
| 53 | + 'plugins': ['checkbox', 'state'] | |
| 54 | + }); | |
| 55 | + }; | |
| 56 | + | |
| 57 | + var refresh = function () { | |
| 58 | + var jstreeInts = treeObj.jstree(true); | |
| 59 | + var oldChecks = jstreeInts.get_checked(true); | |
| 60 | + var treeData = gb_common.get_device_tree_data(gb_data_gps.allGps, idBefore); | |
| 61 | + jstreeInts.settings.core.data = treeData; | |
| 62 | + jstreeInts.refresh(); | |
| 63 | + jstreeInts.bind("refresh.jstree", function (event, data) { | |
| 64 | + $.each(oldChecks, function () { | |
| 65 | + jstreeInts.check_node(jstreeInts.get_node(this.a_attr.id)); | |
| 66 | + }); | |
| 67 | + $.each(gb_data_basic.activeLines, function (i) { | |
| 68 | + var lineNode = jstreeInts.get_node(idBefore + 'line_' + this.lineCode); | |
| 69 | + if (!lineNode) { | |
| 70 | + create_route_node(this.lineCode); | |
| 71 | + } | |
| 72 | + }); | |
| 73 | + }) | |
| 74 | + }; | |
| 75 | + | |
| 76 | + //創建新節點 | |
| 77 | + var create_node = function (array, create_end_cb) { | |
| 78 | + if (!isArray(array)) | |
| 79 | + array = [array]; | |
| 80 | + | |
| 81 | + var jstreeInts = treeObj.jstree(true); | |
| 82 | + var len = array.length, i = 0; | |
| 83 | + (function () { | |
| 84 | + var f = arguments.callee; | |
| 85 | + if (i >= len) { | |
| 86 | + create_end_cb && create_end_cb(); | |
| 87 | + return; | |
| 88 | + } | |
| 89 | + | |
| 90 | + var gps = array[i], | |
| 91 | + pId = idBefore + 'route_' + gps.lineId + '_' + gps.upDown; | |
| 92 | + //上下行节点 | |
| 93 | + var routeNode = jstreeInts.get_node(pId); | |
| 94 | + if (!routeNode) { | |
| 95 | + //父节点不存在 | |
| 96 | + create_route_node(gps.lineId, function () { | |
| 97 | + //重新获取上下行节点 | |
| 98 | + routeNode = jstreeInts.get_node(pId); | |
| 99 | + appendDeviceNode(routeNode, gps, function () { | |
| 100 | + _devices.push(gps.deviceId); | |
| 101 | + i++; | |
| 102 | + f(); | |
| 103 | + }); | |
| 104 | + }); | |
| 105 | + } | |
| 106 | + else { | |
| 107 | + appendDeviceNode(routeNode, gps, function () { | |
| 108 | + _devices.push(gps.deviceId); | |
| 109 | + i++; | |
| 110 | + f(); | |
| 111 | + }); | |
| 112 | + } | |
| 113 | + })(); | |
| 114 | + }; | |
| 115 | + | |
| 116 | + //创建线路和上下行节点 | |
| 117 | + var create_route_node = function (lineCode, cb) { | |
| 118 | + var lineName = gb_data_basic.codeToLine[lineCode].name; | |
| 119 | + var id = treeObj.jstree(true).create_node('#', { | |
| 120 | + 'text': lineName, | |
| 121 | + 'a_attr': {'type': 'line', 'id': idBefore + 'line_' + lineCode}, | |
| 122 | + 'state': {'opened': true}, | |
| 123 | + 'children': [{ | |
| 124 | + 'text': '上行', | |
| 125 | + 'a_attr': { | |
| 126 | + 'type': 'route', | |
| 127 | + 'route': lineCode + '_0', | |
| 128 | + 'id': idBefore + 'route_' + lineCode + '_0', | |
| 129 | + 'state': {'opened': true} | |
| 130 | + } | |
| 131 | + }, { | |
| 132 | + 'text': '下行', | |
| 133 | + 'a_attr': { | |
| 134 | + 'type': 'route', | |
| 135 | + 'route': lineCode + '_1', | |
| 136 | + 'id': idBefore + 'route_' + lineCode + '_1', | |
| 137 | + 'state': {'opened': true} | |
| 138 | + } | |
| 139 | + }] | |
| 140 | + }, 'last', cb); | |
| 141 | + }; | |
| 142 | + | |
| 143 | + var appendDeviceNode = function (routeNode, gps, cb) { | |
| 144 | + if (!routeNode) { | |
| 145 | + return; | |
| 146 | + } | |
| 147 | + | |
| 148 | + //添加车辆節點 | |
| 149 | + treeObj.jstree(true).create_node(routeNode, { | |
| 150 | + 'text': gps.nbbm, | |
| 151 | + 'a_attr': { | |
| 152 | + 'type': 'device', | |
| 153 | + 'device': gps.deviceId | |
| 154 | + }, | |
| 155 | + 'data': {lineId: gps.lineId, upDown: gps.upDown}, | |
| 156 | + 'icon': 'uk-icon-bus' | |
| 157 | + }, 'last', cb); | |
| 158 | + }; | |
| 159 | + | |
| 160 | + var openLineNode = function (lineId, cb) { | |
| 161 | + var tree = treeObj.jstree(true); | |
| 162 | + tree.open_node(tree.get_node('map_tree_line_' + lineId), function () { | |
| 163 | + var upNode = tree.get_node('map_tree_route_' + lineId + '_0') | |
| 164 | + ,downNode = tree.get_node('map_tree_route_' + lineId + '_1'); | |
| 165 | + | |
| 166 | + tree.open_node(upNode, function () { | |
| 167 | + tree.open_node(downNode, cb); | |
| 168 | + }); | |
| 169 | + }); | |
| 170 | + }; | |
| 171 | + | |
| 172 | + var moveNode = function (i, gps) { | |
| 173 | + var tree = treeObj.jstree(true) | |
| 174 | + ,lineId = gps.lineId; | |
| 175 | + openLineNode(lineId, function () { | |
| 176 | + var node = tree.get_node('map_tree_device_' + gps.nbbm); | |
| 177 | + //移动节点 | |
| 178 | + var parent = tree.get_node('map_tree_route_' + lineId + '_' + gps.upDown); | |
| 179 | + treeObj.jstree(true).move_node(node, parent); | |
| 180 | + }); | |
| 181 | + }; | |
| 182 | + | |
| 183 | + /** | |
| 184 | + * 上下行改变 | |
| 185 | + * @param changeArray | |
| 186 | + */ | |
| 187 | + var changeUpDown = function (changeArray) { | |
| 188 | + $.each(changeArray, moveNode); | |
| 189 | + }; | |
| 190 | + | |
| 191 | + /** | |
| 192 | + * 更新节点 | |
| 193 | + */ | |
| 194 | + var abnormalsMapp = { | |
| 195 | + 'outBounds': '越界', | |
| 196 | + 'overspeed': '超速' | |
| 197 | + }; | |
| 198 | + var update_node = function (ups) { | |
| 199 | + var tree = treeObj.jstree(true) | |
| 200 | + ,node,suffix; | |
| 201 | + $.each(ups, function () { | |
| 202 | + node = tree.get_node('map_tree_device_' + this.nbbm); | |
| 203 | + suffix=abnormalsMapp[this['abnormalStatus']]; | |
| 204 | + suffix = suffix?'<a class="gps_tree_abnormal '+this['abnormalStatus']+'">'+suffix+'</a>':''; | |
| 205 | + tree.set_text(node, this.nbbm + suffix); | |
| 206 | + }); | |
| 207 | + }; | |
| 208 | + | |
| 209 | + | |
| 210 | + /** | |
| 211 | + * 搜索 | |
| 212 | + */ | |
| 213 | + var autocom = '.real_right_gps_panel .ral-gps-autocom' | |
| 214 | + ,_input = $('input', autocom); | |
| 215 | + | |
| 216 | + var autocomplete_source = function(release) { | |
| 217 | + var rs = [], | |
| 218 | + v = _input.val().toUpperCase(), count=0; | |
| 219 | + | |
| 220 | + $.each(gb_common.get_vals(gb_data_gps.allGps), function () { | |
| 221 | + if(this.nbbm.indexOf(v) != -1){ | |
| 222 | + rs.push({ | |
| 223 | + value: this.nbbm, | |
| 224 | + stationName: this.stationName?this.stationName:'', | |
| 225 | + dateStr: this.dateStr | |
| 226 | + }); | |
| 227 | + count++; | |
| 228 | + } | |
| 229 | + if(count > 11) | |
| 230 | + return false; | |
| 231 | + }); | |
| 232 | + release && release(rs); | |
| 233 | + }; | |
| 234 | + | |
| 235 | + var selectitem = function (event, data, acobject) { | |
| 236 | + | |
| 237 | + var tree = treeObj.jstree(true) | |
| 238 | + var deviceId = gb_data_basic.nbbm2deviceMap()[data.value] | |
| 239 | + ,gps = gb_data_gps.findOne(deviceId); | |
| 240 | + | |
| 241 | + if(gps.upDown==-1){ | |
| 242 | + UIkit.notify(data.value + " 未知上下行!", {pos:'top-center'}); | |
| 243 | + return; | |
| 244 | + } | |
| 245 | + //展开线路节点 | |
| 246 | + tree.open_node(tree.get_node('map_tree_line_' + gps.lineId), function () { | |
| 247 | + //展开走向节点 | |
| 248 | + tree.open_node(tree.get_node('map_tree_route_' + gps.lineId + '_' + gps.upDown), function () { | |
| 249 | + //选中车辆 | |
| 250 | + var id = 'map_tree_device_' + data.value; | |
| 251 | + var node = tree.get_node(id); | |
| 252 | + tree.check_node(node); | |
| 253 | + | |
| 254 | + var $e = $('#'+id); | |
| 255 | + treeObj.animate({ | |
| 256 | + scrollTop: $e.offset().top - treeObj.offset().top + treeObj.scrollTop() | |
| 257 | + }, 500); | |
| 258 | + //地图定位 | |
| 259 | + gb_map_overlay_mge._focus(gb_data_basic.nbbm2deviceMap()[data.value]); | |
| 260 | + }, false); | |
| 261 | + }); | |
| 262 | + }; | |
| 263 | + var result_template = '<script type="text/autocomplete">' + | |
| 264 | + ' <ul class="uk-nav uk-nav-autocomplete uk-autocomplete-results ral-gps-autocom-results">' + | |
| 265 | + ' {{~items}}' + | |
| 266 | + ' <li data-value="{{ $item.value }}">' + | |
| 267 | + ' <a>' + | |
| 268 | + ' {{ $item.value }} <small class="desc"> {{ $item.stationName }}</small>' + | |
| 269 | + ' <div class="desc"><span>{{$item.dateStr}}</span></div>' + | |
| 270 | + ' </a>' + | |
| 271 | + ' </li>' + | |
| 272 | + ' {{/items}}' + | |
| 273 | + ' </ul>' + | |
| 274 | + '</script>'; | |
| 275 | + | |
| 276 | + $(autocom).append(result_template); | |
| 277 | + UIkit.autocomplete(autocom, { | |
| 278 | + minLength: 1, | |
| 279 | + delay: 10, | |
| 280 | + source: autocomplete_source | |
| 281 | + }).on('selectitem.uk.autocomplete', selectitem); | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + return { | |
| 286 | + init: init, | |
| 287 | + readyStatus: function () { | |
| 288 | + return readyStatus; | |
| 289 | + }, | |
| 290 | + getChecked: function () { | |
| 291 | + return treeObj.jstree(true).get_checked(true); | |
| 292 | + }, | |
| 293 | + all_devices: function () { | |
| 294 | + return _devices; | |
| 295 | + }, | |
| 296 | + create_node: create_node, | |
| 297 | + changeUpDown: changeUpDown, | |
| 298 | + update_node: update_node, | |
| 299 | + refresh: refresh, | |
| 300 | + selectitem: selectitem | |
| 301 | + }; | |
| 297 | 302 | })(); |
| 298 | 303 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/mapmonitor/js/map_overlay_manager.js
| 1 | -var gb_map_overlay_mge = (function () { | |
| 2 | - | |
| 3 | - var storage = window.localStorage; | |
| 4 | - | |
| 5 | - var temps; | |
| 6 | - $.get('/real_control_v2/mapmonitor/fragments/map_infowindow.html', function (dom) { | |
| 7 | - temps = gb_common.compileTempByDom(dom, {compress: true}); | |
| 8 | - }); | |
| 9 | - | |
| 10 | - var $abnormNoticePanel = $('.c_b_abnorm_notice'); | |
| 11 | - var gpsRefresh = function (addArr, upArr, upDownChange, overspeedList) { | |
| 12 | - if(!$('.main-container .map-panel').is(':visible')) | |
| 13 | - return; | |
| 14 | - //如果地图正在重绘,暂时不刷新GPS | |
| 15 | - if(reDrawing) | |
| 16 | - return; | |
| 17 | - //var all = addArr.concat(upArr).concat(upDownChange); | |
| 18 | - gpsRefreshAll(addArr, upArr, upDownChange); | |
| 19 | - | |
| 20 | - //渲染超速信息 | |
| 21 | - overspeedList.sort(overspeed_sort); | |
| 22 | - var htmlStr = template('map_abnorm_overspeed_list-temp', {list: overspeedList}); | |
| 23 | - $abnormNoticePanel.html(htmlStr).scrollTop($abnormNoticePanel[0].scrollHeight); | |
| 24 | - }; | |
| 25 | - | |
| 26 | - var overspeed_sort = function (a, b) { | |
| 27 | - if(a.ets && !b.ets) | |
| 28 | - return -1; | |
| 29 | - if(!a.ets && b.ets) | |
| 30 | - return 1; | |
| 31 | - return a.st - b.st; | |
| 32 | - }; | |
| 33 | - | |
| 34 | - /** | |
| 35 | - * 超速点击 | |
| 36 | - */ | |
| 37 | - $abnormNoticePanel.on('click', '.c_b_item', function () { | |
| 38 | - var nbbm = $(this).data('nbbm'); | |
| 39 | - gb_map_gps_tree.selectitem(null, {value: nbbm}); | |
| 40 | - }); | |
| 41 | - | |
| 42 | - var gpsRefreshAll = function (addArr, upArr, upDownChange) { | |
| 43 | - //更新设备树菜单 | |
| 44 | - if(gb_map_gps_tree.readyStatus()){ | |
| 45 | - gb_map_gps_tree.create_node(addArr); | |
| 46 | - gb_map_gps_tree.update_node(upArr); | |
| 47 | - gb_map_gps_tree.changeUpDown(upDownChange); | |
| 48 | - } | |
| 49 | - | |
| 50 | - //更新地图 | |
| 51 | - var all = addArr.concat(upArr).concat(upDownChange); | |
| 52 | - gb_map_imap.call('drawRealGpsMarker', {gpsList: all}); | |
| 53 | - }; | |
| 54 | - | |
| 55 | - var reload_gps = function () { | |
| 56 | - var array = gb_common.get_vals(gb_data_gps.allGps); | |
| 57 | - gb_map_gps_tree.refresh(); | |
| 58 | - gb_map_imap.call('drawRealGpsMarker', {gpsList: array}); | |
| 59 | - }; | |
| 60 | - | |
| 61 | - var deviceFilter = function (node) { | |
| 62 | - return node.a_attr && node.a_attr.type=='device'; | |
| 63 | - }; | |
| 64 | - | |
| 65 | - //绘制线路走向 | |
| 66 | - var drawAllSection=function () { | |
| 67 | - //绘制线路走向 | |
| 68 | - var lines=JSON.parse(storage.getItem('lineControlItems')); | |
| 69 | - $.each(lines, function () { | |
| 70 | - //从storage里获取路由数据 | |
| 71 | - var lineCode=this.lineCode; | |
| 72 | - var route = JSON.parse(storage.getItem(lineCode + '_route')); | |
| 73 | - //上行 | |
| 74 | - gb_map_imap.call('drawLine', { | |
| 75 | - route: route, | |
| 76 | - style: {strokeWeight:6, strokeColor: gb_map_config.getConfig().section.color.up}, | |
| 77 | - id: lineCode+'_0', | |
| 78 | - upDown: 0, | |
| 79 | - hide: true | |
| 80 | - }); | |
| 81 | - //下行 | |
| 82 | - gb_map_imap.call('drawLine', { | |
| 83 | - route: route, | |
| 84 | - style: {strokeWeight:6, strokeColor: gb_map_config.getConfig().section.color.down}, | |
| 85 | - id: lineCode+'_1', | |
| 86 | - upDown: 1, | |
| 87 | - hide: true | |
| 88 | - }); | |
| 89 | - | |
| 90 | - }); | |
| 91 | - }; | |
| 92 | - | |
| 93 | - //根据选中项显示路段 | |
| 94 | - var showSection = function (chs) { | |
| 95 | - var idx = {}; | |
| 96 | - $.each(chs, function () { | |
| 97 | - idx[this.data.lineId+'_'+this.data.upDown]=1; | |
| 98 | - }); | |
| 99 | - | |
| 100 | - gb_map_imap.call('refreshPolyline', {idx: gb_common.get_keys(idx)}); | |
| 101 | - }; | |
| 102 | - | |
| 103 | - | |
| 104 | - //是否正在重绘 | |
| 105 | - var reDrawing; | |
| 106 | - var reDraw = function () { | |
| 107 | - reDrawing = true; | |
| 108 | - | |
| 109 | - gb_map_imap.call('clearAll'); | |
| 110 | - | |
| 111 | - try{ | |
| 112 | - drawAllSection(); | |
| 113 | - }catch (e){ | |
| 114 | - console.log(e); | |
| 115 | - } | |
| 116 | - //重绘GPS | |
| 117 | - gb_map_imap.call('drawRealGpsMarker', {gpsList: gb_common.get_vals(gb_data_gps.allGps)}); | |
| 118 | - | |
| 119 | - showOverlayByChecks(); | |
| 120 | - //显示路段 | |
| 121 | - showSection(getCheckedDevice()); | |
| 122 | - | |
| 123 | - reDrawing = false; | |
| 124 | - }; | |
| 125 | - | |
| 126 | - //重绘GPS | |
| 127 | - var reDrawGps = function () { | |
| 128 | - reDrawing = true; | |
| 129 | - gb_map_imap.call('clearAllGps'); | |
| 130 | - //重绘GPS | |
| 131 | - gb_map_imap.call('drawRealGpsMarker', {gpsList: gb_common.get_vals(gb_data_gps.allGps)}); | |
| 132 | - | |
| 133 | - showOverlayByChecks(); | |
| 134 | - reDrawing = false; | |
| 135 | - }; | |
| 136 | - | |
| 137 | - var init = function () { | |
| 138 | - reDraw(); | |
| 139 | - //注册GPS刷新事件 | |
| 140 | - gb_data_gps.registerCallback(gpsRefresh); | |
| 141 | - | |
| 142 | - centerToRational(); | |
| 143 | - }; | |
| 144 | - | |
| 145 | - | |
| 146 | - var showOverlayByChecks = function () { | |
| 147 | - var chs = getCheckedDevice(),chsMap={}; | |
| 148 | - $.each(chs, function () { | |
| 149 | - chsMap[this.a_attr.device]=true; | |
| 150 | - }); | |
| 151 | - | |
| 152 | - gb_map_imap.call('showGpsMarker', {chs: chsMap}); | |
| 153 | - | |
| 154 | - //路段 | |
| 155 | - showSection(chs); | |
| 156 | - | |
| 157 | - }; | |
| 158 | - | |
| 159 | - var _focus = function (deviceId) { | |
| 160 | - gb_map_imap.call('goToMarker', {deviceId: deviceId}); | |
| 161 | - //打开信息窗口 | |
| 162 | - gb_map_imap.call('openWindow',{deviceId: deviceId}); | |
| 163 | - }; | |
| 164 | - | |
| 165 | - //站点获得焦点 | |
| 166 | - var _focus_station = function (station) { | |
| 167 | - gb_map_imap.call('goToStation', station.stationCode); | |
| 168 | - }; | |
| 169 | - | |
| 170 | - //停车场获得焦点 | |
| 171 | - var _focus_carpark = function (carpark) { | |
| 172 | - //console.log('_focus_carpark', carpark); | |
| 173 | - gb_map_imap.call('goToCarpark', carpark.parkCode); | |
| 174 | - }; | |
| 175 | - | |
| 176 | - function getCheckedDevice() { | |
| 177 | - return gb_map_gps_tree.getChecked().filter(deviceFilter); | |
| 178 | - } | |
| 179 | - | |
| 180 | - //绘制站点 | |
| 181 | - var drawStation = function () { | |
| 182 | - var list = gb_map_spatial_data.getCheckedStation(); | |
| 183 | - //绘制站点 | |
| 184 | - gb_map_imap.call('drawStationMarker', {list: list}); | |
| 185 | - //绘制电子围栏 | |
| 186 | - drawElectronicFence(list); | |
| 187 | - }; | |
| 188 | - | |
| 189 | - //绘制电子围栏 | |
| 190 | - var drawElectronicFence = function (list) { | |
| 191 | - var config = gb_map_config.getConfig().spatialData; | |
| 192 | - if(!config.electronicFence) | |
| 193 | - return; | |
| 194 | - | |
| 195 | - if(!list){ | |
| 196 | - list = gb_map_spatial_data.getCheckedStation(); | |
| 197 | - } | |
| 198 | - | |
| 199 | - | |
| 200 | - gb_map_imap.call('hideAllCircles'); | |
| 201 | - $.each(list, function () { | |
| 202 | - fun=this.shapesType=='r'?drawCircle:drawPolygon; | |
| 203 | - fun(this); | |
| 204 | - }); | |
| 205 | - }; | |
| 206 | - | |
| 207 | - //绘制停车场 | |
| 208 | - var drawCarpark = function () { | |
| 209 | - var list = gb_map_spatial_data.gteCheckedCarpark(); | |
| 210 | - gb_map_imap.call('drawCarpark', {list: list}); | |
| 211 | - }; | |
| 212 | - | |
| 213 | - var drawCircle=function (data) { | |
| 214 | - var config = gb_map_config.getConfig().section.color; | |
| 215 | - var color = data.directions==0?config.up:config.down; | |
| 216 | - | |
| 217 | - var opt = { | |
| 218 | - lon: data.lon, | |
| 219 | - lat: data.lat, | |
| 220 | - text: data.stationName, | |
| 221 | - color: color, | |
| 222 | - weight: 2, | |
| 223 | - radius: parseFloat(data.radius), | |
| 224 | - id: data.stationCode | |
| 225 | - }; | |
| 226 | - | |
| 227 | - gb_map_imap.call('drawCircle', opt); | |
| 228 | - }; | |
| 229 | - | |
| 230 | - var drawPolygon=function (data) { | |
| 231 | - var config = gb_map_config.getConfig().section.color; | |
| 232 | - var color = data.directions==0?config.up:config.down; | |
| 233 | - | |
| 234 | - var opt = { | |
| 235 | - //id:data.stationCode, | |
| 236 | - color: color, | |
| 237 | - weight: 2, | |
| 238 | - station: data | |
| 239 | - }; | |
| 240 | - | |
| 241 | - gb_map_imap.call('drawPolygon', opt); | |
| 242 | - }; | |
| 243 | - | |
| 244 | - //地图居中至合理的位置 | |
| 245 | - var centerToRational=function () { | |
| 246 | - var chs=getCheckedDevice(); | |
| 247 | - if(chs && chs.length > 0){ | |
| 248 | - var id=chs[0].data.lineId+'_'+chs[0].data.upDown; | |
| 249 | - gb_map_imap.call('centerToLine', {id: id}); | |
| 250 | - } | |
| 251 | - }; | |
| 252 | - | |
| 253 | - return { | |
| 254 | - init: init, | |
| 255 | - refresh: showOverlayByChecks, | |
| 256 | - _focus: _focus, | |
| 257 | - _focus_station: _focus_station, | |
| 258 | - _focus_carpark: _focus_carpark, | |
| 259 | - map_gps_win_temp: function (data) { | |
| 260 | - return temps['map-win-gps-detail-temp'](data); | |
| 261 | - }, | |
| 262 | - map_station_win_temp: function (data) { | |
| 263 | - return temps['map-win-station-detail-temp'](data); | |
| 264 | - }, | |
| 265 | - map_carpark_win_temp: function (data) { | |
| 266 | - return temps['map-win-carpark-detail-temp'](data); | |
| 267 | - }, | |
| 268 | - reDraw: reDraw, | |
| 269 | - reDrawGps: reDrawGps, | |
| 270 | - getCheckedDevice: getCheckedDevice, | |
| 271 | - drawStation: drawStation, | |
| 272 | - drawElectronicFence: drawElectronicFence, | |
| 273 | - drawCarpark: drawCarpark, | |
| 274 | - centerToRational:centerToRational, | |
| 275 | - reload_gps: reload_gps | |
| 276 | - }; | |
| 1 | +var gb_map_overlay_mge = (function () { | |
| 2 | + | |
| 3 | + var storage = window.localStorage; | |
| 4 | + | |
| 5 | + var temps; | |
| 6 | + $.get('/real_control_v2/mapmonitor/fragments/map_infowindow.html', function (dom) { | |
| 7 | + temps = gb_common.compileTempByDom(dom, {compress: true}); | |
| 8 | + }); | |
| 9 | + | |
| 10 | + var $abnormNoticePanel = $('.c_b_abnorm_notice'); | |
| 11 | + var gpsRefresh = function (addArr, upArr, upDownChange, overspeedList) { | |
| 12 | + if(!$('.main-container .map-panel').is(':visible')) | |
| 13 | + return; | |
| 14 | + //如果地图正在重绘,暂时不刷新GPS | |
| 15 | + if(reDrawing) | |
| 16 | + return; | |
| 17 | + //var all = addArr.concat(upArr).concat(upDownChange); | |
| 18 | + gpsRefreshAll(addArr, upArr, upDownChange); | |
| 19 | + | |
| 20 | + //渲染超速信息 | |
| 21 | + overspeedList.sort(overspeed_sort); | |
| 22 | + var htmlStr = template('map_abnorm_overspeed_list-temp', {list: overspeedList}); | |
| 23 | + $abnormNoticePanel.html(htmlStr).scrollTop($abnormNoticePanel[0].scrollHeight); | |
| 24 | + }; | |
| 25 | + | |
| 26 | + var overspeed_sort = function (a, b) { | |
| 27 | + if(a.ets && !b.ets) | |
| 28 | + return -1; | |
| 29 | + if(!a.ets && b.ets) | |
| 30 | + return 1; | |
| 31 | + return a.st - b.st; | |
| 32 | + }; | |
| 33 | + | |
| 34 | + /** | |
| 35 | + * 超速点击 | |
| 36 | + */ | |
| 37 | + $abnormNoticePanel.on('click', '.c_b_item', function () { | |
| 38 | + var nbbm = $(this).data('nbbm'); | |
| 39 | + gb_map_gps_tree.selectitem(null, {value: nbbm}); | |
| 40 | + }); | |
| 41 | + | |
| 42 | + var gpsRefreshAll = function (addArr, upArr, upDownChange) { | |
| 43 | + //更新设备树菜单 | |
| 44 | + if(gb_map_gps_tree.readyStatus()){ | |
| 45 | + gb_map_gps_tree.create_node(addArr); | |
| 46 | + gb_map_gps_tree.update_node(upArr); | |
| 47 | + gb_map_gps_tree.changeUpDown(upDownChange); | |
| 48 | + } | |
| 49 | + | |
| 50 | + //更新地图 | |
| 51 | + var all = addArr.concat(upArr).concat(upDownChange); | |
| 52 | + gb_map_imap.call('drawRealGpsMarker', {gpsList: all}); | |
| 53 | + }; | |
| 54 | + | |
| 55 | + var reload_gps = function () { | |
| 56 | + var array = gb_common.get_vals(gb_data_gps.allGps); | |
| 57 | + gb_map_gps_tree.refresh(); | |
| 58 | + gb_map_imap.call('drawRealGpsMarker', {gpsList: array}); | |
| 59 | + }; | |
| 60 | + | |
| 61 | + var deviceFilter = function (node) { | |
| 62 | + return node.a_attr && node.a_attr.type=='device'; | |
| 63 | + }; | |
| 64 | + | |
| 65 | + var routeFilter = function (node) { | |
| 66 | + return node.a_attr && node.a_attr.type=='route'; | |
| 67 | + }; | |
| 68 | + | |
| 69 | + //绘制线路走向 | |
| 70 | + var drawAllSection=function () { | |
| 71 | + //绘制线路走向 | |
| 72 | + var lines=JSON.parse(storage.getItem('lineControlItems')); | |
| 73 | + $.each(lines, function () { | |
| 74 | + //从storage里获取路由数据 | |
| 75 | + var lineCode=this.lineCode; | |
| 76 | + var route = JSON.parse(storage.getItem(lineCode + '_route')); | |
| 77 | + //上行 | |
| 78 | + gb_map_imap.call('drawLine', { | |
| 79 | + route: route, | |
| 80 | + style: {strokeWeight:6, strokeColor: gb_map_config.getConfig().section.color.up}, | |
| 81 | + id: lineCode+'_0', | |
| 82 | + upDown: 0, | |
| 83 | + hide: true | |
| 84 | + }); | |
| 85 | + //下行 | |
| 86 | + gb_map_imap.call('drawLine', { | |
| 87 | + route: route, | |
| 88 | + style: {strokeWeight:6, strokeColor: gb_map_config.getConfig().section.color.down}, | |
| 89 | + id: lineCode+'_1', | |
| 90 | + upDown: 1, | |
| 91 | + hide: true | |
| 92 | + }); | |
| 93 | + | |
| 94 | + }); | |
| 95 | + }; | |
| 96 | + | |
| 97 | + //根据选中项显示路段 | |
| 98 | + var showSection = function (chr) { | |
| 99 | + var idx = {}; | |
| 100 | + $.each(chr, function () { | |
| 101 | + idx[this.a_attr.route]=1; | |
| 102 | + }); | |
| 103 | + | |
| 104 | + gb_map_imap.call('refreshPolyline', {idx: gb_common.get_keys(idx)}); | |
| 105 | + }; | |
| 106 | + | |
| 107 | + //是否正在重绘 | |
| 108 | + var reDrawing; | |
| 109 | + var reDraw = function () { | |
| 110 | + reDrawing = true; | |
| 111 | + | |
| 112 | + gb_map_imap.call('clearAll'); | |
| 113 | + | |
| 114 | + try{ | |
| 115 | + drawAllSection(); | |
| 116 | + }catch (e){ | |
| 117 | + console.log(e); | |
| 118 | + } | |
| 119 | + //重绘GPS | |
| 120 | + gb_map_imap.call('drawRealGpsMarker', {gpsList: gb_common.get_vals(gb_data_gps.allGps)}); | |
| 121 | + | |
| 122 | + showOverlayByChecks(); | |
| 123 | + //显示路段 | |
| 124 | + showSection(getCheckedRoute()); | |
| 125 | + | |
| 126 | + reDrawing = false; | |
| 127 | + }; | |
| 128 | + | |
| 129 | + //重绘GPS | |
| 130 | + var reDrawGps = function () { | |
| 131 | + reDrawing = true; | |
| 132 | + gb_map_imap.call('clearAllGps'); | |
| 133 | + //重绘GPS | |
| 134 | + gb_map_imap.call('drawRealGpsMarker', {gpsList: gb_common.get_vals(gb_data_gps.allGps)}); | |
| 135 | + | |
| 136 | + showOverlayByChecks(); | |
| 137 | + reDrawing = false; | |
| 138 | + }; | |
| 139 | + | |
| 140 | + var init = function () { | |
| 141 | + reDraw(); | |
| 142 | + //注册GPS刷新事件 | |
| 143 | + gb_data_gps.registerCallback(gpsRefresh); | |
| 144 | + | |
| 145 | + centerToRational(); | |
| 146 | + }; | |
| 147 | + | |
| 148 | + | |
| 149 | + var showOverlayByChecks = function () { | |
| 150 | + var chs = getCheckedDevice(),chsMap={},chr = getCheckedRoute(); | |
| 151 | + $.each(chs, function () { | |
| 152 | + chsMap[this.a_attr.device]=true; | |
| 153 | + }); | |
| 154 | + | |
| 155 | + gb_map_imap.call('showGpsMarker', {chs: chsMap}); | |
| 156 | + | |
| 157 | + //路段 | |
| 158 | + showSection(chr); | |
| 159 | + | |
| 160 | + }; | |
| 161 | + | |
| 162 | + var _focus = function (deviceId) { | |
| 163 | + gb_map_imap.call('goToMarker', {deviceId: deviceId}); | |
| 164 | + //打开信息窗口 | |
| 165 | + gb_map_imap.call('openWindow',{deviceId: deviceId}); | |
| 166 | + }; | |
| 167 | + | |
| 168 | + //站点获得焦点 | |
| 169 | + var _focus_station = function (station) { | |
| 170 | + gb_map_imap.call('goToStation', station.stationCode); | |
| 171 | + }; | |
| 172 | + | |
| 173 | + //停车场获得焦点 | |
| 174 | + var _focus_carpark = function (carpark) { | |
| 175 | + //console.log('_focus_carpark', carpark); | |
| 176 | + gb_map_imap.call('goToCarpark', carpark.parkCode); | |
| 177 | + }; | |
| 178 | + | |
| 179 | + function getCheckedDevice() { | |
| 180 | + return gb_map_gps_tree.getChecked().filter(deviceFilter); | |
| 181 | + } | |
| 182 | + | |
| 183 | + function getCheckedRoute() { | |
| 184 | + return gb_map_gps_tree.getChecked().filter(routeFilter); | |
| 185 | + } | |
| 186 | + | |
| 187 | + //绘制站点 | |
| 188 | + var drawStation = function () { | |
| 189 | + var list = gb_map_spatial_data.getCheckedStation(); | |
| 190 | + //绘制站点 | |
| 191 | + gb_map_imap.call('drawStationMarker', {list: list}); | |
| 192 | + //绘制电子围栏 | |
| 193 | + drawElectronicFence(list); | |
| 194 | + }; | |
| 195 | + | |
| 196 | + //绘制电子围栏 | |
| 197 | + var drawElectronicFence = function (list) { | |
| 198 | + var config = gb_map_config.getConfig().spatialData; | |
| 199 | + if(!config.electronicFence) | |
| 200 | + return; | |
| 201 | + | |
| 202 | + if(!list){ | |
| 203 | + list = gb_map_spatial_data.getCheckedStation(); | |
| 204 | + } | |
| 205 | + | |
| 206 | + | |
| 207 | + gb_map_imap.call('hideAllCircles'); | |
| 208 | + $.each(list, function () { | |
| 209 | + fun=this.shapesType=='r'?drawCircle:drawPolygon; | |
| 210 | + fun(this); | |
| 211 | + }); | |
| 212 | + }; | |
| 213 | + | |
| 214 | + //绘制停车场 | |
| 215 | + var drawCarpark = function () { | |
| 216 | + var list = gb_map_spatial_data.gteCheckedCarpark(); | |
| 217 | + gb_map_imap.call('drawCarpark', {list: list}); | |
| 218 | + }; | |
| 219 | + | |
| 220 | + var drawCircle=function (data) { | |
| 221 | + var config = gb_map_config.getConfig().section.color; | |
| 222 | + var color = data.directions==0?config.up:config.down; | |
| 223 | + | |
| 224 | + var opt = { | |
| 225 | + lon: data.lon, | |
| 226 | + lat: data.lat, | |
| 227 | + text: data.stationName, | |
| 228 | + color: color, | |
| 229 | + weight: 2, | |
| 230 | + radius: parseFloat(data.radius), | |
| 231 | + id: data.stationCode | |
| 232 | + }; | |
| 233 | + | |
| 234 | + gb_map_imap.call('drawCircle', opt); | |
| 235 | + }; | |
| 236 | + | |
| 237 | + var drawPolygon=function (data) { | |
| 238 | + var config = gb_map_config.getConfig().section.color; | |
| 239 | + var color = data.directions==0?config.up:config.down; | |
| 240 | + | |
| 241 | + var opt = { | |
| 242 | + //id:data.stationCode, | |
| 243 | + color: color, | |
| 244 | + weight: 2, | |
| 245 | + station: data | |
| 246 | + }; | |
| 247 | + | |
| 248 | + gb_map_imap.call('drawPolygon', opt); | |
| 249 | + }; | |
| 250 | + | |
| 251 | + //地图居中至合理的位置 | |
| 252 | + var centerToRational=function () { | |
| 253 | + var chs=getCheckedDevice(); | |
| 254 | + if(chs && chs.length > 0){ | |
| 255 | + var id=chs[0].data.lineId+'_'+chs[0].data.upDown; | |
| 256 | + gb_map_imap.call('centerToLine', {id: id}); | |
| 257 | + } | |
| 258 | + }; | |
| 259 | + | |
| 260 | + return { | |
| 261 | + init: init, | |
| 262 | + refresh: showOverlayByChecks, | |
| 263 | + _focus: _focus, | |
| 264 | + _focus_station: _focus_station, | |
| 265 | + _focus_carpark: _focus_carpark, | |
| 266 | + map_gps_win_temp: function (data) { | |
| 267 | + return temps['map-win-gps-detail-temp'](data); | |
| 268 | + }, | |
| 269 | + map_station_win_temp: function (data) { | |
| 270 | + return temps['map-win-station-detail-temp'](data); | |
| 271 | + }, | |
| 272 | + map_carpark_win_temp: function (data) { | |
| 273 | + return temps['map-win-carpark-detail-temp'](data); | |
| 274 | + }, | |
| 275 | + reDraw: reDraw, | |
| 276 | + reDrawGps: reDrawGps, | |
| 277 | + getCheckedDevice: getCheckedDevice, | |
| 278 | + drawStation: drawStation, | |
| 279 | + drawElectronicFence: drawElectronicFence, | |
| 280 | + drawCarpark: drawCarpark, | |
| 281 | + centerToRational:centerToRational, | |
| 282 | + reload_gps: reload_gps | |
| 283 | + }; | |
| 277 | 284 | })(); |
| 278 | 285 | \ No newline at end of file | ... | ... |