Commit ba8633e99a27b90c55b47e8f7d6225f1f0efc6bb

Authored by 648540858
1 parent 81f1b8ee

优化地图-添加地图页面以及设备树

Showing 25 changed files with 1074 additions and 577 deletions
src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/KeepaliveTimeoutListenerForPlatform.java
@@ -52,7 +52,6 @@ public class KeepaliveTimeoutListenerForPlatform extends RedisKeyExpirationEvent @@ -52,7 +52,6 @@ public class KeepaliveTimeoutListenerForPlatform extends RedisKeyExpirationEvent
52 public void onMessage(Message message, byte[] pattern) { 52 public void onMessage(Message message, byte[] pattern) {
53 // 获取失效的key 53 // 获取失效的key
54 String expiredKey = message.toString(); 54 String expiredKey = message.toString();
55 - logger.debug(expiredKey);  
56 // 平台心跳到期,需要重发, 判断是否已经多次未收到心跳回复, 多次未收到,则重新发起注册, 注册尝试多次未得到回复,则认为平台离线 55 // 平台心跳到期,需要重发, 判断是否已经多次未收到心跳回复, 多次未收到,则重新发起注册, 注册尝试多次未得到回复,则认为平台离线
57 String PLATFORM_KEEPLIVEKEY_PREFIX = VideoManagerConstants.PLATFORM_KEEPALIVE_PREFIX + userSetting.getServerId() + "_"; 56 String PLATFORM_KEEPLIVEKEY_PREFIX = VideoManagerConstants.PLATFORM_KEEPALIVE_PREFIX + userSetting.getServerId() + "_";
58 String PLATFORM_REGISTER_PREFIX = VideoManagerConstants.PLATFORM_REGISTER_PREFIX + userSetting.getServerId() + "_"; 57 String PLATFORM_REGISTER_PREFIX = VideoManagerConstants.PLATFORM_REGISTER_PREFIX + userSetting.getServerId() + "_";
src/main/java/com/genersoft/iot/vmp/gb28181/event/offline/OfflineEventListener.java
@@ -57,10 +57,8 @@ public class OfflineEventListener implements ApplicationListener<OfflineEvent> { @@ -57,10 +57,8 @@ public class OfflineEventListener implements ApplicationListener<OfflineEvent> {
57 57
58 @Override 58 @Override
59 public void onApplicationEvent(OfflineEvent event) { 59 public void onApplicationEvent(OfflineEvent event) {
60 -  
61 - if (logger.isDebugEnabled()) {  
62 - logger.debug("设备离线事件触发,deviceId:" + event.getDeviceId() + ",from:" + event.getFrom());  
63 - } 60 +
  61 + logger.info("设备离线事件触发,deviceId:" + event.getDeviceId() + ",from:" + event.getFrom());
64 62
65 String key = VideoManagerConstants.KEEPLIVEKEY_PREFIX + userSetting.getServerId() + "_" + event.getDeviceId(); 63 String key = VideoManagerConstants.KEEPLIVEKEY_PREFIX + userSetting.getServerId() + "_" + event.getDeviceId();
66 64
src/main/java/com/genersoft/iot/vmp/gb28181/event/online/OnlineEventListener.java
@@ -58,10 +58,8 @@ public class OnlineEventListener implements ApplicationListener<OnlineEvent> { @@ -58,10 +58,8 @@ public class OnlineEventListener implements ApplicationListener<OnlineEvent> {
58 58
59 @Override 59 @Override
60 public void onApplicationEvent(OnlineEvent event) { 60 public void onApplicationEvent(OnlineEvent event) {
61 -  
62 - if (logger.isDebugEnabled()) {  
63 - logger.debug("设备上线事件触发,deviceId:" + event.getDevice().getDeviceId() + ",from:" + event.getFrom());  
64 - } 61 +
  62 + logger.info("设备上线事件触发,deviceId:" + event.getDevice().getDeviceId() + ",from:" + event.getFrom());
65 Device device = event.getDevice(); 63 Device device = event.getDevice();
66 if (device == null) return; 64 if (device == null) return;
67 String key = VideoManagerConstants.KEEPLIVEKEY_PREFIX + userSetting.getServerId() + "_" + event.getDevice().getDeviceId(); 65 String key = VideoManagerConstants.KEEPLIVEKEY_PREFIX + userSetting.getServerId() + "_" + event.getDevice().getDeviceId();
src/main/java/com/genersoft/iot/vmp/gb28181/event/record/RecordEndEventListener.java
@@ -31,10 +31,8 @@ public class RecordEndEventListener implements ApplicationListener<RecordEndEven @@ -31,10 +31,8 @@ public class RecordEndEventListener implements ApplicationListener<RecordEndEven
31 private Map<String, RecordEndEventHandler> handlerMap = new HashMap<>(); 31 private Map<String, RecordEndEventHandler> handlerMap = new HashMap<>();
32 @Override 32 @Override
33 public void onApplicationEvent(RecordEndEvent event) { 33 public void onApplicationEvent(RecordEndEvent event) {
34 - if (logger.isDebugEnabled()) {  
35 - logger.debug("录像查询完成事件触发,deviceId:{}, channelId: {}, 录像数量{}条", event.getRecordInfo().getDeviceId(),  
36 - event.getRecordInfo().getChannelId(), event.getRecordInfo().getSumNum() );  
37 - } 34 + logger.info("录像查询完成事件触发,deviceId:{}, channelId: {}, 录像数量{}条", event.getRecordInfo().getDeviceId(),
  35 + event.getRecordInfo().getChannelId(), event.getRecordInfo().getSumNum() );
38 if (handlerMap.size() > 0) { 36 if (handlerMap.size() > 0) {
39 for (RecordEndEventHandler recordEndEventHandler : handlerMap.values()) { 37 for (RecordEndEventHandler recordEndEventHandler : handlerMap.values()) {
40 recordEndEventHandler.handler(event.getRecordInfo()); 38 recordEndEventHandler.handler(event.getRecordInfo());
src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/SubscribeListenerForPlatform.java
@@ -39,7 +39,6 @@ public class SubscribeListenerForPlatform extends RedisKeyExpirationEventMessage @@ -39,7 +39,6 @@ public class SubscribeListenerForPlatform extends RedisKeyExpirationEventMessage
39 public void onMessage(Message message, byte[] pattern) { 39 public void onMessage(Message message, byte[] pattern) {
40 // 获取失效的key 40 // 获取失效的key
41 String expiredKey = message.toString(); 41 String expiredKey = message.toString();
42 - logger.debug(expiredKey);  
43 // 订阅到期 42 // 订阅到期
44 String PLATFORM_KEEPLIVEKEY_PREFIX = VideoManagerConstants.SIP_SUBSCRIBE_PREFIX + userSetting.getServerId() + "_"; 43 String PLATFORM_KEEPLIVEKEY_PREFIX = VideoManagerConstants.SIP_SUBSCRIBE_PREFIX + userSetting.getServerId() + "_";
45 if (expiredKey.startsWith(PLATFORM_KEEPLIVEKEY_PREFIX)) { 44 if (expiredKey.startsWith(PLATFORM_KEEPLIVEKEY_PREFIX)) {
src/main/java/com/genersoft/iot/vmp/gb28181/event/subscribe/catalog/CatalogEventLister.java
@@ -66,7 +66,7 @@ public class CatalogEventLister implements ApplicationListener&lt;CatalogEvent&gt; { @@ -66,7 +66,7 @@ public class CatalogEventLister implements ApplicationListener&lt;CatalogEvent&gt; {
66 subscribe = subscribeHolder.getCatalogSubscribe(event.getPlatformId()); 66 subscribe = subscribeHolder.getCatalogSubscribe(event.getPlatformId());
67 67
68 if (subscribe == null) { 68 if (subscribe == null) {
69 - logger.debug("发送订阅消息时发现订阅信息已经不存在"); 69 + logger.info("发送订阅消息时发现订阅信息已经不存在");
70 return; 70 return;
71 } 71 }
72 }else { 72 }else {
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/NotifyRequestProcessor.java
@@ -13,6 +13,7 @@ import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder; @@ -13,6 +13,7 @@ import com.genersoft.iot.vmp.gb28181.transmit.callback.DeferredResultHolder;
13 import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander; 13 import com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander;
14 import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor; 14 import com.genersoft.iot.vmp.gb28181.transmit.event.request.ISIPRequestProcessor;
15 import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent; 15 import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
  16 +import com.genersoft.iot.vmp.gb28181.utils.Coordtransform;
16 import com.genersoft.iot.vmp.gb28181.utils.NumericUtil; 17 import com.genersoft.iot.vmp.gb28181.utils.NumericUtil;
17 import com.genersoft.iot.vmp.gb28181.utils.SipUtils; 18 import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
18 import com.genersoft.iot.vmp.gb28181.utils.XmlUtil; 19 import com.genersoft.iot.vmp.gb28181.utils.XmlUtil;
@@ -149,11 +150,12 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements @@ -149,11 +150,12 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements
149 logger.info("[收到Notify-MobilePosition]:{}/{}->{}.{}", mobilePosition.getDeviceId(), mobilePosition.getChannelId(), 150 logger.info("[收到Notify-MobilePosition]:{}/{}->{}.{}", mobilePosition.getDeviceId(), mobilePosition.getChannelId(),
150 mobilePosition.getLongitude(), mobilePosition.getLatitude()); 151 mobilePosition.getLongitude(), mobilePosition.getLatitude());
151 mobilePosition.setReportSource("Mobile Position"); 152 mobilePosition.setReportSource("Mobile Position");
152 - BaiduPoint bp = GpsUtil.Wgs84ToBd09(String.valueOf(mobilePosition.getLongitude()), String.valueOf(mobilePosition.getLatitude()));  
153 - logger.info("百度坐标:" + bp.getBdLng() + ", " + bp.getBdLat());  
154 - mobilePosition.setGeodeticSystem("BD-09");  
155 - mobilePosition.setCnLng(bp.getBdLng());  
156 - mobilePosition.setCnLat(bp.getBdLat()); 153 + // 默认来源坐标系为WGS-84处理
  154 + Double[] gcj02Point = Coordtransform.WGS84ToGCJ02(mobilePosition.getLongitude(), mobilePosition.getLatitude());
  155 + logger.info("GCJ02坐标:" + gcj02Point[0] + ", " + gcj02Point[1]);
  156 + mobilePosition.setGeodeticSystem("GCJ-02");
  157 + mobilePosition.setCnLng(gcj02Point[0] + "");
  158 + mobilePosition.setCnLat(gcj02Point[1] + "");
157 if (!userSetting.getSavePositionHistory()) { 159 if (!userSetting.getSavePositionHistory()) {
158 storager.clearMobilePositionsByDeviceId(deviceId); 160 storager.clearMobilePositionsByDeviceId(deviceId);
159 } 161 }
@@ -223,12 +225,12 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements @@ -223,12 +225,12 @@ public class NotifyRequestProcessor extends SIPRequestProcessorParent implements
223 mobilePosition.setLongitude(deviceAlarm.getLongitude()); 225 mobilePosition.setLongitude(deviceAlarm.getLongitude());
224 mobilePosition.setLatitude(deviceAlarm.getLatitude()); 226 mobilePosition.setLatitude(deviceAlarm.getLatitude());
225 mobilePosition.setReportSource("GPS Alarm"); 227 mobilePosition.setReportSource("GPS Alarm");
226 - BaiduPoint bp = new BaiduPoint();  
227 - bp = GpsUtil.Wgs84ToBd09(String.valueOf(mobilePosition.getLongitude()), String.valueOf(mobilePosition.getLatitude()));  
228 - logger.info("百度坐标:" + bp.getBdLng() + ", " + bp.getBdLat());  
229 - mobilePosition.setGeodeticSystem("BD-09");  
230 - mobilePosition.setCnLng(bp.getBdLng());  
231 - mobilePosition.setCnLat(bp.getBdLat()); 228 + // 默认来源坐标系为WGS-84处理
  229 + Double[] gcj02Point = Coordtransform.WGS84ToGCJ02(mobilePosition.getLongitude(), mobilePosition.getLatitude());
  230 + logger.info("GCJ02坐标:" + gcj02Point[0] + ", " + gcj02Point[1]);
  231 + mobilePosition.setGeodeticSystem("GCJ-02");
  232 + mobilePosition.setCnLng(gcj02Point[0] + "");
  233 + mobilePosition.setCnLat(gcj02Point[1] + "");
232 if (!userSetting.getSavePositionHistory()) { 234 if (!userSetting.getSavePositionHistory()) {
233 storager.clearMobilePositionsByDeviceId(deviceId); 235 storager.clearMobilePositionsByDeviceId(deviceId);
234 } 236 }
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/AlarmNotifyMessageHandler.java
@@ -8,6 +8,7 @@ import com.genersoft.iot.vmp.gb28181.event.EventPublisher; @@ -8,6 +8,7 @@ import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
8 import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent; 8 import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
9 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler; 9 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler;
10 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.notify.NotifyMessageHandler; 10 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.notify.NotifyMessageHandler;
  11 +import com.genersoft.iot.vmp.gb28181.utils.Coordtransform;
11 import com.genersoft.iot.vmp.gb28181.utils.NumericUtil; 12 import com.genersoft.iot.vmp.gb28181.utils.NumericUtil;
12 import com.genersoft.iot.vmp.service.IDeviceAlarmService; 13 import com.genersoft.iot.vmp.service.IDeviceAlarmService;
13 import com.genersoft.iot.vmp.storager.IVideoManagerStorage; 14 import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
@@ -93,12 +94,12 @@ public class AlarmNotifyMessageHandler extends SIPRequestProcessorParent impleme @@ -93,12 +94,12 @@ public class AlarmNotifyMessageHandler extends SIPRequestProcessorParent impleme
93 mobilePosition.setLongitude(deviceAlarm.getLongitude()); 94 mobilePosition.setLongitude(deviceAlarm.getLongitude());
94 mobilePosition.setLatitude(deviceAlarm.getLatitude()); 95 mobilePosition.setLatitude(deviceAlarm.getLatitude());
95 mobilePosition.setReportSource("GPS Alarm"); 96 mobilePosition.setReportSource("GPS Alarm");
96 - BaiduPoint bp = new BaiduPoint();  
97 - bp = GpsUtil.Wgs84ToBd09(String.valueOf(mobilePosition.getLongitude()), String.valueOf(mobilePosition.getLatitude()));  
98 - logger.info("百度坐标:" + bp.getBdLng() + ", " + bp.getBdLat());  
99 - mobilePosition.setGeodeticSystem("BD-09");  
100 - mobilePosition.setCnLng(bp.getBdLng());  
101 - mobilePosition.setCnLat(bp.getBdLat()); 97 + // 默认来源坐标系为WGS-84处理
  98 + Double[] gcj02Point = Coordtransform.WGS84ToGCJ02(mobilePosition.getLongitude(), mobilePosition.getLatitude());
  99 + logger.info("GCJ02坐标:" + gcj02Point[0] + ", " + gcj02Point[1]);
  100 + mobilePosition.setGeodeticSystem("GCJ-02");
  101 + mobilePosition.setCnLng(gcj02Point[0] + "");
  102 + mobilePosition.setCnLat(gcj02Point[1] + "");
102 if (!userSetting.getSavePositionHistory()) { 103 if (!userSetting.getSavePositionHistory()) {
103 storager.clearMobilePositionsByDeviceId(device.getDeviceId()); 104 storager.clearMobilePositionsByDeviceId(device.getDeviceId());
104 } 105 }
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/notify/cmd/MobilePositionNotifyMessageHandler.java
@@ -8,6 +8,7 @@ import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; @@ -8,6 +8,7 @@ import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
8 import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent; 8 import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
9 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler; 9 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler;
10 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.notify.NotifyMessageHandler; 10 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.notify.NotifyMessageHandler;
  11 +import com.genersoft.iot.vmp.gb28181.utils.Coordtransform;
11 import com.genersoft.iot.vmp.gb28181.utils.NumericUtil; 12 import com.genersoft.iot.vmp.gb28181.utils.NumericUtil;
12 import com.genersoft.iot.vmp.storager.IVideoManagerStorage; 13 import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
13 import com.genersoft.iot.vmp.utils.GpsUtil; 14 import com.genersoft.iot.vmp.utils.GpsUtil;
@@ -79,12 +80,12 @@ public class MobilePositionNotifyMessageHandler extends SIPRequestProcessorParen @@ -79,12 +80,12 @@ public class MobilePositionNotifyMessageHandler extends SIPRequestProcessorParen
79 mobilePosition.setAltitude(0.0); 80 mobilePosition.setAltitude(0.0);
80 } 81 }
81 mobilePosition.setReportSource("Mobile Position"); 82 mobilePosition.setReportSource("Mobile Position");
82 - BaiduPoint bp = new BaiduPoint();  
83 - bp = GpsUtil.Wgs84ToBd09(String.valueOf(mobilePosition.getLongitude()), String.valueOf(mobilePosition.getLatitude()));  
84 - logger.info("百度坐标:" + bp.getBdLng() + ", " + bp.getBdLat());  
85 - mobilePosition.setGeodeticSystem("BD-09");  
86 - mobilePosition.setCnLng(bp.getBdLng());  
87 - mobilePosition.setCnLat(bp.getBdLat()); 83 + // 默认来源坐标系为WGS-84处理
  84 + Double[] gcj02Point = Coordtransform.WGS84ToGCJ02(mobilePosition.getLongitude(), mobilePosition.getLatitude());
  85 + logger.info("GCJ02坐标:" + gcj02Point[0] + ", " + gcj02Point[1]);
  86 + mobilePosition.setGeodeticSystem("GCJ-02");
  87 + mobilePosition.setCnLng(gcj02Point[0] + "");
  88 + mobilePosition.setCnLat(gcj02Point[1] + "");
88 if (!userSetting.getSavePositionHistory()) { 89 if (!userSetting.getSavePositionHistory()) {
89 storager.clearMobilePositionsByDeviceId(device.getDeviceId()); 90 storager.clearMobilePositionsByDeviceId(device.getDeviceId());
90 } 91 }
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/CatalogResponseMessageHandler.java
@@ -12,6 +12,7 @@ import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage; @@ -12,6 +12,7 @@ import com.genersoft.iot.vmp.gb28181.transmit.callback.RequestMessage;
12 import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent; 12 import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
13 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler; 13 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler;
14 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler; 14 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler;
  15 +import com.genersoft.iot.vmp.gb28181.utils.Coordtransform;
15 import com.genersoft.iot.vmp.gb28181.utils.NumericUtil; 16 import com.genersoft.iot.vmp.gb28181.utils.NumericUtil;
16 import com.genersoft.iot.vmp.gb28181.utils.XmlUtil; 17 import com.genersoft.iot.vmp.gb28181.utils.XmlUtil;
17 import com.genersoft.iot.vmp.storager.IRedisCatchStorage; 18 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
@@ -215,12 +216,12 @@ public class CatalogResponseMessageHandler extends SIPRequestProcessorParent imp @@ -215,12 +216,12 @@ public class CatalogResponseMessageHandler extends SIPRequestProcessorParent imp
215 mobilePosition.setAltitude(0.0); 216 mobilePosition.setAltitude(0.0);
216 } 217 }
217 mobilePosition.setReportSource("Mobile Position"); 218 mobilePosition.setReportSource("Mobile Position");
218 - BaiduPoint bp = new BaiduPoint();  
219 - bp = GpsUtil.Wgs84ToBd09(String.valueOf(mobilePosition.getLongitude()), String.valueOf(mobilePosition.getLatitude()));  
220 - logger.info("百度坐标:" + bp.getBdLng() + ", " + bp.getBdLat());  
221 - mobilePosition.setGeodeticSystem("BD-09");  
222 - mobilePosition.setCnLng(bp.getBdLng());  
223 - mobilePosition.setCnLat(bp.getBdLat()); 219 + // 默认来源坐标系为WGS-84处理
  220 + Double[] gcj02Point = Coordtransform.WGS84ToGCJ02(mobilePosition.getLongitude(), mobilePosition.getLatitude());
  221 + logger.info("GCJ02坐标:" + gcj02Point[0] + ", " + gcj02Point[1]);
  222 + mobilePosition.setGeodeticSystem("GCJ-02");
  223 + mobilePosition.setCnLng(gcj02Point[0] + "");
  224 + mobilePosition.setCnLat(gcj02Point[1] + "");
224 if (!userSetting.getSavePositionHistory()) { 225 if (!userSetting.getSavePositionHistory()) {
225 storager.clearMobilePositionsByDeviceId(deviceId); 226 storager.clearMobilePositionsByDeviceId(deviceId);
226 } 227 }
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/MobilePositionResponseMessageHandler.java
@@ -8,6 +8,7 @@ import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; @@ -8,6 +8,7 @@ import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
8 import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent; 8 import com.genersoft.iot.vmp.gb28181.transmit.event.request.SIPRequestProcessorParent;
9 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler; 9 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessageHandler;
10 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler; 10 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler;
  11 +import com.genersoft.iot.vmp.gb28181.utils.Coordtransform;
11 import com.genersoft.iot.vmp.gb28181.utils.NumericUtil; 12 import com.genersoft.iot.vmp.gb28181.utils.NumericUtil;
12 import com.genersoft.iot.vmp.storager.IVideoManagerStorage; 13 import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
13 import com.genersoft.iot.vmp.utils.GpsUtil; 14 import com.genersoft.iot.vmp.utils.GpsUtil;
@@ -79,12 +80,12 @@ public class MobilePositionResponseMessageHandler extends SIPRequestProcessorPar @@ -79,12 +80,12 @@ public class MobilePositionResponseMessageHandler extends SIPRequestProcessorPar
79 mobilePosition.setAltitude(0.0); 80 mobilePosition.setAltitude(0.0);
80 } 81 }
81 mobilePosition.setReportSource("Mobile Position"); 82 mobilePosition.setReportSource("Mobile Position");
82 - BaiduPoint bp = new BaiduPoint();  
83 - bp = GpsUtil.Wgs84ToBd09(String.valueOf(mobilePosition.getLongitude()), String.valueOf(mobilePosition.getLatitude()));  
84 - logger.info("百度坐标:" + bp.getBdLng() + ", " + bp.getBdLat());  
85 - mobilePosition.setGeodeticSystem("BD-09");  
86 - mobilePosition.setCnLng(bp.getBdLng());  
87 - mobilePosition.setCnLat(bp.getBdLat()); 83 + // 默认来源坐标系为WGS-84处理
  84 + Double[] gcj02Point = Coordtransform.WGS84ToGCJ02(mobilePosition.getLongitude(), mobilePosition.getLatitude());
  85 + logger.info("GCJ02坐标:" + gcj02Point[0] + ", " + gcj02Point[1]);
  86 + mobilePosition.setGeodeticSystem("GCJ-02");
  87 + mobilePosition.setCnLng(gcj02Point[0] + "");
  88 + mobilePosition.setCnLat(gcj02Point[1] + "");
88 if (!userSetting.getSavePositionHistory()) { 89 if (!userSetting.getSavePositionHistory()) {
89 storager.clearMobilePositionsByDeviceId(device.getDeviceId()); 90 storager.clearMobilePositionsByDeviceId(device.getDeviceId());
90 } 91 }
src/main/java/com/genersoft/iot/vmp/gb28181/utils/Coordtransform.java 0 → 100644
  1 +package com.genersoft.iot.vmp.gb28181.utils;
  2 +
  3 +/**
  4 + * 坐标转换
  5 + * 一个提供了百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换的工具类
  6 + * 参考https://github.com/wandergis/coordtransform 写的Java版本
  7 + * @author Xinconan
  8 + * @date 2016-03-18
  9 + * @url https://github.com/xinconan/coordtransform
  10 + */
  11 +public class Coordtransform {
  12 +
  13 + private static double x_PI = 3.14159265358979324 * 3000.0 / 180.0;
  14 + private static double PI = 3.1415926535897932384626;
  15 + private static double a = 6378245.0;
  16 + private static double ee = 0.00669342162296594323;
  17 +
  18 + /**
  19 + * 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换
  20 + * 即 百度 转 谷歌、高德
  21 + * @param bd_lon
  22 + * @param bd_lat
  23 + * @return Double[lon,lat]
  24 + */
  25 + public static Double[] BD09ToGCJ02(Double bd_lon,Double bd_lat){
  26 + double x = bd_lon - 0.0065;
  27 + double y = bd_lat - 0.006;
  28 + double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_PI);
  29 + double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_PI);
  30 + Double[] arr = new Double[2];
  31 + arr[0] = z * Math.cos(theta);
  32 + arr[1] = z * Math.sin(theta);
  33 + return arr;
  34 + }
  35 +
  36 + /**
  37 + * 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换
  38 + * 即谷歌、高德 转 百度
  39 + * @param gcj_lon
  40 + * @param gcj_lat
  41 + * @return Double[lon,lat]
  42 + */
  43 + public static Double[] GCJ02ToBD09(Double gcj_lon,Double gcj_lat){
  44 + double z = Math.sqrt(gcj_lon * gcj_lon + gcj_lat * gcj_lat) + 0.00002 * Math.sin(gcj_lat * x_PI);
  45 + double theta = Math.atan2(gcj_lat, gcj_lon) + 0.000003 * Math.cos(gcj_lon * x_PI);
  46 + Double[] arr = new Double[2];
  47 + arr[0] = z * Math.cos(theta) + 0.0065;
  48 + arr[1] = z * Math.sin(theta) + 0.006;
  49 + return arr;
  50 + }
  51 +
  52 + /**
  53 + * WGS84转GCJ02
  54 + * @param wgs_lon
  55 + * @param wgs_lat
  56 + * @return Double[lon,lat]
  57 + */
  58 + public static Double[] WGS84ToGCJ02(Double wgs_lon,Double wgs_lat){
  59 + if(outOfChina(wgs_lon, wgs_lat)){
  60 + return new Double[]{wgs_lon,wgs_lat};
  61 + }
  62 + double dlat = transformlat(wgs_lon - 105.0, wgs_lat - 35.0);
  63 + double dlng = transformlng(wgs_lon - 105.0, wgs_lat - 35.0);
  64 + double radlat = wgs_lat / 180.0 * PI;
  65 + double magic = Math.sin(radlat);
  66 + magic = 1 - ee * magic * magic;
  67 + double sqrtmagic = Math.sqrt(magic);
  68 + dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);
  69 + dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);
  70 + Double[] arr = new Double[2];
  71 + arr[0] = wgs_lon + dlng;
  72 + arr[1] = wgs_lat + dlat;
  73 + return arr;
  74 + }
  75 +
  76 + /**
  77 + * GCJ02转WGS84
  78 + * @param gcj_lon
  79 + * @param gcj_lat
  80 + * @return Double[lon,lat]
  81 + */
  82 + public static Double[] GCJ02ToWGS84(Double gcj_lon,Double gcj_lat){
  83 + if(outOfChina(gcj_lon, gcj_lat)){
  84 + return new Double[]{gcj_lon,gcj_lat};
  85 + }
  86 + double dlat = transformlat(gcj_lon - 105.0, gcj_lat - 35.0);
  87 + double dlng = transformlng(gcj_lon - 105.0, gcj_lat - 35.0);
  88 + double radlat = gcj_lat / 180.0 * PI;
  89 + double magic = Math.sin(radlat);
  90 + magic = 1 - ee * magic * magic;
  91 + double sqrtmagic = Math.sqrt(magic);
  92 + dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);
  93 + dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);
  94 + double mglat = gcj_lat + dlat;
  95 + double mglng = gcj_lon + dlng;
  96 + return new Double[]{gcj_lon * 2 - mglng, gcj_lat * 2 - mglat};
  97 + }
  98 +
  99 + private static Double transformlat(double lng, double lat) {
  100 + double ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));
  101 + ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;
  102 + ret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat / 3.0 * PI)) * 2.0 / 3.0;
  103 + ret += (160.0 * Math.sin(lat / 12.0 * PI) + 320 * Math.sin(lat * PI / 30.0)) * 2.0 / 3.0;
  104 + return ret;
  105 + }
  106 +
  107 + private static Double transformlng(double lng,double lat) {
  108 + double ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng));
  109 + ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;
  110 + ret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng / 3.0 * PI)) * 2.0 / 3.0;
  111 + ret += (150.0 * Math.sin(lng / 12.0 * PI) + 300.0 * Math.sin(lng / 30.0 * PI)) * 2.0 / 3.0;
  112 + return ret;
  113 + }
  114 +
  115 + /**
  116 + * outOfChina
  117 + * @描述: 判断是否在国内,不在国内则不做偏移
  118 + * @param lng
  119 + * @param lat
  120 + * @return {boolean}
  121 + */
  122 + private static boolean outOfChina(Double lng,Double lat) {
  123 + return (lng < 72.004 || lng > 137.8347) || ((lat < 0.8293 || lat > 55.8271) || false);
  124 + };
  125 +
  126 +}
src/main/java/com/genersoft/iot/vmp/storager/impl/VideoManagerStorageImpl.java
@@ -274,7 +274,7 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage { @@ -274,7 +274,7 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
274 channels = deviceChannelList; 274 channels = deviceChannelList;
275 } 275 }
276 if (stringBuilder.length() > 0) { 276 if (stringBuilder.length() > 0) {
277 - logger.debug("[目录查询]收到的数据存在重复: {}" , stringBuilder); 277 + logger.info("[目录查询]收到的数据存在重复: {}" , stringBuilder);
278 } 278 }
279 try { 279 try {
280 int cleanChannelsResult = deviceChannelMapper.cleanChannelsNotInList(deviceId, channels); 280 int cleanChannelsResult = deviceChannelMapper.cleanChannelsNotInList(deviceId, channels);
web_src/index.html
@@ -12,8 +12,26 @@ @@ -12,8 +12,26 @@
12 <script type="text/javascript" src="./static/js/jessibuca/jessibuca.js"></script> 12 <script type="text/javascript" src="./static/js/jessibuca/jessibuca.js"></script>
13 <script type="text/javascript" src="./static/js/EasyWasmPlayer.js"></script> 13 <script type="text/javascript" src="./static/js/EasyWasmPlayer.js"></script>
14 <script type="text/javascript" src="./static/js/ZLMRTCClient.js"></script> 14 <script type="text/javascript" src="./static/js/ZLMRTCClient.js"></script>
15 - <script type="text/javascript" src="//api.map.baidu.com/api?v=2.0&ak=rk73w8dv1rkE4UdZsataG68VarhYQzrx&s=1"></script>  
16 <div id="app"></div> 15 <div id="app"></div>
17 <!-- built files will be auto injected --> 16 <!-- built files will be auto injected -->
  17 + <script>
  18 + // map组件全局参数
  19 + window.mapParam = {
  20 + // 坐标系 GCJ-02 WGS-84, 默认WGS-84
  21 + coordinateSystem: "GCJ-02",
  22 + // 地图瓦片地址
  23 + tilesUrl: "http://webrd0{1-4}.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scale=1&style=8",
  24 + // 瓦片大小
  25 + tileSize: 512,
  26 + // 默认层级
  27 + zoom:10,
  28 + // 默认地图中心点
  29 + center:[116.41020, 39.915119],
  30 + // 地图最大层级
  31 + maxZoom:19,
  32 + // 地图最小层级
  33 + minZoom: 3
  34 + }
  35 + </script>
18 </body> 36 </body>
19 </html> 37 </html>
web_src/package-lock.json
@@ -14,9 +14,9 @@ @@ -14,9 +14,9 @@
14 "element-ui": "^2.15.6", 14 "element-ui": "^2.15.6",
15 "fingerprintjs2": "^2.1.2", 15 "fingerprintjs2": "^2.1.2",
16 "moment": "^2.29.1", 16 "moment": "^2.29.1",
  17 + "ol": "^6.14.1",
17 "postcss-pxtorem": "^5.1.1", 18 "postcss-pxtorem": "^5.1.1",
18 "vue": "^2.6.11", 19 "vue": "^2.6.11",
19 - "vue-baidu-map": "^0.21.22",  
20 "vue-clipboard2": "^0.3.1", 20 "vue-clipboard2": "^0.3.1",
21 "vue-clipboards": "^1.3.0", 21 "vue-clipboards": "^1.3.0",
22 "vue-contextmenujs": "^1.3.13", 22 "vue-contextmenujs": "^1.3.13",
@@ -57,7 +57,7 @@ @@ -57,7 +57,7 @@
57 "vue-template-compiler": "^2.5.2", 57 "vue-template-compiler": "^2.5.2",
58 "webpack": "^3.6.0", 58 "webpack": "^3.6.0",
59 "webpack-bundle-analyzer": "^2.9.0", 59 "webpack-bundle-analyzer": "^2.9.0",
60 - "webpack-dev-server": "^2.11.5", 60 + "webpack-dev-server": "^2.9.1",
61 "webpack-merge": "^4.1.0" 61 "webpack-merge": "^4.1.0"
62 }, 62 },
63 "engines": { 63 "engines": {
@@ -65,6 +65,50 @@ @@ -65,6 +65,50 @@
65 "npm": ">= 3.0.0" 65 "npm": ">= 3.0.0"
66 } 66 }
67 }, 67 },
  68 + "node_modules/@mapbox/jsonlint-lines-primitives": {
  69 + "version": "2.0.2",
  70 + "resolved": "https://registry.npmmirror.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz",
  71 + "integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==",
  72 + "engines": {
  73 + "node": ">= 0.6"
  74 + }
  75 + },
  76 + "node_modules/@mapbox/mapbox-gl-style-spec": {
  77 + "version": "13.23.1",
  78 + "resolved": "https://registry.npmmirror.com/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.23.1.tgz",
  79 + "integrity": "sha512-C6wh8A/5EdsgzhL6y6yl464VCQNIxK0yjrpnvCvchcFe3sNK2RbBw/J9u3m+p8Y6S6MsGuSMt3AkGAXOKMYweQ==",
  80 + "dependencies": {
  81 + "@mapbox/jsonlint-lines-primitives": "~2.0.2",
  82 + "@mapbox/point-geometry": "^0.1.0",
  83 + "@mapbox/unitbezier": "^0.0.0",
  84 + "csscolorparser": "~1.0.2",
  85 + "json-stringify-pretty-compact": "^2.0.0",
  86 + "minimist": "^1.2.5",
  87 + "rw": "^1.3.3",
  88 + "sort-object": "^0.3.2"
  89 + },
  90 + "bin": {
  91 + "gl-style-composite": "bin/gl-style-composite",
  92 + "gl-style-format": "bin/gl-style-format",
  93 + "gl-style-migrate": "bin/gl-style-migrate",
  94 + "gl-style-validate": "bin/gl-style-validate"
  95 + }
  96 + },
  97 + "node_modules/@mapbox/point-geometry": {
  98 + "version": "0.1.0",
  99 + "resolved": "https://registry.npmmirror.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz",
  100 + "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ=="
  101 + },
  102 + "node_modules/@mapbox/unitbezier": {
  103 + "version": "0.0.0",
  104 + "resolved": "https://registry.npmmirror.com/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz",
  105 + "integrity": "sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA=="
  106 + },
  107 + "node_modules/@petamoriken/float16": {
  108 + "version": "3.6.3",
  109 + "resolved": "https://registry.npmmirror.com/@petamoriken/float16/-/float16-3.6.3.tgz",
  110 + "integrity": "sha512-Yx6Z93kmz3JVPYoPPRFJXnt2/G4kfaxRROcZVVHsE4zOClJXvkOVidv/JfvP6hWn16lykbKYKVzUsId6mqXdGg=="
  111 + },
68 "node_modules/@types/q": { 112 "node_modules/@types/q": {
69 "version": "1.5.4", 113 "version": "1.5.4",
70 "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", 114 "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
@@ -214,6 +258,7 @@ @@ -214,6 +258,7 @@
214 "version": "1.0.10", 258 "version": "1.0.10",
215 "resolved": "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz", 259 "resolved": "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz",
216 "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", 260 "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=",
  261 + "dev": true,
217 "dependencies": { 262 "dependencies": {
218 "sprintf-js": "~1.0.2" 263 "sprintf-js": "~1.0.2"
219 } 264 }
@@ -1434,34 +1479,6 @@ @@ -1434,34 +1479,6 @@
1434 "integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28=", 1479 "integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28=",
1435 "dev": true 1480 "dev": true
1436 }, 1481 },
1437 - "node_modules/bmaplib.curveline": {  
1438 - "version": "1.0.0",  
1439 - "resolved": "https://registry.npmjs.org/bmaplib.curveline/-/bmaplib.curveline-1.0.0.tgz",  
1440 - "integrity": "sha512-9wcFMVhiYxNPqpvsLDAADn3qDhNzXp2mA6VyHSHg2XOAgSooC7ZiujdFhy0sp+0QYjTfJ/MjmLuNoUg2HHxH4Q=="  
1441 - },  
1442 - "node_modules/bmaplib.heatmap": {  
1443 - "version": "1.0.4",  
1444 - "resolved": "https://registry.npmjs.org/bmaplib.heatmap/-/bmaplib.heatmap-1.0.4.tgz",  
1445 - "integrity": "sha512-rmhqUARBpUSJ9jXzUI2j7dIOqnc38bqubkx/8a349U2qtw/ulLUwyzRD535OrA8G7w5cz4aPKm6/rNvUAarg/Q=="  
1446 - },  
1447 - "node_modules/bmaplib.lushu": {  
1448 - "version": "1.0.7",  
1449 - "resolved": "https://registry.npmjs.org/bmaplib.lushu/-/bmaplib.lushu-1.0.7.tgz",  
1450 - "integrity": "sha512-LVvgpESPii6xGxyjnQjq8u+ic4NjvhdCPV/RiSS/PGTUdZKeTDS7prSpleJLZH3ES0+oc0gYn8bw0LtPYUSz2w=="  
1451 - },  
1452 - "node_modules/bmaplib.markerclusterer": {  
1453 - "version": "1.0.13",  
1454 - "resolved": "https://registry.npmjs.org/bmaplib.markerclusterer/-/bmaplib.markerclusterer-1.0.13.tgz",  
1455 - "integrity": "sha512-VrLyWSiuDEVNi0yUfwOhFQ6z1oEEHS4w36GNu3iASu6p52QIx9uAXMUkuSCHReNR0bj2Cp9SA1dSx5RpojXajQ==",  
1456 - "dependencies": {  
1457 - "bmaplib.texticonoverlay": "^1.0.2"  
1458 - }  
1459 - },  
1460 - "node_modules/bmaplib.texticonoverlay": {  
1461 - "version": "1.0.2",  
1462 - "resolved": "https://registry.npmjs.org/bmaplib.texticonoverlay/-/bmaplib.texticonoverlay-1.0.2.tgz",  
1463 - "integrity": "sha512-4ZTWr4ZP3B6qEWput5Tut16CfZgII38YwM3bpyb4gFTQyORlKYryFp9WHWrwZZaHlOyYDAXG9SX0hka43jTADg=="  
1464 - },  
1465 "node_modules/bn.js": { 1482 "node_modules/bn.js": {
1466 "version": "5.1.3", 1483 "version": "5.1.3",
1467 "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-5.1.3.tgz", 1484 "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-5.1.3.tgz",
@@ -2679,6 +2696,11 @@ @@ -2679,6 +2696,11 @@
2679 "node": ">=8.0.0" 2696 "node": ">=8.0.0"
2680 } 2697 }
2681 }, 2698 },
  2699 + "node_modules/csscolorparser": {
  2700 + "version": "1.0.3",
  2701 + "resolved": "https://registry.npmmirror.com/csscolorparser/-/csscolorparser-1.0.3.tgz",
  2702 + "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w=="
  2703 + },
2682 "node_modules/cssesc": { 2704 "node_modules/cssesc": {
2683 "version": "3.0.0", 2705 "version": "3.0.0",
2684 "resolved": "https://registry.npm.taobao.org/cssesc/download/cssesc-3.0.0.tgz", 2706 "resolved": "https://registry.npm.taobao.org/cssesc/download/cssesc-3.0.0.tgz",
@@ -4880,6 +4902,28 @@ @@ -4880,6 +4902,28 @@
4880 "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=", 4902 "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=",
4881 "dev": true 4903 "dev": true
4882 }, 4904 },
  4905 + "node_modules/geotiff": {
  4906 + "version": "2.0.5",
  4907 + "resolved": "https://registry.npmmirror.com/geotiff/-/geotiff-2.0.5.tgz",
  4908 + "integrity": "sha512-U5kVYm118YAmw2swiLu8rhfrYnDKOFI7VaMjuQwcq6Intuuid9Pyb4jjxYUxxkq8kOu2r7Am0Rmb52PObGp4pQ==",
  4909 + "dependencies": {
  4910 + "@petamoriken/float16": "^3.4.7",
  4911 + "lerc": "^3.0.0",
  4912 + "pako": "^2.0.4",
  4913 + "parse-headers": "^2.0.2",
  4914 + "quick-lru": "^6.1.0",
  4915 + "web-worker": "^1.2.0",
  4916 + "xml-utils": "^1.0.2"
  4917 + },
  4918 + "engines": {
  4919 + "node": ">=10.19"
  4920 + }
  4921 + },
  4922 + "node_modules/geotiff/node_modules/pako": {
  4923 + "version": "2.0.4",
  4924 + "resolved": "https://registry.npmmirror.com/pako/-/pako-2.0.4.tgz",
  4925 + "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg=="
  4926 + },
4883 "node_modules/get-caller-file": { 4927 "node_modules/get-caller-file": {
4884 "version": "1.0.3", 4928 "version": "1.0.3",
4885 "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-1.0.3.tgz", 4929 "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-1.0.3.tgz",
@@ -5428,8 +5472,7 @@ @@ -5428,8 +5472,7 @@
5428 "node_modules/ieee754": { 5472 "node_modules/ieee754": {
5429 "version": "1.1.13", 5473 "version": "1.1.13",
5430 "resolved": "https://registry.npm.taobao.org/ieee754/download/ieee754-1.1.13.tgz", 5474 "resolved": "https://registry.npm.taobao.org/ieee754/download/ieee754-1.1.13.tgz",
5431 - "integrity": "sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q=",  
5432 - "dev": true 5475 + "integrity": "sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q="
5433 }, 5476 },
5434 "node_modules/iferr": { 5477 "node_modules/iferr": {
5435 "version": "0.1.5", 5478 "version": "0.1.5",
@@ -6042,6 +6085,11 @@ @@ -6042,6 +6085,11 @@
6042 "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", 6085 "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
6043 "dev": true 6086 "dev": true
6044 }, 6087 },
  6088 + "node_modules/json-stringify-pretty-compact": {
  6089 + "version": "2.0.0",
  6090 + "resolved": "https://registry.npmmirror.com/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz",
  6091 + "integrity": "sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ=="
  6092 + },
6045 "node_modules/json3": { 6093 "node_modules/json3": {
6046 "version": "3.3.3", 6094 "version": "3.3.3",
6047 "resolved": "https://registry.npm.taobao.org/json3/download/json3-3.3.3.tgz", 6095 "resolved": "https://registry.npm.taobao.org/json3/download/json3-3.3.3.tgz",
@@ -6106,13 +6154,10 @@ @@ -6106,13 +6154,10 @@
6106 "node": ">=0.10.0" 6154 "node": ">=0.10.0"
6107 } 6155 }
6108 }, 6156 },
6109 - "node_modules/linkify-it": {  
6110 - "version": "2.2.0",  
6111 - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz",  
6112 - "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==",  
6113 - "dependencies": {  
6114 - "uc.micro": "^1.0.1"  
6115 - } 6157 + "node_modules/lerc": {
  6158 + "version": "3.0.0",
  6159 + "resolved": "https://registry.npmmirror.com/lerc/-/lerc-3.0.0.tgz",
  6160 + "integrity": "sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww=="
6116 }, 6161 },
6117 "node_modules/load-json-file": { 6162 "node_modules/load-json-file": {
6118 "version": "2.0.0", 6163 "version": "2.0.0",
@@ -6335,25 +6380,10 @@ @@ -6335,25 +6380,10 @@
6335 "node": ">=0.10.0" 6380 "node": ">=0.10.0"
6336 } 6381 }
6337 }, 6382 },
6338 - "node_modules/markdown-it": {  
6339 - "version": "8.4.2",  
6340 - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz",  
6341 - "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==",  
6342 - "dependencies": {  
6343 - "argparse": "^1.0.7",  
6344 - "entities": "~1.1.1",  
6345 - "linkify-it": "^2.0.0",  
6346 - "mdurl": "^1.0.1",  
6347 - "uc.micro": "^1.0.5"  
6348 - },  
6349 - "bin": {  
6350 - "markdown-it": "bin/markdown-it.js"  
6351 - }  
6352 - },  
6353 - "node_modules/markdown-it/node_modules/entities": {  
6354 - "version": "1.1.2",  
6355 - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",  
6356 - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" 6383 + "node_modules/mapbox-to-css-font": {
  6384 + "version": "2.4.1",
  6385 + "resolved": "https://registry.npmmirror.com/mapbox-to-css-font/-/mapbox-to-css-font-2.4.1.tgz",
  6386 + "integrity": "sha512-QQ/iKiM43DM9+aujTL45Iz5o7gDeSFmy4LPl3HZmNcwCE++NxGazf+yFpY+wCb+YS23sDa1ghpo3zrNFOcHlow=="
6357 }, 6387 },
6358 "node_modules/math-expression-evaluator": { 6388 "node_modules/math-expression-evaluator": {
6359 "version": "1.3.8", 6389 "version": "1.3.8",
@@ -6378,11 +6408,6 @@ @@ -6378,11 +6408,6 @@
6378 "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", 6408 "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
6379 "dev": true 6409 "dev": true
6380 }, 6410 },
6381 - "node_modules/mdurl": {  
6382 - "version": "1.0.1",  
6383 - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",  
6384 - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="  
6385 - },  
6386 "node_modules/media-typer": { 6411 "node_modules/media-typer": {
6387 "version": "0.3.0", 6412 "version": "0.3.0",
6388 "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz", 6413 "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz",
@@ -6783,8 +6808,7 @@ @@ -6783,8 +6808,7 @@
6783 "node_modules/minimist": { 6808 "node_modules/minimist": {
6784 "version": "1.2.5", 6809 "version": "1.2.5",
6785 "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz", 6810 "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz",
6786 - "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=",  
6787 - "dev": true 6811 + "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI="
6788 }, 6812 },
6789 "node_modules/mississippi": { 6813 "node_modules/mississippi": {
6790 "version": "2.0.0", 6814 "version": "2.0.0",
@@ -7246,6 +7270,27 @@ @@ -7246,6 +7270,27 @@
7246 "integrity": "sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=", 7270 "integrity": "sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=",
7247 "dev": true 7271 "dev": true
7248 }, 7272 },
  7273 + "node_modules/ol": {
  7274 + "version": "6.14.1",
  7275 + "resolved": "https://registry.npmmirror.com/ol/-/ol-6.14.1.tgz",
  7276 + "integrity": "sha512-sIcUWkGud3Y2gT3TJubSHlkyMXiPVh1yxfCPHxmY8+qtm79bB9oRnei9xHVIbRRG0Ro6Ldp5E+BMVSvYCxSpaA==",
  7277 + "dependencies": {
  7278 + "geotiff": "^2.0.2",
  7279 + "ol-mapbox-style": "^7.1.1",
  7280 + "pbf": "3.2.1",
  7281 + "rbush": "^3.0.1"
  7282 + }
  7283 + },
  7284 + "node_modules/ol-mapbox-style": {
  7285 + "version": "7.1.1",
  7286 + "resolved": "https://registry.npmmirror.com/ol-mapbox-style/-/ol-mapbox-style-7.1.1.tgz",
  7287 + "integrity": "sha512-GLTEYiH/Ec9Zn1eS4S/zXyR2sierVrUc+OLVP8Ra0FRyqRhoYbXdko0b7OIeSHWdtJfHssWYefDOGxfTRUUZ/A==",
  7288 + "dependencies": {
  7289 + "@mapbox/mapbox-gl-style-spec": "^13.20.1",
  7290 + "mapbox-to-css-font": "^2.4.1",
  7291 + "webfont-matcher": "^1.1.0"
  7292 + }
  7293 + },
7249 "node_modules/on-finished": { 7294 "node_modules/on-finished": {
7250 "version": "2.3.0", 7295 "version": "2.3.0",
7251 "resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", 7296 "resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz",
@@ -7512,6 +7557,11 @@ @@ -7512,6 +7557,11 @@
7512 "safe-buffer": "^5.1.1" 7557 "safe-buffer": "^5.1.1"
7513 } 7558 }
7514 }, 7559 },
  7560 + "node_modules/parse-headers": {
  7561 + "version": "2.0.5",
  7562 + "resolved": "https://registry.npmmirror.com/parse-headers/-/parse-headers-2.0.5.tgz",
  7563 + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA=="
  7564 + },
7515 "node_modules/parse-json": { 7565 "node_modules/parse-json": {
7516 "version": "4.0.0", 7566 "version": "4.0.0",
7517 "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz?cache=0&sync_timestamp=1598130878813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-json%2Fdownload%2Fparse-json-4.0.0.tgz", 7567 "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz?cache=0&sync_timestamp=1598130878813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-json%2Fdownload%2Fparse-json-4.0.0.tgz",
@@ -7612,6 +7662,18 @@ @@ -7612,6 +7662,18 @@
7612 "node": ">=4" 7662 "node": ">=4"
7613 } 7663 }
7614 }, 7664 },
  7665 + "node_modules/pbf": {
  7666 + "version": "3.2.1",
  7667 + "resolved": "https://registry.npmmirror.com/pbf/-/pbf-3.2.1.tgz",
  7668 + "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==",
  7669 + "dependencies": {
  7670 + "ieee754": "^1.1.12",
  7671 + "resolve-protobuf-schema": "^2.1.0"
  7672 + },
  7673 + "bin": {
  7674 + "pbf": "bin/pbf"
  7675 + }
  7676 + },
7615 "node_modules/pbkdf2": { 7677 "node_modules/pbkdf2": {
7616 "version": "3.1.1", 7678 "version": "3.1.1",
7617 "resolved": "https://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.1.1.tgz", 7679 "resolved": "https://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.1.1.tgz",
@@ -10613,6 +10675,11 @@ @@ -10613,6 +10675,11 @@
10613 "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", 10675 "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
10614 "dev": true 10676 "dev": true
10615 }, 10677 },
  10678 + "node_modules/protocol-buffers-schema": {
  10679 + "version": "3.6.0",
  10680 + "resolved": "https://registry.npmmirror.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz",
  10681 + "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw=="
  10682 + },
10616 "node_modules/proxy-addr": { 10683 "node_modules/proxy-addr": {
10617 "version": "2.0.6", 10684 "version": "2.0.6",
10618 "resolved": "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.6.tgz", 10685 "resolved": "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.6.tgz",
@@ -10745,6 +10812,19 @@ @@ -10745,6 +10812,19 @@
10745 "integrity": "sha1-M0WUG0FTy50ILY7uTNogFqmu9/Y=", 10812 "integrity": "sha1-M0WUG0FTy50ILY7uTNogFqmu9/Y=",
10746 "dev": true 10813 "dev": true
10747 }, 10814 },
  10815 + "node_modules/quick-lru": {
  10816 + "version": "6.1.1",
  10817 + "resolved": "https://registry.npmmirror.com/quick-lru/-/quick-lru-6.1.1.tgz",
  10818 + "integrity": "sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q==",
  10819 + "engines": {
  10820 + "node": ">=12"
  10821 + }
  10822 + },
  10823 + "node_modules/quickselect": {
  10824 + "version": "2.0.0",
  10825 + "resolved": "https://registry.npmmirror.com/quickselect/-/quickselect-2.0.0.tgz",
  10826 + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw=="
  10827 + },
10748 "node_modules/randombytes": { 10828 "node_modules/randombytes": {
10749 "version": "2.1.0", 10829 "version": "2.1.0",
10750 "resolved": "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz", 10830 "resolved": "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz",
@@ -10788,6 +10868,14 @@ @@ -10788,6 +10868,14 @@
10788 "node": ">= 0.8" 10868 "node": ">= 0.8"
10789 } 10869 }
10790 }, 10870 },
  10871 + "node_modules/rbush": {
  10872 + "version": "3.0.1",
  10873 + "resolved": "https://registry.npmmirror.com/rbush/-/rbush-3.0.1.tgz",
  10874 + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==",
  10875 + "dependencies": {
  10876 + "quickselect": "^2.0.0"
  10877 + }
  10878 + },
10791 "node_modules/read-cache": { 10879 "node_modules/read-cache": {
10792 "version": "1.0.0", 10880 "version": "1.0.0",
10793 "resolved": "https://registry.npm.taobao.org/read-cache/download/read-cache-1.0.0.tgz", 10881 "resolved": "https://registry.npm.taobao.org/read-cache/download/read-cache-1.0.0.tgz",
@@ -11225,6 +11313,14 @@ @@ -11225,6 +11313,14 @@
11225 "node": ">=4" 11313 "node": ">=4"
11226 } 11314 }
11227 }, 11315 },
  11316 + "node_modules/resolve-protobuf-schema": {
  11317 + "version": "2.1.0",
  11318 + "resolved": "https://registry.npmmirror.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz",
  11319 + "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==",
  11320 + "dependencies": {
  11321 + "protocol-buffers-schema": "^3.3.1"
  11322 + }
  11323 + },
11228 "node_modules/resolve-url": { 11324 "node_modules/resolve-url": {
11229 "version": "0.2.1", 11325 "version": "0.2.1",
11230 "resolved": "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz", 11326 "resolved": "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz",
@@ -11309,6 +11405,11 @@ @@ -11309,6 +11405,11 @@
11309 "aproba": "^1.1.1" 11405 "aproba": "^1.1.1"
11310 } 11406 }
11311 }, 11407 },
  11408 + "node_modules/rw": {
  11409 + "version": "1.3.3",
  11410 + "resolved": "https://registry.npmmirror.com/rw/-/rw-1.3.3.tgz",
  11411 + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
  11412 + },
11312 "node_modules/safe-buffer": { 11413 "node_modules/safe-buffer": {
11313 "version": "5.1.2", 11414 "version": "5.1.2",
11314 "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz", 11415 "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
@@ -11779,6 +11880,22 @@ @@ -11779,6 +11880,22 @@
11779 "node": ">=0.8.0" 11880 "node": ">=0.8.0"
11780 } 11881 }
11781 }, 11882 },
  11883 + "node_modules/sort-asc": {
  11884 + "version": "0.1.0",
  11885 + "resolved": "https://registry.npmmirror.com/sort-asc/-/sort-asc-0.1.0.tgz",
  11886 + "integrity": "sha512-jBgdDd+rQ+HkZF2/OHCmace5dvpos/aWQpcxuyRs9QUbPRnkEJmYVo81PIGpjIdpOcsnJ4rGjStfDHsbn+UVyw==",
  11887 + "engines": {
  11888 + "node": ">=0.10.0"
  11889 + }
  11890 + },
  11891 + "node_modules/sort-desc": {
  11892 + "version": "0.1.1",
  11893 + "resolved": "https://registry.npmmirror.com/sort-desc/-/sort-desc-0.1.1.tgz",
  11894 + "integrity": "sha512-jfZacW5SKOP97BF5rX5kQfJmRVZP5/adDUTY8fCSPvNcXDVpUEe2pr/iKGlcyZzchRJZrswnp68fgk3qBXgkJw==",
  11895 + "engines": {
  11896 + "node": ">=0.10.0"
  11897 + }
  11898 + },
11782 "node_modules/sort-keys": { 11899 "node_modules/sort-keys": {
11783 "version": "1.1.2", 11900 "version": "1.1.2",
11784 "resolved": "https://registry.npm.taobao.org/sort-keys/download/sort-keys-1.1.2.tgz", 11901 "resolved": "https://registry.npm.taobao.org/sort-keys/download/sort-keys-1.1.2.tgz",
@@ -11791,6 +11908,18 @@ @@ -11791,6 +11908,18 @@
11791 "node": ">=0.10.0" 11908 "node": ">=0.10.0"
11792 } 11909 }
11793 }, 11910 },
  11911 + "node_modules/sort-object": {
  11912 + "version": "0.3.2",
  11913 + "resolved": "https://registry.npmmirror.com/sort-object/-/sort-object-0.3.2.tgz",
  11914 + "integrity": "sha512-aAQiEdqFTTdsvUFxXm3umdo04J7MRljoVGbBlkH7BgNsMvVNAJyGj7C/wV1A8wHWAJj/YikeZbfuCKqhggNWGA==",
  11915 + "dependencies": {
  11916 + "sort-asc": "^0.1.0",
  11917 + "sort-desc": "^0.1.1"
  11918 + },
  11919 + "engines": {
  11920 + "node": ">=0.10.0"
  11921 + }
  11922 + },
11794 "node_modules/source-list-map": { 11923 "node_modules/source-list-map": {
11795 "version": "2.0.1", 11924 "version": "2.0.1",
11796 "resolved": "https://registry.npm.taobao.org/source-list-map/download/source-list-map-2.0.1.tgz", 11925 "resolved": "https://registry.npm.taobao.org/source-list-map/download/source-list-map-2.0.1.tgz",
@@ -11983,7 +12112,8 @@ @@ -11983,7 +12112,8 @@
11983 "node_modules/sprintf-js": { 12112 "node_modules/sprintf-js": {
11984 "version": "1.0.3", 12113 "version": "1.0.3",
11985 "resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz", 12114 "resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz",
11986 - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" 12115 + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
  12116 + "dev": true
11987 }, 12117 },
11988 "node_modules/ssri": { 12118 "node_modules/ssri": {
11989 "version": "5.3.0", 12119 "version": "5.3.0",
@@ -12479,11 +12609,6 @@ @@ -12479,11 +12609,6 @@
12479 "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 12609 "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
12480 "dev": true 12610 "dev": true
12481 }, 12611 },
12482 - "node_modules/uc.micro": {  
12483 - "version": "1.0.6",  
12484 - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",  
12485 - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="  
12486 - },  
12487 "node_modules/uglify-js": { 12612 "node_modules/uglify-js": {
12488 "version": "3.4.10", 12613 "version": "3.4.10",
12489 "resolved": "https://registry.npm.taobao.org/uglify-js/download/uglify-js-3.4.10.tgz?cache=0&sync_timestamp=1601823880483&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuglify-js%2Fdownload%2Fuglify-js-3.4.10.tgz", 12614 "resolved": "https://registry.npm.taobao.org/uglify-js/download/uglify-js-3.4.10.tgz?cache=0&sync_timestamp=1601823880483&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuglify-js%2Fdownload%2Fuglify-js-3.4.10.tgz",
@@ -12898,21 +13023,6 @@ @@ -12898,21 +13023,6 @@
12898 "resolved": "https://registry.npm.taobao.org/vue/download/vue-2.6.12.tgz?cache=0&sync_timestamp=1600441238751&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue%2Fdownload%2Fvue-2.6.12.tgz", 13023 "resolved": "https://registry.npm.taobao.org/vue/download/vue-2.6.12.tgz?cache=0&sync_timestamp=1600441238751&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue%2Fdownload%2Fvue-2.6.12.tgz",
12899 "integrity": "sha1-9evU+mvShpQD4pqJau1JBEVskSM=" 13024 "integrity": "sha1-9evU+mvShpQD4pqJau1JBEVskSM="
12900 }, 13025 },
12901 - "node_modules/vue-baidu-map": {  
12902 - "version": "0.21.22",  
12903 - "resolved": "https://registry.npmjs.org/vue-baidu-map/-/vue-baidu-map-0.21.22.tgz",  
12904 - "integrity": "sha512-WQMPCih4UTh0AZCKKH/OVOYnyAWjfRNeK6BIeoLmscyY5aF8zzlJhz/NOHLb3mdztIpB0Z6aohn4Jd9mfCSjQw==",  
12905 - "dependencies": {  
12906 - "bmaplib.curveline": "^1.0.0",  
12907 - "bmaplib.heatmap": "^1.0.4",  
12908 - "bmaplib.lushu": "^1.0.7",  
12909 - "bmaplib.markerclusterer": "^1.0.13",  
12910 - "markdown-it": "^8.4.0"  
12911 - },  
12912 - "peerDependencies": {  
12913 - "vue": "^2.1.8"  
12914 - }  
12915 - },  
12916 "node_modules/vue-clipboard2": { 13026 "node_modules/vue-clipboard2": {
12917 "version": "0.3.1", 13027 "version": "0.3.1",
12918 "resolved": "https://registry.npm.taobao.org/vue-clipboard2/download/vue-clipboard2-0.3.1.tgz", 13028 "resolved": "https://registry.npm.taobao.org/vue-clipboard2/download/vue-clipboard2-0.3.1.tgz",
@@ -13299,6 +13409,16 @@ @@ -13299,6 +13409,16 @@
13299 "minimalistic-assert": "^1.0.0" 13409 "minimalistic-assert": "^1.0.0"
13300 } 13410 }
13301 }, 13411 },
  13412 + "node_modules/web-worker": {
  13413 + "version": "1.2.0",
  13414 + "resolved": "https://registry.npmmirror.com/web-worker/-/web-worker-1.2.0.tgz",
  13415 + "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA=="
  13416 + },
  13417 + "node_modules/webfont-matcher": {
  13418 + "version": "1.1.0",
  13419 + "resolved": "https://registry.npmmirror.com/webfont-matcher/-/webfont-matcher-1.1.0.tgz",
  13420 + "integrity": "sha512-ov8lMvF9wi4PD7fK2Axn9PQEpO9cYI0fIoGqErwd+wi8xacFFDmX114D5Q2Lw0Wlgmb+Qw/dKI2KTtimrJf85g=="
  13421 + },
13302 "node_modules/webpack": { 13422 "node_modules/webpack": {
13303 "version": "3.12.0", 13423 "version": "3.12.0",
13304 "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.12.0.tgz", 13424 "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.12.0.tgz",
@@ -14116,6 +14236,11 @@ @@ -14116,6 +14236,11 @@
14116 "safe-buffer": "~5.1.0" 14236 "safe-buffer": "~5.1.0"
14117 } 14237 }
14118 }, 14238 },
  14239 + "node_modules/xml-utils": {
  14240 + "version": "1.0.2",
  14241 + "resolved": "https://registry.npmmirror.com/xml-utils/-/xml-utils-1.0.2.tgz",
  14242 + "integrity": "sha512-rEn0FvKi+YGjv9omf22oAf+0d6Ly/sgJ/CUufU/nOzS7SRLmgwSujrewc03KojXxt+aPaTRpm593TgehtUBMSQ=="
  14243 + },
14119 "node_modules/xtend": { 14244 "node_modules/xtend": {
14120 "version": "4.0.2", 14245 "version": "4.0.2",
14121 "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz?cache=0&sync_timestamp=1596697437792&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fxtend%2Fdownload%2Fxtend-4.0.2.tgz", 14246 "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz?cache=0&sync_timestamp=1596697437792&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fxtend%2Fdownload%2Fxtend-4.0.2.tgz",
@@ -14244,6 +14369,41 @@ @@ -14244,6 +14369,41 @@
14244 } 14369 }
14245 }, 14370 },
14246 "dependencies": { 14371 "dependencies": {
  14372 + "@mapbox/jsonlint-lines-primitives": {
  14373 + "version": "2.0.2",
  14374 + "resolved": "https://registry.npmmirror.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz",
  14375 + "integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ=="
  14376 + },
  14377 + "@mapbox/mapbox-gl-style-spec": {
  14378 + "version": "13.23.1",
  14379 + "resolved": "https://registry.npmmirror.com/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.23.1.tgz",
  14380 + "integrity": "sha512-C6wh8A/5EdsgzhL6y6yl464VCQNIxK0yjrpnvCvchcFe3sNK2RbBw/J9u3m+p8Y6S6MsGuSMt3AkGAXOKMYweQ==",
  14381 + "requires": {
  14382 + "@mapbox/jsonlint-lines-primitives": "~2.0.2",
  14383 + "@mapbox/point-geometry": "^0.1.0",
  14384 + "@mapbox/unitbezier": "^0.0.0",
  14385 + "csscolorparser": "~1.0.2",
  14386 + "json-stringify-pretty-compact": "^2.0.0",
  14387 + "minimist": "^1.2.5",
  14388 + "rw": "^1.3.3",
  14389 + "sort-object": "^0.3.2"
  14390 + }
  14391 + },
  14392 + "@mapbox/point-geometry": {
  14393 + "version": "0.1.0",
  14394 + "resolved": "https://registry.npmmirror.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz",
  14395 + "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ=="
  14396 + },
  14397 + "@mapbox/unitbezier": {
  14398 + "version": "0.0.0",
  14399 + "resolved": "https://registry.npmmirror.com/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz",
  14400 + "integrity": "sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA=="
  14401 + },
  14402 + "@petamoriken/float16": {
  14403 + "version": "3.6.3",
  14404 + "resolved": "https://registry.npmmirror.com/@petamoriken/float16/-/float16-3.6.3.tgz",
  14405 + "integrity": "sha512-Yx6Z93kmz3JVPYoPPRFJXnt2/G4kfaxRROcZVVHsE4zOClJXvkOVidv/JfvP6hWn16lykbKYKVzUsId6mqXdGg=="
  14406 + },
14247 "@types/q": { 14407 "@types/q": {
14248 "version": "1.5.4", 14408 "version": "1.5.4",
14249 "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", 14409 "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
@@ -14360,6 +14520,7 @@ @@ -14360,6 +14520,7 @@
14360 "version": "1.0.10", 14520 "version": "1.0.10",
14361 "resolved": "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz", 14521 "resolved": "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz",
14362 "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", 14522 "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=",
  14523 + "dev": true,
14363 "requires": { 14524 "requires": {
14364 "sprintf-js": "~1.0.2" 14525 "sprintf-js": "~1.0.2"
14365 } 14526 }
@@ -15493,34 +15654,6 @@ @@ -15493,34 +15654,6 @@
15493 "integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28=", 15654 "integrity": "sha1-nyKcFb4nJFT/qXOs4NvueaGww28=",
15494 "dev": true 15655 "dev": true
15495 }, 15656 },
15496 - "bmaplib.curveline": {  
15497 - "version": "1.0.0",  
15498 - "resolved": "https://registry.npmjs.org/bmaplib.curveline/-/bmaplib.curveline-1.0.0.tgz",  
15499 - "integrity": "sha512-9wcFMVhiYxNPqpvsLDAADn3qDhNzXp2mA6VyHSHg2XOAgSooC7ZiujdFhy0sp+0QYjTfJ/MjmLuNoUg2HHxH4Q=="  
15500 - },  
15501 - "bmaplib.heatmap": {  
15502 - "version": "1.0.4",  
15503 - "resolved": "https://registry.npmjs.org/bmaplib.heatmap/-/bmaplib.heatmap-1.0.4.tgz",  
15504 - "integrity": "sha512-rmhqUARBpUSJ9jXzUI2j7dIOqnc38bqubkx/8a349U2qtw/ulLUwyzRD535OrA8G7w5cz4aPKm6/rNvUAarg/Q=="  
15505 - },  
15506 - "bmaplib.lushu": {  
15507 - "version": "1.0.7",  
15508 - "resolved": "https://registry.npmjs.org/bmaplib.lushu/-/bmaplib.lushu-1.0.7.tgz",  
15509 - "integrity": "sha512-LVvgpESPii6xGxyjnQjq8u+ic4NjvhdCPV/RiSS/PGTUdZKeTDS7prSpleJLZH3ES0+oc0gYn8bw0LtPYUSz2w=="  
15510 - },  
15511 - "bmaplib.markerclusterer": {  
15512 - "version": "1.0.13",  
15513 - "resolved": "https://registry.npmjs.org/bmaplib.markerclusterer/-/bmaplib.markerclusterer-1.0.13.tgz",  
15514 - "integrity": "sha512-VrLyWSiuDEVNi0yUfwOhFQ6z1oEEHS4w36GNu3iASu6p52QIx9uAXMUkuSCHReNR0bj2Cp9SA1dSx5RpojXajQ==",  
15515 - "requires": {  
15516 - "bmaplib.texticonoverlay": "^1.0.2"  
15517 - }  
15518 - },  
15519 - "bmaplib.texticonoverlay": {  
15520 - "version": "1.0.2",  
15521 - "resolved": "https://registry.npmjs.org/bmaplib.texticonoverlay/-/bmaplib.texticonoverlay-1.0.2.tgz",  
15522 - "integrity": "sha512-4ZTWr4ZP3B6qEWput5Tut16CfZgII38YwM3bpyb4gFTQyORlKYryFp9WHWrwZZaHlOyYDAXG9SX0hka43jTADg=="  
15523 - },  
15524 "bn.js": { 15657 "bn.js": {
15525 "version": "5.1.3", 15658 "version": "5.1.3",
15526 "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-5.1.3.tgz", 15659 "resolved": "https://registry.npm.taobao.org/bn.js/download/bn.js-5.1.3.tgz",
@@ -16579,6 +16712,11 @@ @@ -16579,6 +16712,11 @@
16579 "source-map": "^0.6.1" 16712 "source-map": "^0.6.1"
16580 } 16713 }
16581 }, 16714 },
  16715 + "csscolorparser": {
  16716 + "version": "1.0.3",
  16717 + "resolved": "https://registry.npmmirror.com/csscolorparser/-/csscolorparser-1.0.3.tgz",
  16718 + "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w=="
  16719 + },
16582 "cssesc": { 16720 "cssesc": {
16583 "version": "3.0.0", 16721 "version": "3.0.0",
16584 "resolved": "https://registry.npm.taobao.org/cssesc/download/cssesc-3.0.0.tgz", 16722 "resolved": "https://registry.npm.taobao.org/cssesc/download/cssesc-3.0.0.tgz",
@@ -18425,6 +18563,27 @@ @@ -18425,6 +18563,27 @@
18425 "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=", 18563 "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=",
18426 "dev": true 18564 "dev": true
18427 }, 18565 },
  18566 + "geotiff": {
  18567 + "version": "2.0.5",
  18568 + "resolved": "https://registry.npmmirror.com/geotiff/-/geotiff-2.0.5.tgz",
  18569 + "integrity": "sha512-U5kVYm118YAmw2swiLu8rhfrYnDKOFI7VaMjuQwcq6Intuuid9Pyb4jjxYUxxkq8kOu2r7Am0Rmb52PObGp4pQ==",
  18570 + "requires": {
  18571 + "@petamoriken/float16": "^3.4.7",
  18572 + "lerc": "^3.0.0",
  18573 + "pako": "^2.0.4",
  18574 + "parse-headers": "^2.0.2",
  18575 + "quick-lru": "^6.1.0",
  18576 + "web-worker": "^1.2.0",
  18577 + "xml-utils": "^1.0.2"
  18578 + },
  18579 + "dependencies": {
  18580 + "pako": {
  18581 + "version": "2.0.4",
  18582 + "resolved": "https://registry.npmmirror.com/pako/-/pako-2.0.4.tgz",
  18583 + "integrity": "sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg=="
  18584 + }
  18585 + }
  18586 + },
18428 "get-caller-file": { 18587 "get-caller-file": {
18429 "version": "1.0.3", 18588 "version": "1.0.3",
18430 "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-1.0.3.tgz", 18589 "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-1.0.3.tgz",
@@ -18892,8 +19051,7 @@ @@ -18892,8 +19051,7 @@
18892 "ieee754": { 19051 "ieee754": {
18893 "version": "1.1.13", 19052 "version": "1.1.13",
18894 "resolved": "https://registry.npm.taobao.org/ieee754/download/ieee754-1.1.13.tgz", 19053 "resolved": "https://registry.npm.taobao.org/ieee754/download/ieee754-1.1.13.tgz",
18895 - "integrity": "sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q=",  
18896 - "dev": true 19054 + "integrity": "sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q="
18897 }, 19055 },
18898 "iferr": { 19056 "iferr": {
18899 "version": "0.1.5", 19057 "version": "0.1.5",
@@ -19367,6 +19525,11 @@ @@ -19367,6 +19525,11 @@
19367 "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", 19525 "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
19368 "dev": true 19526 "dev": true
19369 }, 19527 },
  19528 + "json-stringify-pretty-compact": {
  19529 + "version": "2.0.0",
  19530 + "resolved": "https://registry.npmmirror.com/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz",
  19531 + "integrity": "sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ=="
  19532 + },
19370 "json3": { 19533 "json3": {
19371 "version": "3.3.3", 19534 "version": "3.3.3",
19372 "resolved": "https://registry.npm.taobao.org/json3/download/json3-3.3.3.tgz", 19535 "resolved": "https://registry.npm.taobao.org/json3/download/json3-3.3.3.tgz",
@@ -19419,13 +19582,10 @@ @@ -19419,13 +19582,10 @@
19419 "invert-kv": "^1.0.0" 19582 "invert-kv": "^1.0.0"
19420 } 19583 }
19421 }, 19584 },
19422 - "linkify-it": {  
19423 - "version": "2.2.0",  
19424 - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz",  
19425 - "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==",  
19426 - "requires": {  
19427 - "uc.micro": "^1.0.1"  
19428 - } 19585 + "lerc": {
  19586 + "version": "3.0.0",
  19587 + "resolved": "https://registry.npmmirror.com/lerc/-/lerc-3.0.0.tgz",
  19588 + "integrity": "sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww=="
19429 }, 19589 },
19430 "load-json-file": { 19590 "load-json-file": {
19431 "version": "2.0.0", 19591 "version": "2.0.0",
@@ -19604,24 +19764,10 @@ @@ -19604,24 +19764,10 @@
19604 "object-visit": "^1.0.0" 19764 "object-visit": "^1.0.0"
19605 } 19765 }
19606 }, 19766 },
19607 - "markdown-it": {  
19608 - "version": "8.4.2",  
19609 - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-8.4.2.tgz",  
19610 - "integrity": "sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==",  
19611 - "requires": {  
19612 - "argparse": "^1.0.7",  
19613 - "entities": "~1.1.1",  
19614 - "linkify-it": "^2.0.0",  
19615 - "mdurl": "^1.0.1",  
19616 - "uc.micro": "^1.0.5"  
19617 - },  
19618 - "dependencies": {  
19619 - "entities": {  
19620 - "version": "1.1.2",  
19621 - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",  
19622 - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w=="  
19623 - }  
19624 - } 19767 + "mapbox-to-css-font": {
  19768 + "version": "2.4.1",
  19769 + "resolved": "https://registry.npmmirror.com/mapbox-to-css-font/-/mapbox-to-css-font-2.4.1.tgz",
  19770 + "integrity": "sha512-QQ/iKiM43DM9+aujTL45Iz5o7gDeSFmy4LPl3HZmNcwCE++NxGazf+yFpY+wCb+YS23sDa1ghpo3zrNFOcHlow=="
19625 }, 19771 },
19626 "math-expression-evaluator": { 19772 "math-expression-evaluator": {
19627 "version": "1.3.8", 19773 "version": "1.3.8",
@@ -19646,11 +19792,6 @@ @@ -19646,11 +19792,6 @@
19646 "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", 19792 "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
19647 "dev": true 19793 "dev": true
19648 }, 19794 },
19649 - "mdurl": {  
19650 - "version": "1.0.1",  
19651 - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",  
19652 - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="  
19653 - },  
19654 "media-typer": { 19795 "media-typer": {
19655 "version": "0.3.0", 19796 "version": "0.3.0",
19656 "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz", 19797 "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz",
@@ -19976,8 +20117,7 @@ @@ -19976,8 +20117,7 @@
19976 "minimist": { 20117 "minimist": {
19977 "version": "1.2.5", 20118 "version": "1.2.5",
19978 "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz", 20119 "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.5.tgz",
19979 - "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=",  
19980 - "dev": true 20120 + "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI="
19981 }, 20121 },
19982 "mississippi": { 20122 "mississippi": {
19983 "version": "2.0.0", 20123 "version": "2.0.0",
@@ -20372,6 +20512,27 @@ @@ -20372,6 +20512,27 @@
20372 "integrity": "sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=", 20512 "integrity": "sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=",
20373 "dev": true 20513 "dev": true
20374 }, 20514 },
  20515 + "ol": {
  20516 + "version": "6.14.1",
  20517 + "resolved": "https://registry.npmmirror.com/ol/-/ol-6.14.1.tgz",
  20518 + "integrity": "sha512-sIcUWkGud3Y2gT3TJubSHlkyMXiPVh1yxfCPHxmY8+qtm79bB9oRnei9xHVIbRRG0Ro6Ldp5E+BMVSvYCxSpaA==",
  20519 + "requires": {
  20520 + "geotiff": "^2.0.2",
  20521 + "ol-mapbox-style": "^7.1.1",
  20522 + "pbf": "3.2.1",
  20523 + "rbush": "^3.0.1"
  20524 + }
  20525 + },
  20526 + "ol-mapbox-style": {
  20527 + "version": "7.1.1",
  20528 + "resolved": "https://registry.npmmirror.com/ol-mapbox-style/-/ol-mapbox-style-7.1.1.tgz",
  20529 + "integrity": "sha512-GLTEYiH/Ec9Zn1eS4S/zXyR2sierVrUc+OLVP8Ra0FRyqRhoYbXdko0b7OIeSHWdtJfHssWYefDOGxfTRUUZ/A==",
  20530 + "requires": {
  20531 + "@mapbox/mapbox-gl-style-spec": "^13.20.1",
  20532 + "mapbox-to-css-font": "^2.4.1",
  20533 + "webfont-matcher": "^1.1.0"
  20534 + }
  20535 + },
20375 "on-finished": { 20536 "on-finished": {
20376 "version": "2.3.0", 20537 "version": "2.3.0",
20377 "resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", 20538 "resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz",
@@ -20589,6 +20750,11 @@ @@ -20589,6 +20750,11 @@
20589 "safe-buffer": "^5.1.1" 20750 "safe-buffer": "^5.1.1"
20590 } 20751 }
20591 }, 20752 },
  20753 + "parse-headers": {
  20754 + "version": "2.0.5",
  20755 + "resolved": "https://registry.npmmirror.com/parse-headers/-/parse-headers-2.0.5.tgz",
  20756 + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA=="
  20757 + },
20592 "parse-json": { 20758 "parse-json": {
20593 "version": "4.0.0", 20759 "version": "4.0.0",
20594 "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz?cache=0&sync_timestamp=1598130878813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-json%2Fdownload%2Fparse-json-4.0.0.tgz", 20760 "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz?cache=0&sync_timestamp=1598130878813&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-json%2Fdownload%2Fparse-json-4.0.0.tgz",
@@ -20668,6 +20834,15 @@ @@ -20668,6 +20834,15 @@
20668 "pify": "^3.0.0" 20834 "pify": "^3.0.0"
20669 } 20835 }
20670 }, 20836 },
  20837 + "pbf": {
  20838 + "version": "3.2.1",
  20839 + "resolved": "https://registry.npmmirror.com/pbf/-/pbf-3.2.1.tgz",
  20840 + "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==",
  20841 + "requires": {
  20842 + "ieee754": "^1.1.12",
  20843 + "resolve-protobuf-schema": "^2.1.0"
  20844 + }
  20845 + },
20671 "pbkdf2": { 20846 "pbkdf2": {
20672 "version": "3.1.1", 20847 "version": "3.1.1",
20673 "resolved": "https://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.1.1.tgz", 20848 "resolved": "https://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.1.1.tgz",
@@ -23119,6 +23294,11 @@ @@ -23119,6 +23294,11 @@
23119 "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", 23294 "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
23120 "dev": true 23295 "dev": true
23121 }, 23296 },
  23297 + "protocol-buffers-schema": {
  23298 + "version": "3.6.0",
  23299 + "resolved": "https://registry.npmmirror.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz",
  23300 + "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw=="
  23301 + },
23122 "proxy-addr": { 23302 "proxy-addr": {
23123 "version": "2.0.6", 23303 "version": "2.0.6",
23124 "resolved": "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.6.tgz", 23304 "resolved": "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.6.tgz",
@@ -23230,6 +23410,16 @@ @@ -23230,6 +23410,16 @@
23230 "integrity": "sha1-M0WUG0FTy50ILY7uTNogFqmu9/Y=", 23410 "integrity": "sha1-M0WUG0FTy50ILY7uTNogFqmu9/Y=",
23231 "dev": true 23411 "dev": true
23232 }, 23412 },
  23413 + "quick-lru": {
  23414 + "version": "6.1.1",
  23415 + "resolved": "https://registry.npmmirror.com/quick-lru/-/quick-lru-6.1.1.tgz",
  23416 + "integrity": "sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q=="
  23417 + },
  23418 + "quickselect": {
  23419 + "version": "2.0.0",
  23420 + "resolved": "https://registry.npmmirror.com/quickselect/-/quickselect-2.0.0.tgz",
  23421 + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw=="
  23422 + },
23233 "randombytes": { 23423 "randombytes": {
23234 "version": "2.1.0", 23424 "version": "2.1.0",
23235 "resolved": "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz", 23425 "resolved": "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz",
@@ -23267,6 +23457,14 @@ @@ -23267,6 +23457,14 @@
23267 "unpipe": "1.0.0" 23457 "unpipe": "1.0.0"
23268 } 23458 }
23269 }, 23459 },
  23460 + "rbush": {
  23461 + "version": "3.0.1",
  23462 + "resolved": "https://registry.npmmirror.com/rbush/-/rbush-3.0.1.tgz",
  23463 + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==",
  23464 + "requires": {
  23465 + "quickselect": "^2.0.0"
  23466 + }
  23467 + },
23270 "read-cache": { 23468 "read-cache": {
23271 "version": "1.0.0", 23469 "version": "1.0.0",
23272 "resolved": "https://registry.npm.taobao.org/read-cache/download/read-cache-1.0.0.tgz", 23470 "resolved": "https://registry.npm.taobao.org/read-cache/download/read-cache-1.0.0.tgz",
@@ -23648,6 +23846,14 @@ @@ -23648,6 +23846,14 @@
23648 "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", 23846 "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
23649 "dev": true 23847 "dev": true
23650 }, 23848 },
  23849 + "resolve-protobuf-schema": {
  23850 + "version": "2.1.0",
  23851 + "resolved": "https://registry.npmmirror.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz",
  23852 + "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==",
  23853 + "requires": {
  23854 + "protocol-buffers-schema": "^3.3.1"
  23855 + }
  23856 + },
23651 "resolve-url": { 23857 "resolve-url": {
23652 "version": "0.2.1", 23858 "version": "0.2.1",
23653 "resolved": "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz", 23859 "resolved": "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz",
@@ -23719,6 +23925,11 @@ @@ -23719,6 +23925,11 @@
23719 "aproba": "^1.1.1" 23925 "aproba": "^1.1.1"
23720 } 23926 }
23721 }, 23927 },
  23928 + "rw": {
  23929 + "version": "1.3.3",
  23930 + "resolved": "https://registry.npmmirror.com/rw/-/rw-1.3.3.tgz",
  23931 + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
  23932 + },
23722 "safe-buffer": { 23933 "safe-buffer": {
23723 "version": "5.1.2", 23934 "version": "5.1.2",
23724 "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz", 23935 "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
@@ -24124,6 +24335,16 @@ @@ -24124,6 +24335,16 @@
24124 } 24335 }
24125 } 24336 }
24126 }, 24337 },
  24338 + "sort-asc": {
  24339 + "version": "0.1.0",
  24340 + "resolved": "https://registry.npmmirror.com/sort-asc/-/sort-asc-0.1.0.tgz",
  24341 + "integrity": "sha512-jBgdDd+rQ+HkZF2/OHCmace5dvpos/aWQpcxuyRs9QUbPRnkEJmYVo81PIGpjIdpOcsnJ4rGjStfDHsbn+UVyw=="
  24342 + },
  24343 + "sort-desc": {
  24344 + "version": "0.1.1",
  24345 + "resolved": "https://registry.npmmirror.com/sort-desc/-/sort-desc-0.1.1.tgz",
  24346 + "integrity": "sha512-jfZacW5SKOP97BF5rX5kQfJmRVZP5/adDUTY8fCSPvNcXDVpUEe2pr/iKGlcyZzchRJZrswnp68fgk3qBXgkJw=="
  24347 + },
24127 "sort-keys": { 24348 "sort-keys": {
24128 "version": "1.1.2", 24349 "version": "1.1.2",
24129 "resolved": "https://registry.npm.taobao.org/sort-keys/download/sort-keys-1.1.2.tgz", 24350 "resolved": "https://registry.npm.taobao.org/sort-keys/download/sort-keys-1.1.2.tgz",
@@ -24133,6 +24354,15 @@ @@ -24133,6 +24354,15 @@
24133 "is-plain-obj": "^1.0.0" 24354 "is-plain-obj": "^1.0.0"
24134 } 24355 }
24135 }, 24356 },
  24357 + "sort-object": {
  24358 + "version": "0.3.2",
  24359 + "resolved": "https://registry.npmmirror.com/sort-object/-/sort-object-0.3.2.tgz",
  24360 + "integrity": "sha512-aAQiEdqFTTdsvUFxXm3umdo04J7MRljoVGbBlkH7BgNsMvVNAJyGj7C/wV1A8wHWAJj/YikeZbfuCKqhggNWGA==",
  24361 + "requires": {
  24362 + "sort-asc": "^0.1.0",
  24363 + "sort-desc": "^0.1.1"
  24364 + }
  24365 + },
24136 "source-list-map": { 24366 "source-list-map": {
24137 "version": "2.0.1", 24367 "version": "2.0.1",
24138 "resolved": "https://registry.npm.taobao.org/source-list-map/download/source-list-map-2.0.1.tgz", 24368 "resolved": "https://registry.npm.taobao.org/source-list-map/download/source-list-map-2.0.1.tgz",
@@ -24296,7 +24526,8 @@ @@ -24296,7 +24526,8 @@
24296 "sprintf-js": { 24526 "sprintf-js": {
24297 "version": "1.0.3", 24527 "version": "1.0.3",
24298 "resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz", 24528 "resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz",
24299 - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" 24529 + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
  24530 + "dev": true
24300 }, 24531 },
24301 "ssri": { 24532 "ssri": {
24302 "version": "5.3.0", 24533 "version": "5.3.0",
@@ -24703,11 +24934,6 @@ @@ -24703,11 +24934,6 @@
24703 "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 24934 "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
24704 "dev": true 24935 "dev": true
24705 }, 24936 },
24706 - "uc.micro": {  
24707 - "version": "1.0.6",  
24708 - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",  
24709 - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="  
24710 - },  
24711 "uglify-js": { 24937 "uglify-js": {
24712 "version": "3.4.10", 24938 "version": "3.4.10",
24713 "resolved": "https://registry.npm.taobao.org/uglify-js/download/uglify-js-3.4.10.tgz?cache=0&sync_timestamp=1601823880483&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuglify-js%2Fdownload%2Fuglify-js-3.4.10.tgz", 24939 "resolved": "https://registry.npm.taobao.org/uglify-js/download/uglify-js-3.4.10.tgz?cache=0&sync_timestamp=1601823880483&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuglify-js%2Fdownload%2Fuglify-js-3.4.10.tgz",
@@ -25072,18 +25298,6 @@ @@ -25072,18 +25298,6 @@
25072 "resolved": "https://registry.npm.taobao.org/vue/download/vue-2.6.12.tgz?cache=0&sync_timestamp=1600441238751&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue%2Fdownload%2Fvue-2.6.12.tgz", 25298 "resolved": "https://registry.npm.taobao.org/vue/download/vue-2.6.12.tgz?cache=0&sync_timestamp=1600441238751&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue%2Fdownload%2Fvue-2.6.12.tgz",
25073 "integrity": "sha1-9evU+mvShpQD4pqJau1JBEVskSM=" 25299 "integrity": "sha1-9evU+mvShpQD4pqJau1JBEVskSM="
25074 }, 25300 },
25075 - "vue-baidu-map": {  
25076 - "version": "0.21.22",  
25077 - "resolved": "https://registry.npmjs.org/vue-baidu-map/-/vue-baidu-map-0.21.22.tgz",  
25078 - "integrity": "sha512-WQMPCih4UTh0AZCKKH/OVOYnyAWjfRNeK6BIeoLmscyY5aF8zzlJhz/NOHLb3mdztIpB0Z6aohn4Jd9mfCSjQw==",  
25079 - "requires": {  
25080 - "bmaplib.curveline": "^1.0.0",  
25081 - "bmaplib.heatmap": "^1.0.4",  
25082 - "bmaplib.lushu": "^1.0.7",  
25083 - "bmaplib.markerclusterer": "^1.0.13",  
25084 - "markdown-it": "^8.4.0"  
25085 - }  
25086 - },  
25087 "vue-clipboard2": { 25301 "vue-clipboard2": {
25088 "version": "0.3.1", 25302 "version": "0.3.1",
25089 "resolved": "https://registry.npm.taobao.org/vue-clipboard2/download/vue-clipboard2-0.3.1.tgz", 25303 "resolved": "https://registry.npm.taobao.org/vue-clipboard2/download/vue-clipboard2-0.3.1.tgz",
@@ -25421,6 +25635,16 @@ @@ -25421,6 +25635,16 @@
25421 "minimalistic-assert": "^1.0.0" 25635 "minimalistic-assert": "^1.0.0"
25422 } 25636 }
25423 }, 25637 },
  25638 + "web-worker": {
  25639 + "version": "1.2.0",
  25640 + "resolved": "https://registry.npmmirror.com/web-worker/-/web-worker-1.2.0.tgz",
  25641 + "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA=="
  25642 + },
  25643 + "webfont-matcher": {
  25644 + "version": "1.1.0",
  25645 + "resolved": "https://registry.npmmirror.com/webfont-matcher/-/webfont-matcher-1.1.0.tgz",
  25646 + "integrity": "sha512-ov8lMvF9wi4PD7fK2Axn9PQEpO9cYI0fIoGqErwd+wi8xacFFDmX114D5Q2Lw0Wlgmb+Qw/dKI2KTtimrJf85g=="
  25647 + },
25424 "webpack": { 25648 "webpack": {
25425 "version": "3.12.0", 25649 "version": "3.12.0",
25426 "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.12.0.tgz", 25650 "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.12.0.tgz",
@@ -26091,6 +26315,11 @@ @@ -26091,6 +26315,11 @@
26091 "safe-buffer": "~5.1.0" 26315 "safe-buffer": "~5.1.0"
26092 } 26316 }
26093 }, 26317 },
  26318 + "xml-utils": {
  26319 + "version": "1.0.2",
  26320 + "resolved": "https://registry.npmmirror.com/xml-utils/-/xml-utils-1.0.2.tgz",
  26321 + "integrity": "sha512-rEn0FvKi+YGjv9omf22oAf+0d6Ly/sgJ/CUufU/nOzS7SRLmgwSujrewc03KojXxt+aPaTRpm593TgehtUBMSQ=="
  26322 + },
26094 "xtend": { 26323 "xtend": {
26095 "version": "4.0.2", 26324 "version": "4.0.2",
26096 "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz?cache=0&sync_timestamp=1596697437792&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fxtend%2Fdownload%2Fxtend-4.0.2.tgz", 26325 "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz?cache=0&sync_timestamp=1596697437792&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fxtend%2Fdownload%2Fxtend-4.0.2.tgz",
web_src/package.json
@@ -16,9 +16,9 @@ @@ -16,9 +16,9 @@
16 "element-ui": "^2.15.6", 16 "element-ui": "^2.15.6",
17 "fingerprintjs2": "^2.1.2", 17 "fingerprintjs2": "^2.1.2",
18 "moment": "^2.29.1", 18 "moment": "^2.29.1",
  19 + "ol": "^6.14.1",
19 "postcss-pxtorem": "^5.1.1", 20 "postcss-pxtorem": "^5.1.1",
20 "vue": "^2.6.11", 21 "vue": "^2.6.11",
21 - "vue-baidu-map": "^0.21.22",  
22 "vue-clipboard2": "^0.3.1", 22 "vue-clipboard2": "^0.3.1",
23 "vue-clipboards": "^1.3.0", 23 "vue-clipboards": "^1.3.0",
24 "vue-contextmenujs": "^1.3.13", 24 "vue-contextmenujs": "^1.3.13",
web_src/src/components/UiHeader.vue
@@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
4 <el-menu-item index="/">控制台</el-menu-item> 4 <el-menu-item index="/">控制台</el-menu-item>
5 <el-menu-item index="/live">实时监控</el-menu-item> 5 <el-menu-item index="/live">实时监控</el-menu-item>
6 <el-menu-item index="/deviceList">国标设备</el-menu-item> 6 <el-menu-item index="/deviceList">国标设备</el-menu-item>
  7 + <el-menu-item index="/devicePosition">电子地图</el-menu-item>
7 <el-menu-item index="/pushVideoList">推流列表</el-menu-item> 8 <el-menu-item index="/pushVideoList">推流列表</el-menu-item>
8 <el-menu-item index="/streamProxyList">拉流代理</el-menu-item> 9 <el-menu-item index="/streamProxyList">拉流代理</el-menu-item>
9 <el-menu-item index="/cloudRecord">云端录像</el-menu-item> 10 <el-menu-item index="/cloudRecord">云端录像</el-menu-item>
web_src/src/components/common/MapComponent.vue 0 → 100644
  1 +<template>
  2 + <div id="mapContainer" style="width: 100%;height: 100%;"></div>
  3 +</template>
  4 +
  5 +<script>
  6 +import 'ol/ol.css';
  7 +import Map from 'ol/Map';
  8 +import OSM from 'ol/source/OSM';
  9 +import XYZ from 'ol/source/XYZ';
  10 +import TileLayer from 'ol/layer/Tile';
  11 +import View from 'ol/View';
  12 +import {get as getProj, fromLonLat} from 'ol/proj';
  13 +import {ZoomSlider, Zoom} from 'ol/control';
  14 +
  15 +let olMap = null;
  16 +
  17 +export default {
  18 + name: 'MapComponent',
  19 + data() {
  20 + return {
  21 +
  22 +
  23 + };
  24 + },
  25 + created(){
  26 + this.$nextTick(() => {
  27 + this.init();
  28 + })
  29 +
  30 + },
  31 + props: [],
  32 + mounted () {
  33 +
  34 + },
  35 + methods: {
  36 + init(){
  37 +
  38 + let center = fromLonLat([116.41020, 39.915119]);
  39 + if (mapParam.center) {
  40 + center = fromLonLat(mapParam.center);
  41 + }
  42 + const view = new View({
  43 + center: center,
  44 + zoom: mapParam.zoom || 10,
  45 + projection: this.projection,
  46 + maxZoom: mapParam.maxZoom || 19,
  47 + minZoom: mapParam.minZoom || 1,
  48 + });
  49 + let tileLayer = null;
  50 + if (mapParam.tilesUrl) {
  51 + tileLayer = new TileLayer({
  52 + source: new XYZ({
  53 + projection: getProj("EPSG:3857"),
  54 + wrapX: false,
  55 + tileSize: 256 || mapParam.tileSize,
  56 + url: mapParam.tilesUrl
  57 + })
  58 + })
  59 + }else {
  60 + tileLayer = new TileLayer({
  61 + preload: 4,
  62 + source: new OSM(),
  63 + })
  64 + }
  65 + olMap = new Map({
  66 + target: "mapContainer", // 容器ID
  67 + layers: [tileLayer], // 默认图层
  68 + view: view, // 视图
  69 + controls:[ // 控件
  70 + // new ZoomSlider(),
  71 + new Zoom(),
  72 + ] ,
  73 + })
  74 + },
  75 + setCenter(point){
  76 +
  77 + },
  78 + zoomIn(zoom){
  79 +
  80 + },
  81 + zoomOut(zoom){
  82 +
  83 + },
  84 + centerAndZoom(point,zoom,callback){
  85 +
  86 + },
  87 + panTo(point){
  88 +
  89 + },
  90 + openInfoBox(){
  91 +
  92 + },
  93 + closeInfoBox(){
  94 +
  95 + },
  96 + addLayer(){
  97 +
  98 + },
  99 + removeLayer(){
  100 +
  101 + }
  102 +
  103 +
  104 +
  105 + },
  106 + destroyed() {
  107 + // if (this.jessibuca) {
  108 + // this.jessibuca.destroy();
  109 + // }
  110 + // this.playing = false;
  111 + // this.loaded = false;
  112 + // this.performance = "";
  113 + },
  114 +}
  115 +</script>
  116 +
  117 +<style>
  118 +
  119 +</style>
web_src/src/components/dialog/jessibuca.vue renamed to web_src/src/components/common/jessibuca.vue
web_src/src/components/devicePosition.vue
@@ -4,388 +4,257 @@ @@ -4,388 +4,257 @@
4 <el-header> 4 <el-header>
5 <uiHeader></uiHeader> 5 <uiHeader></uiHeader>
6 </el-header> 6 </el-header>
  7 + <el-container>
  8 + <el-aside width="250px" height="100%" style="background-color: #FFFFFF; margin: 0 0 20px 20px;">
  9 + <div style=" padding-top: 10px">
  10 + <el-tree class="el-scrollbar"
  11 + ref="tree"
  12 + id="deviceTree"
  13 + empty-text="未知节点"
  14 + node-key="id"
  15 + :highlight-current="false"
  16 + :expand-on-click-node="false"
  17 + :props="props"
  18 + :load="loadNode"
  19 + @node-contextmenu="contextmenuEventHandler"
  20 + @node-click="nodeClickHandler"
  21 + lazy>
  22 + </el-tree>
  23 + </div>
  24 +
  25 + </el-aside>
7 <el-main> 26 <el-main>
8 - <div style="background-color: #ffffff; position: relative; padding: 1rem 0.5rem 0.5rem 0.5rem; text-align: center;">  
9 - <span style="font-size: 1rem; font-weight: 500">设备定位 ({{ parentChannelId == 0 ? deviceId : parentChannelId }})</span>  
10 - </div>  
11 - <div style="background-color: #ffffff; margin-bottom: 1rem; position: relative; padding: 0.5rem; text-align: left; font-size: 14px;">  
12 - <el-button icon="el-icon-arrow-left" size="mini" style="margin-right: 1rem" type="primary" @click="showDevice">返回</el-button>  
13 - <!-- <span class="demonstration">从</span> -->  
14 - <el-date-picker v-model="searchFrom" type="datetime" placeholder="选择开始日期时间" default-time="00:00:00" size="mini" style="width: 11rem;" align="right" :picker-options="pickerOptions"></el-date-picker>  
15 - <el-date-picker v-model="searchTo" type="datetime" placeholder="选择结束日期时间" default-time="00:00:00" size="mini" style="width: 11rem;" align="right" :picker-options="pickerOptions"></el-date-picker>  
16 - <el-button-group>  
17 - <el-button icon="el-icon-search" size="mini" type="primary" @click="showHistoryPath">历史轨迹</el-button>  
18 - <el-button icon="el-icon-search" size="mini" style="margin-right: 1rem" type="primary" @click="showLatestPosition">最新位置</el-button>  
19 - </el-button-group>  
20 - <el-tag style="width: 5rem; text-align: center" size="medium">过期时间</el-tag>  
21 - <el-input-number size="mini" v-model="expired" :min="300" :controls="false" style="width: 4rem;"></el-input-number>  
22 - <el-tag style="width: 5rem; text-align: center" size="medium">上报周期</el-tag>  
23 - <el-input-number size="mini" v-model="interval" :min="1" :controls="false" style="width: 4rem;"></el-input-number>  
24 - <el-button-group>  
25 - <el-button icon="el-icon-search" size="mini" type="primary" @click="subscribeMobilePosition">位置订阅</el-button>  
26 - <el-button icon="el-icon-search" size="mini" type="primary" @click="unSubscribeMobilePosition">取消订阅</el-button>  
27 - </el-button-group>  
28 - <el-checkbox size="mini" style="margin-right: 1rem; float: right" v-model="autoList" @change="autoListChange" >自动刷新</el-checkbox>  
29 - </div>  
30 - <div class="mapContainer" style="background-color: #ffffff; position: relative; padding: 1rem 0.5rem 0.5rem 0.5rem; text-align: center; height: calc(100% - 10rem);">  
31 - <div class="baidumap" id="allmap"></div>  
32 - </div> 27 + <MapComponent></MapComponent>
33 </el-main> 28 </el-main>
  29 + </el-container>
34 </el-container> 30 </el-container>
35 </div> 31 </div>
36 </template> 32 </template>
37 33
38 <script> 34 <script>
39 import uiHeader from "./UiHeader.vue"; 35 import uiHeader from "./UiHeader.vue";
40 -import moment from "moment";  
41 -import geoTools from "./GeoConvertTools.js"; 36 +import MapComponent from "./common/MapComponent.vue";
  37 +import DeviceService from "./service/DeviceService";
42 export default { 38 export default {
43 name: "devicePosition", 39 name: "devicePosition",
44 components: { 40 components: {
45 - uiHeader, 41 + MapComponent,
  42 + uiHeader,
46 }, 43 },
47 data() { 44 data() {
48 return { 45 return {
49 - pickerOptions: {  
50 - shortcuts: [{  
51 - text: '今天',  
52 - onClick(picker) {  
53 - picker.$emit('pick', new Date());  
54 - }  
55 - }, {  
56 - text: '昨天',  
57 - onClick(picker) {  
58 - const date = new Date();  
59 - date.setTime(date.getTime() - 3600 * 1000 * 24);  
60 - picker.$emit('pick', date);  
61 - }  
62 - }, {  
63 - text: '一周前',  
64 - onClick(picker) {  
65 - const date = new Date();  
66 - date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);  
67 - picker.$emit('pick', date);  
68 - }  
69 - }]  
70 - },  
71 - deviceId: this.$route.params.deviceId,  
72 - showHistoryPosition: false, //显示历史轨迹  
73 - startTime: null,  
74 - endTime: null,  
75 - searchFrom: null,  
76 - searchTo: null,  
77 - expired: 600,  
78 - interval: 5,  
79 - mobilePositionList: [],  
80 - mapPointList: [],  
81 - parentChannelId: this.$route.params.parentChannelId,  
82 - updateLooper: 0, //数据刷新轮训标志  
83 - total: 0,  
84 - beforeUrl: "/deviceList",  
85 - isLoging: false,  
86 - autoList: false, 46 + deviceService: new DeviceService(),
  47 + props: {
  48 + label: 'name',
  49 + children: 'children',
  50 + isLeaf: 'leaf'
  51 + },
87 }; 52 };
88 }, 53 },
89 - mounted() {  
90 - this.initData();  
91 - this.initBaiduMap();  
92 - if (this.autoList) {  
93 - this.updateLooper = setInterval(this.initData, 5000);  
94 - } 54 + created() {
  55 + this.init();
95 }, 56 },
96 destroyed() { 57 destroyed() {
97 - // this.$destroy("videojs");  
98 - clearTimeout(this.updateLooper); 58 +
99 }, 59 },
100 methods: { 60 methods: {
101 - initData: function () {  
102 - // if (this.parentChannelId == "" || this.parentChannelId == 0) {  
103 - // this.getDeviceChannelList();  
104 - // } else {  
105 - // this.showSubchannels();  
106 - // }  
107 - },  
108 - initParam: function () {  
109 - // this.deviceId = this.$route.params.deviceId;  
110 - // this.parentChannelId = this.$route.params.parentChannelId;  
111 - // this.currentPage = parseInt(this.$route.params.page);  
112 - // this.count = parseInt(this.$route.params.count);  
113 - // if (this.parentChannelId == "" || this.parentChannelId == 0) {  
114 - // this.beforeUrl = "/deviceList";  
115 - // }  
116 - },  
117 - initBaiduMap() {  
118 - this.map = new BMap.Map("allmap"); // 创建地图实例  
119 - let points = [];  
120 - let point = new BMap.Point(116.231398, 39.567445); // 创建点坐标  
121 - this.map.centerAndZoom(point, 5); // 初始化地图,设置中心点坐标和地图级别  
122 - this.map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放  
123 - this.map.addControl(new BMap.NavigationControl());  
124 - this.map.addControl(new BMap.ScaleControl());  
125 - this.map.addControl(new BMap.OverviewMapControl());  
126 - this.map.addControl(new BMap.MapTypeControl());  
127 - //map.setMapStyle({ style: 'midnight' }) //地图风格  
128 - },  
129 - currentChange: function (val) {  
130 - // var url = `/${this.$router.currentRoute.name}/${this.deviceId}/${this.parentChannelId}/${this.count}/${val}`;  
131 - // console.log(url);  
132 - // this.$router.push(url).then(() => {  
133 - // this.initParam();  
134 - // this.initData();  
135 - // });  
136 - },  
137 - handleSizeChange: function (val) {  
138 - // var url = `/${this.$router.currentRoute.name}/${this.$router.params.deviceId}/${this.$router.params.parentChannelId}/${val}/1`;  
139 - // this.$router.push(url).then(() => {  
140 - // this.initParam();  
141 - // this.initData();  
142 - // });  
143 - },  
144 - showDevice: function () {  
145 - this.$router.push(this.beforeUrl).then(() => {  
146 - this.initParam();  
147 - this.initData();  
148 - });  
149 - },  
150 - autoListChange: function () {  
151 - if (this.autoList) {  
152 - this.updateLooper = setInterval(this.initData, 1500);  
153 - } else {  
154 - window.clearInterval(this.updateLooper); 61 + init(){
  62 +
  63 + },
  64 + loadNode: function(node, resolve){
  65 + if (node.level === 0) {
  66 + this.deviceService.getAllDeviceList((data)=>{
  67 + console.log("all deivce")
  68 + console.log(data)
  69 + if (data.length > 0) {
  70 + let nodeList = []
  71 + for (let i = 0; i < data.length; i++) {
  72 + let node = {
  73 + name: data[i].name || data[i].deviceId,
  74 + id: data[i].deviceId,
  75 + online: data[i].online,
  76 + deviceId: data[i].deviceId,
  77 + }
  78 + nodeList.push(node);
  79 + }
  80 + resolve(nodeList)
  81 + }else {
  82 + resolve([])
155 } 83 }
156 - },  
157 - showHistoryPath: function () {  
158 - this.map.clearOverlays();  
159 - this.mapPointList = [];  
160 - this.mobilePositionList = [];  
161 - if (!!this.searchFrom) {  
162 - this.startTime = this.toGBString(this.searchFrom);  
163 - console.log(this.startTime);  
164 - } else{  
165 - this.startTime = null; 84 + }, (error)=>{
  85 +
  86 + })
  87 + }
  88 + if (node.level === 1){
  89 + console.log(node)
  90 + this.deviceService.getAllCatalog(node.data.deviceId, (data)=>{
  91 + console.log("all Catalog")
  92 + console.log(data)
  93 + if (data.length > 0) {
  94 + let nodeList = []
  95 + for (let i = 0; i < data.length; i++) {
  96 + let node = {
  97 + name: data[i].name || data[i].channelId,
  98 + id: data[i].channelId,
  99 + online: data[i].status === 1,
  100 + deviceId: data[i].deviceId,
  101 + channelId: data[i].channelId,
  102 + }
  103 + nodeList.push(node);
  104 + }
  105 + resolve(nodeList)
  106 + }else {
  107 + resolve([])
166 } 108 }
167 - if (!!this.searchTo) {  
168 - this.endTime = this.toGBString(this.searchTo);  
169 - console.log(this.endTime);  
170 - } else {  
171 - this.endTime = null; 109 + }, (error)=>{
  110 +
  111 + })
  112 + }
  113 +
  114 + if (node.level > 1) {
  115 + console.log(node.data.channelId)
  116 + this.deviceService.getAllSubCatalog(node.data.deviceId, node.data.channelId, (data)=>{
  117 + console.log("all Catalog")
  118 + console.log(data)
  119 + if (data.length > 0) {
  120 + let nodeList = []
  121 + for (let i = 0; i < data.length; i++) {
  122 + let node = {
  123 + name: data[i].name || data[i].channelId,
  124 + id: data[i].channelId,
  125 + online: data[i].status === 1,
  126 + deviceId: data[i].deviceId,
  127 + channelId: data[i].channelId,
  128 + }
  129 + nodeList.push(node);
  130 + }
  131 + resolve(nodeList)
  132 + }else {
  133 + resolve([])
172 } 134 }
173 - let self = this;  
174 - this.$axios({  
175 - method: 'get',  
176 - url:`/api/position/history/${this.deviceId}`,  
177 - params: {  
178 - start: self.startTime,  
179 - end: self.endTime,  
180 - },  
181 - }).then(function (res) {  
182 - self.total = res.data.length;  
183 - self.mobilePositionList = res.data;  
184 - console.log(self.mobilePositionList);  
185 - if (self.total == 0) {  
186 - self.$message({  
187 - showClose: true,  
188 - message: '未找到符合条件的移动位置信息',  
189 - type: 'error'  
190 - });  
191 - } else {  
192 - self.$nextTick(() => {  
193 - self.showMarkPoints(self);  
194 - }); 135 + }, (error)=>{
  136 +
  137 + })
  138 + }
  139 + },
  140 + contextmenuEventHandler: function (event,data,node,element){
  141 + if (node.data.type !== 0) {
  142 + data.parentId = node.parent.data.id;
  143 + this.$contextmenu({
  144 + items: [
  145 + {
  146 + label: "移除通道",
  147 + icon: "el-icon-delete",
  148 + disabled: false,
  149 + onClick: () => {
  150 + this.$axios({
  151 + method:"delete",
  152 + url:"/api/platform/catalog/relation/del",
  153 + data: data
  154 + }).then((res)=>{
  155 + console.log("移除成功")
  156 + node.parent.loaded = false
  157 + node.parent.expand();
  158 + }).catch(function (error) {
  159 + console.log(error);
  160 + });
195 } 161 }
196 - }).catch(function (error) {  
197 - console.log(error);  
198 - });  
199 - },  
200 - showLatestPosition: function() {  
201 - this.map.clearOverlays();  
202 - this.mapPointList = [];  
203 - this.mobilePositionList = [];  
204 - let self = this;  
205 - this.$axios({  
206 - method: 'get',  
207 - url:`/api/position/latest/${this.deviceId}`  
208 - }).then(function (res) {  
209 - console.log(res.data);  
210 - self.total = res.data.length;  
211 - self.mobilePositionList.push(res.data);  
212 - console.log(self.mobilePositionList);  
213 - if (self.total == 0) {  
214 - self.$message({  
215 - showClose: true,  
216 - message: '未找到符合条件的移动位置信息',  
217 - type: 'error'  
218 - });  
219 - } else {  
220 - self.$nextTick(() => {  
221 - self.showMarkPoints(self);  
222 - }); 162 + }
  163 + ],
  164 + event, // 鼠标事件信息
  165 + customClass: "custom-class", // 自定义菜单 class
  166 + zIndex: 3000, // 菜单样式 z-index
  167 + });
  168 + }else {
  169 + this.$contextmenu({
  170 + items: [
  171 + {
  172 + label: "刷新节点",
  173 + icon: "el-icon-refresh",
  174 + disabled: false,
  175 + onClick: () => {
  176 + this.refreshCatalog(node);
223 } 177 }
224 - }).catch(function (error) {  
225 - console.log(error);  
226 - });  
227 - },  
228 - subscribeMobilePosition: function() {  
229 - let self = this;  
230 - this.$axios({  
231 - method: 'get',  
232 - url:`/api/position/subscribe/${this.deviceId}`,  
233 - params: {  
234 - expires: self.expired,  
235 - interval: self.interval,  
236 - },  
237 - }).then(function (res) {  
238 - console.log(res.data);  
239 - })  
240 - .catch(function (error) {  
241 - console.log(error);  
242 - });  
243 - },  
244 - unSubscribeMobilePosition: function() {  
245 - let self = this;  
246 - this.$axios({  
247 - method: 'get',  
248 - url:`/api/position/subscribe/${this.deviceId}`,  
249 - params: {  
250 - expires: 0,  
251 - interval: self.interval,  
252 - },  
253 - })  
254 - .then(function (res) {  
255 - console.log(res.data);  
256 - }).catch(function (error) {  
257 - console.log(error);  
258 - });  
259 - },  
260 - toGBString: function (dateTime) {  
261 - return (  
262 - dateTime.getFullYear() +  
263 - "-" + this.twoDigits(dateTime.getMonth() + 1) +  
264 - "-" + this.twoDigits(dateTime.getDate()) +  
265 - "T" + this.twoDigits(dateTime.getHours()) +  
266 - ":" + this.twoDigits(dateTime.getMinutes()) +  
267 - ":" + this.twoDigits(dateTime.getSeconds())  
268 - );  
269 - },  
270 - twoDigits: function (num) {  
271 - if (num < 10) {  
272 - return "0" + num;  
273 - } else {  
274 - return "" + num;  
275 - }  
276 - },  
277 - showMarkPoints: function(self) {  
278 - let that = self;  
279 - let npointJ = null;  
280 - let npointW = null;  
281 - let point = null;  
282 - for (let i = 0; i < self.mobilePositionList.length; i++) {  
283 - if (self.mobilePositionList[i].geodeticSystem == "BD-09") {  
284 - npointJ = self.mobilePositionList[i].cnLng;  
285 - npointW = self.mobilePositionList[i].cnLat;  
286 - point = new BMap.Point(npointJ, npointW);  
287 - } else {  
288 - npointJ = self.mobilePositionList[i].longitude;  
289 - npointW = self.mobilePositionList[i].latitude;  
290 - let bd2 = geoTools.GPSToBaidu(npointJ, npointW);  
291 - point = new BMap.Point(bd2.lat, bd2.lng); 178 + },
  179 + {
  180 + label: "新建节点",
  181 + icon: "el-icon-plus",
  182 + disabled: false,
  183 + onClick: () => {
  184 + this.addCatalog(data.id, node);
292 } 185 }
293 - self.mapPointList.push(point);  
294 - let marker = new BMap.Marker(point); // 创建标注  
295 - self.map.addOverlay(marker); // 将标注添加到地图中  
296 - //提示信息 可以解析 HTML标签以及CSS  
297 - let infoWindow = new BMap.InfoWindow(`<p style='text-align:left;font-weight:800'>设备: ${self.mobilePositionList[i].deviceId}</p>  
298 - <p style='text-align:left;font-weight:0'>时间: ${self.mobilePositionList[i].time}</p>`);  
299 - // 鼠标移上标注点要发生的事  
300 - marker.addEventListener("mouseover", function () {  
301 - this.openInfoWindow(infoWindow);  
302 - });  
303 - // 鼠标移开标注点要发生的事  
304 - marker.addEventListener("mouseout", function () {  
305 - this.closeInfoWindow(infoWindow);  
306 - });  
307 - // 鼠标点击标注点要发生的事情  
308 - marker.addEventListener("click", function () {  
309 - alert("点击");  
310 - });  
311 - }  
312 - let view = that.map.getViewport(eval(self.mapPointList));  
313 - that.map.centerAndZoom(view.center, view.zoom);  
314 - }, 186 + },
  187 + {
  188 + label: "修改节点",
  189 + icon: "el-icon-edit",
  190 + disabled: node.level === 1,
  191 + onClick: () => {
  192 + this.editCatalog(data, node);
  193 + }
  194 + },
  195 + {
  196 + label: "删除节点",
  197 + icon: "el-icon-delete",
  198 + disabled: node.level === 1,
  199 + divided: true,
  200 + onClick: () => {
  201 + this.$confirm('确定删除?', '提示', {
  202 + confirmButtonText: '确定',
  203 + cancelButtonText: '取消',
  204 + type: 'warning'
  205 + }).then(() => {
  206 + this.removeCatalog(data.id, node)
  207 + }).catch(() => {
  208 +
  209 + });
  210 + }
  211 + },
  212 + {
  213 + label: "设为默认",
  214 + icon: "el-icon-folder-checked",
  215 + disabled: node.data.id === this.defaultCatalogIdSign,
  216 + onClick: () => {
  217 + this.setDefaultCatalog(data.id)
  218 + },
  219 + },
  220 + // {
  221 + // label: "导出",
  222 + // icon: "el-icon-download",
  223 + // disabled: false,
  224 + // children: [
  225 + // {
  226 + // label: "导出到文件",
  227 + // onClick: () => {
  228 + //
  229 + // },
  230 + // },
  231 + // {
  232 + // label: "导出到其他平台",
  233 + // onClick: () => {
  234 + //
  235 + // },
  236 + // }
  237 + // ]
  238 + // },
  239 +
  240 + ],
  241 + event, // 鼠标事件信息
  242 + customClass: "custom-class", // 自定义菜单 class
  243 + zIndex: 3000, // 菜单样式 z-index
  244 + });
  245 + }
  246 +
  247 + return false;
  248 + },
  249 + nodeClickHandler: function (data, node, tree){
  250 + this.chooseId = data.id;
  251 + this.chooseName = data.name;
  252 + if (this.catalogIdChange)this.catalogIdChange(this.chooseId, this.chooseName);
  253 + }
315 }, 254 },
316 }; 255 };
317 </script> 256 </script>
318 257
319 <style> 258 <style>
320 -.videoList {  
321 - display: flex;  
322 - flex-wrap: wrap;  
323 - align-content: flex-start;  
324 -}  
325 -  
326 -.video-item {  
327 - position: relative;  
328 - width: 15rem;  
329 - height: 10rem;  
330 - margin-right: 1rem;  
331 - background-color: #000000;  
332 -}  
333 -  
334 -.video-item-img {  
335 - position: absolute;  
336 - top: 0;  
337 - bottom: 0;  
338 - left: 0;  
339 - right: 0;  
340 - margin: auto;  
341 - width: 100%;  
342 - height: 100%;  
343 -}  
344 -  
345 -.video-item-img:after {  
346 - content: "";  
347 - display: inline-block;  
348 - position: absolute;  
349 - z-index: 2;  
350 - top: 0;  
351 - bottom: 0;  
352 - left: 0;  
353 - right: 0;  
354 - margin: auto;  
355 - width: 3rem;  
356 - height: 3rem;  
357 - background-image: url("../assets/loading.png");  
358 - background-size: cover;  
359 - background-color: #000000;  
360 -}  
361 -  
362 -.video-item-title {  
363 - position: absolute;  
364 - bottom: 0;  
365 - color: #000000;  
366 - background-color: #ffffff;  
367 - line-height: 1.5rem;  
368 - padding: 0.3rem;  
369 - width: 14.4rem;  
370 -}  
371 -  
372 -.baidumap {  
373 - width: 100%;  
374 - height: 100%;  
375 - border: none;  
376 - position: absolute;  
377 - left: 0;  
378 - top: 0;  
379 - right: 0;  
380 - bottom: 0;  
381 - margin: auto;  
382 -}  
383 259
384 -/* 去除百度地图版权那行字 和 百度logo */  
385 -.baidumap > .BMap_cpyCtrl {  
386 - display: none !important;  
387 -}  
388 -.baidumap > .anchorBL {  
389 - display: none !important;  
390 -}  
391 </style> 260 </style>
web_src/src/components/dialog/devicePlayer.vue
@@ -185,7 +185,7 @@ @@ -185,7 +185,7 @@
185 // import player from '../dialog/rtcPlayer.vue' 185 // import player from '../dialog/rtcPlayer.vue'
186 // import LivePlayer from '@liveqing/liveplayer' 186 // import LivePlayer from '@liveqing/liveplayer'
187 // import player from '../dialog/easyPlayer.vue' 187 // import player from '../dialog/easyPlayer.vue'
188 -import player from '../dialog/jessibuca.vue' 188 +import player from '../common/jessibuca.vue'
189 import recordDownload from '../dialog/recordDownload.vue' 189 import recordDownload from '../dialog/recordDownload.vue'
190 export default { 190 export default {
191 name: 'devicePlayer', 191 name: 'devicePlayer',
web_src/src/components/live.vue
@@ -46,7 +46,7 @@ @@ -46,7 +46,7 @@
46 46
47 <script> 47 <script>
48 import uiHeader from "./UiHeader.vue"; 48 import uiHeader from "./UiHeader.vue";
49 - import player from './dialog/jessibuca.vue' 49 + import player from './common/jessibuca.vue'
50 import ChannelTree from './channelTree.vue' 50 import ChannelTree from './channelTree.vue'
51 51
52 export default { 52 export default {
web_src/src/components/service/DeviceService.js 0 → 100644
  1 +import axios from 'axios';
  2 +
  3 +class DeviceService{
  4 +
  5 + constructor() {
  6 + this.$axios = axios;
  7 + }
  8 +
  9 + getDeviceList(currentPage, count, callback, errorCallback){
  10 + this.$axios({
  11 + method: 'get',
  12 + url:`/api/device/query/devices`,
  13 + params: {
  14 + page: currentPage,
  15 + count: count
  16 + }
  17 + }).then((res) => {
  18 + if (typeof (callback) == "function") callback(res.data)
  19 + }).catch((error) => {
  20 + console.log(error);
  21 + if (typeof (errorCallback) == "function") errorCallback(error)
  22 + });
  23 + }
  24 + getAllDeviceList(callback, errorCallback) {
  25 + let currentPage = 1;
  26 + let count = 100;
  27 + let deviceList = []
  28 + this.getAllDeviceListIteration(deviceList, currentPage, count, (data) => {
  29 + if (typeof (callback) == "function") callback(data)
  30 + }, errorCallback)
  31 + }
  32 +
  33 + getAllDeviceListIteration(deviceList, currentPage, count, callback, errorCallback) {
  34 + this.getDeviceList(currentPage, count, (data) => {
  35 + console.log(data)
  36 + if (data.list) {
  37 + deviceList = deviceList.concat(data.list);
  38 + if (deviceList.length < data.total) {
  39 + currentPage ++
  40 + this.getAllDeviceListIteration(deviceList, currentPage, count, callback, errorCallback)
  41 + }else {
  42 + if (typeof (callback) == "function") callback(deviceList)
  43 + }
  44 + }
  45 + }, errorCallback)
  46 + }
  47 +
  48 +
  49 + getAllCatalog(deviceId, callback, errorCallback) {
  50 + let currentPage = 1;
  51 + let count = 100;
  52 + let catalogList = []
  53 + this.getAllCatalogIteration(deviceId, catalogList, currentPage, count, callback, errorCallback)
  54 + }
  55 +
  56 + getAllCatalogIteration(deviceId, catalogList, currentPage, count, callback, errorCallback) {
  57 + this.getCatalog(deviceId, currentPage, count, (data) => {
  58 + console.log(data)
  59 + if (data.list) {
  60 + catalogList = catalogList.concat(data.list);
  61 + if (catalogList.length < data.total) {
  62 + currentPage ++
  63 + this.getAllCatalogIteration(deviceId, catalogList, currentPage, count, callback, errorCallback)
  64 + }else {
  65 + console.log(2222)
  66 + if (typeof (callback) == "function") callback(catalogList)
  67 + }
  68 + }
  69 + }, errorCallback)
  70 + }
  71 + getCatalog(deviceId, currentPage, count, callback, errorCallback) {
  72 + this.$axios({
  73 + method: 'get',
  74 + url: `/api/device/query/devices/${deviceId}/channels`,
  75 + params:{
  76 + page: currentPage,
  77 + count: count,
  78 + query: "",
  79 + online: "",
  80 + channelType: true
  81 + }
  82 + }).then((res) =>{
  83 + if (typeof (callback) == "function") callback(res.data)
  84 + }).catch(errorCallback);
  85 + }
  86 +
  87 +
  88 + getAllSubCatalog(deviceId, channelId, callback, errorCallback) {
  89 + let currentPage = 1;
  90 + let count = 100;
  91 + let catalogList = []
  92 + this.getAllSubCatalogIteration(deviceId, channelId, catalogList, currentPage, count, callback, errorCallback)
  93 + }
  94 +
  95 + getAllSubCatalogIteration(deviceId,channelId, catalogList, currentPage, count, callback, errorCallback) {
  96 + this.getSubCatalog(deviceId, channelId, currentPage, count, (data) => {
  97 + console.log(data)
  98 + if (data.list) {
  99 + catalogList = catalogList.concat(data.list);
  100 + if (catalogList.length < data.total) {
  101 + currentPage ++
  102 + this.getAllSubCatalogIteration(deviceId, channelId, catalogList, currentPage, count, callback, errorCallback)
  103 + }else {
  104 + console.log(2222)
  105 + if (typeof (callback) == "function") callback(catalogList)
  106 + }
  107 + }
  108 + }, errorCallback)
  109 + }
  110 + getSubCatalog(deviceId, channelId, currentPage, count, callback, errorCallback) {
  111 + this.$axios({
  112 + method: 'get',
  113 + url: `/api/device/query/sub_channels/${deviceId}/${channelId}/channels`,
  114 + params:{
  115 + page: currentPage,
  116 + count: count,
  117 + query: "",
  118 + online: "",
  119 + channelType: true
  120 + }
  121 + }).then((res) =>{
  122 + if (typeof (callback) == "function") callback(res.data)
  123 + }).catch(errorCallback);
  124 + }
  125 +}
  126 +
  127 +export default DeviceService;
web_src/src/components/service/MediaServer.js
@@ -10,9 +10,9 @@ class MediaServer{ @@ -10,9 +10,9 @@ class MediaServer{
10 this.$axios({ 10 this.$axios({
11 method: 'get', 11 method: 'get',
12 url:`/api/server/media_server/online/list`, 12 url:`/api/server/media_server/online/list`,
13 - }).then(function (res) { 13 + }).then((res) => {
14 if (typeof (callback) == "function") callback(res.data) 14 if (typeof (callback) == "function") callback(res.data)
15 - }).catch(function (error) { 15 + }).catch((error) => {
16 console.log(error); 16 console.log(error);
17 }); 17 });
18 } 18 }
web_src/src/router/index.js
@@ -16,7 +16,7 @@ import sip from &#39;../components/setting/Sip.vue&#39; @@ -16,7 +16,7 @@ import sip from &#39;../components/setting/Sip.vue&#39;
16 import media from '../components/setting/Media.vue' 16 import media from '../components/setting/Media.vue'
17 import live from '../components/live.vue' 17 import live from '../components/live.vue'
18 18
19 -import wasmPlayer from '../components/dialog/jessibuca.vue' 19 +import wasmPlayer from '../components/common/jessibuca.vue'
20 import rtcPlayer from '../components/dialog/rtcPlayer.vue' 20 import rtcPlayer from '../components/dialog/rtcPlayer.vue'
21 21
22 const originalPush = VueRouter.prototype.push 22 const originalPush = VueRouter.prototype.push
@@ -66,7 +66,17 @@ export default new VueRouter({ @@ -66,7 +66,17 @@ export default new VueRouter({
66 component: parentPlatformList, 66 component: parentPlatformList,
67 }, 67 },
68 { 68 {
69 - path: '/devicePosition/:deviceId/:parentChannelId/:count/:page', 69 + path: '/devicePosition',
  70 + name: 'devicePosition',
  71 + component: devicePosition,
  72 + },
  73 + {
  74 + path: '/devicePosition/:deviceId',
  75 + name: 'devicePosition',
  76 + component: devicePosition,
  77 + },
  78 + {
  79 + path: '/devicePosition/:deviceId/:parentChannelId',
70 name: 'devicePosition', 80 name: 'devicePosition',
71 component: devicePosition, 81 component: devicePosition,
72 }, 82 },