UNPKG

yk-smart-ui-test

Version:

A Component Library for Vue.js.

1,666 lines (1,602 loc) 63.7 kB
module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = "/dist/"; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 160); /******/ }) /************************************************************************/ /******/ ({ /***/ 160: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXTERNAL MODULE: external "vue-slider-component" var external_vue_slider_component_ = __webpack_require__(47); var external_vue_slider_component_default = /*#__PURE__*/__webpack_require__.n(external_vue_slider_component_); // EXTERNAL MODULE: external "vue-slider-component/theme/default.css" var default_css_ = __webpack_require__(54); // CONCATENATED MODULE: ./packages/routebook/src/mapStyle.js /* harmony default export */ var mapStyle = ({ styleJson: [{ 'featureType': 'land', 'elementType': 'geometry', 'stylers': { 'color': '#fcfcfc' } }, { 'featureType': 'water', 'elementType': 'geometry', 'stylers': { 'color': '#d5e2f8' } }, { 'featureType': 'label', 'elementType': 'labels.text.fill', 'stylers': { 'color': '#585d99' } }, { 'featureType': 'highway', 'elementType': 'geometry.fill', 'stylers': { 'color': '#b5caa0ff' } }, { 'featureType': 'highway', 'elementType': 'geometry.stroke', 'stylers': { 'color': '#94ad79ff' } }, { 'featureType': 'nationalway', 'elementType': 'geometry.fill', 'stylers': { 'color': '#b5caa0ff' } }, { 'featureType': 'arterial', 'elementType': 'geometry.fill', 'stylers': { 'color': '#d4e2c6ff' } }, { 'featureType': 'cityhighway', 'elementType': 'geometry.fill', 'stylers': { 'color': '#d4e2c6ff' } }, { 'featureType': 'provincialway', 'elementType': 'geometry.fill', 'stylers': { 'color': '#d4e2c6ff' } }, { 'featureType': 'provincialway', 'elementType': 'geometry.stroke', 'stylers': { 'color': '#b5caa0ff' } }, { 'featureType': 'tertiaryway', 'elementType': 'geometry.fill', 'stylers': { 'color': '#ffffffff' } }, { 'featureType': 'tertiaryway', 'elementType': 'geometry.stroke', 'stylers': { 'color': '#b5caa0ff' } }, { 'featureType': 'fourlevelway', 'elementType': 'geometry.fill', 'stylers': { 'color': '#ffffffff' } }, { 'featureType': 'fourlevelway', 'elementType': 'geometry.stroke', 'stylers': { 'color': '#b5caa0ff' } }, { 'featureType': 'subway', 'elementType': 'geometry', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'railway', 'elementType': 'geometry', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'highwaysign', 'elementType': 'labels', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'highwaysign', 'elementType': 'labels.icon', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'nationalwaysign', 'elementType': 'labels', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'nationalwaysign', 'elementType': 'labels.icon', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'provincialwaysign', 'elementType': 'labels', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'provincialwaysign', 'elementType': 'labels.icon', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'tertiarywaysign', 'elementType': 'labels', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'tertiarywaysign', 'elementType': 'labels.icon', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'subwaylabel', 'elementType': 'labels', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'subwaylabel', 'elementType': 'labels.icon', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'nationalway', 'elementType': 'geometry.stroke', 'stylers': { 'color': '#94ad79ff' } }, { 'featureType': 'cityhighway', 'elementType': 'geometry.stroke', 'stylers': { 'color': '#b5caa0ff' } }, { 'featureType': 'arterial', 'elementType': 'geometry.stroke', 'stylers': { 'color': '#b5caa0ff' } }, { 'featureType': 'highway', 'stylers': { 'level': '6', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'highway', 'stylers': { 'level': '7', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'highway', 'stylers': { 'level': '8', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'highway', 'stylers': { 'level': '9', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'highway', 'elementType': 'geometry', 'stylers': { 'visibility': 'off', 'level': '6', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'highway', 'elementType': 'geometry', 'stylers': { 'visibility': 'off', 'level': '7', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'highway', 'elementType': 'geometry', 'stylers': { 'visibility': 'off', 'level': '8', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'highway', 'elementType': 'geometry', 'stylers': { 'visibility': 'off', 'level': '9', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'highway', 'elementType': 'labels', 'stylers': { 'visibility': 'off', 'level': '6', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'highway', 'elementType': 'labels', 'stylers': { 'visibility': 'off', 'level': '7', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'highway', 'elementType': 'labels', 'stylers': { 'visibility': 'off', 'level': '8', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'highway', 'elementType': 'labels', 'stylers': { 'visibility': 'off', 'level': '9', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'nationalway', 'stylers': { 'level': '6', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'nationalway', 'stylers': { 'level': '7', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'nationalway', 'stylers': { 'level': '8', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'nationalway', 'stylers': { 'level': '9', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'nationalway', 'elementType': 'geometry', 'stylers': { 'visibility': 'off', 'level': '6', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'nationalway', 'elementType': 'geometry', 'stylers': { 'visibility': 'off', 'level': '7', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'nationalway', 'elementType': 'geometry', 'stylers': { 'visibility': 'off', 'level': '8', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'nationalway', 'elementType': 'geometry', 'stylers': { 'visibility': 'off', 'level': '9', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'nationalway', 'elementType': 'labels', 'stylers': { 'visibility': 'off', 'level': '6', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'nationalway', 'elementType': 'labels', 'stylers': { 'visibility': 'off', 'level': '7', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'nationalway', 'elementType': 'labels', 'stylers': { 'visibility': 'off', 'level': '8', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'nationalway', 'elementType': 'labels', 'stylers': { 'visibility': 'off', 'level': '9', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'provincialway', 'stylers': { 'level': '8', 'curZoomRegionId': '0', 'curZoomRegion': '8-9' } }, { 'featureType': 'provincialway', 'stylers': { 'level': '9', 'curZoomRegionId': '0', 'curZoomRegion': '8-9' } }, { 'featureType': 'provincialway', 'elementType': 'geometry', 'stylers': { 'visibility': 'off', 'level': '8', 'curZoomRegionId': '0', 'curZoomRegion': '8-9' } }, { 'featureType': 'provincialway', 'elementType': 'geometry', 'stylers': { 'visibility': 'off', 'level': '9', 'curZoomRegionId': '0', 'curZoomRegion': '8-9' } }, { 'featureType': 'provincialway', 'elementType': 'labels', 'stylers': { 'visibility': 'off', 'level': '8', 'curZoomRegionId': '0', 'curZoomRegion': '8-9' } }, { 'featureType': 'provincialway', 'elementType': 'labels', 'stylers': { 'visibility': 'off', 'level': '9', 'curZoomRegionId': '0', 'curZoomRegion': '8-9' } }, { 'featureType': 'cityhighway', 'stylers': { 'level': '6', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'cityhighway', 'stylers': { 'level': '7', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'cityhighway', 'stylers': { 'level': '8', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'cityhighway', 'stylers': { 'level': '9', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'cityhighway', 'elementType': 'geometry', 'stylers': { 'visibility': 'off', 'level': '6', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'cityhighway', 'elementType': 'geometry', 'stylers': { 'visibility': 'off', 'level': '7', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'cityhighway', 'elementType': 'geometry', 'stylers': { 'visibility': 'off', 'level': '8', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'cityhighway', 'elementType': 'geometry', 'stylers': { 'visibility': 'off', 'level': '9', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'cityhighway', 'elementType': 'labels', 'stylers': { 'visibility': 'off', 'level': '6', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'cityhighway', 'elementType': 'labels', 'stylers': { 'visibility': 'off', 'level': '7', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'cityhighway', 'elementType': 'labels', 'stylers': { 'visibility': 'off', 'level': '8', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'cityhighway', 'elementType': 'labels', 'stylers': { 'visibility': 'off', 'level': '9', 'curZoomRegionId': '0', 'curZoomRegion': '6-9' } }, { 'featureType': 'entertainment', 'elementType': 'geometry', 'stylers': { 'color': '#e4f0d7ff' } }, { 'featureType': 'manmade', 'elementType': 'geometry', 'stylers': { 'color': '#effcf0ff' } }, { 'featureType': 'education', 'elementType': 'geometry', 'stylers': { 'color': '#e3f7e4ff' } }, { 'featureType': 'building', 'elementType': 'geometry.stroke', 'stylers': { 'color': '#a1cfa4ff' } }, { 'featureType': 'poilabel', 'elementType': 'labels', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'poilabel', 'elementType': 'labels.icon', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'education', 'elementType': 'labels.text.fill', 'stylers': { 'color': '#7a7a7aff' } }, { 'featureType': 'education', 'elementType': 'labels.text.stroke', 'stylers': { 'color': '#ffffffff' } }, { 'featureType': 'education', 'elementType': 'labels.text', 'stylers': { 'fontsize': '26' } }, { 'featureType': 'manmade', 'elementType': 'labels.text.fill', 'stylers': { 'color': '#afafafff' } }, { 'featureType': 'manmade', 'elementType': 'labels.text', 'stylers': { 'fontsize': '26' } }, { 'featureType': 'scenicspotslabel', 'elementType': 'labels.text.fill', 'stylers': { 'color': '#376b6dff' } }, { 'featureType': 'scenicspots', 'elementType': 'labels', 'stylers': { 'visibility': 'off' } }, { 'featureType': 'scenicspotslabel', 'elementType': 'labels', 'stylers': { 'visibility': 'on' } }, { 'featureType': 'scenicspotslabel', 'elementType': 'labels.text.stroke', 'stylers': { 'color': '#ffffffff', 'weight': '4' } }, { 'featureType': 'country', 'elementType': 'labels.text.fill', 'stylers': { 'color': '#376b6dff' } }, { 'featureType': 'country', 'elementType': 'labels.text.stroke', 'stylers': { 'color': '#ffffffff', 'weight': '3' } }, { 'featureType': 'water', 'elementType': 'labels.text.fill', 'stylers': { 'color': '#ffffffff' } }, { 'featureType': 'water', 'elementType': 'labels.text.stroke', 'stylers': { 'color': '#ffffff00' } }, { 'featureType': 'water', 'elementType': 'labels.text', 'stylers': { 'fontsize': '24' } }] }); // CONCATENATED MODULE: ./node_modules/_babel-loader@7.1.5@babel-loader/lib!./node_modules/_vue-loader@15.9.8@vue-loader/lib??vue-loader-options!./packages/routebook/src/main.vue?vue&type=script&lang=js& // // import BMap from 'BMap' var BMap = null; var ComplexCustomOverlay = null; /* harmony default export */ var mainvue_type_script_lang_js_ = ({ name: 'YkRoutebook', components: { VueSlider: external_vue_slider_component_default.a }, props: { longitudeKey: { type: String, default: 'lon' }, latitudeKey: { type: String, default: 'lat' }, initPoint: { // 初始化中心点位置。如果points有数据。就取第一个 type: Object, default: function _default() { return { lon: 116.403984, lat: 39.914034 }; } }, height: { type: String, default: '600px' }, /* * point格式{lat: , lng: , color: } * */ points: { type: Array, default: function _default() { return []; }, required: true }, pointsArr: { // 地图打点,停留点,事件点等 type: Array, default: function _default() { return []; } }, pointsColor: { type: String, default: '#DD425A' }, play: { // 播放状态 type: Boolean, default: false }, zoom: { // 地图缩放等级 type: Number, default: 6 }, speed: { // 倍数 type: Number, default: 1 }, speedArr: { type: Array, default: function _default() { return [1, 2, 5, 10, 20, 50, 100]; } }, speedBase: { // 速度 type: Number, default: 100 }, lineWidth: { // 路径线宽度 type: Number, default: 4 }, progress: { // 进度 type: Number, default: 0 }, direction: { // Icon偏离角度 type: Number, default: -60 }, showPoints: Boolean, // 是否显示途经点 showInfoWin: { // 始终显示infoWindow(如果设置了landmarkPois,必须为true,两者只能生效一个) type: Boolean, default: false }, autoCenter: { // 实时刷新中心点。 type: Boolean, default: true }, colorsArrResource: { type: Array, default: function _default() { return [ // 速度颜色数组 { key: '#F4D035', name: '0~30km/h', min: 0, max: 30 }, { key: '#4CAF50', name: '30~60km/h', min: 30, max: 60 }, { key: '#2E63FD', name: '60~80km/h', min: 60, max: 80 }, { key: '#5D3FE4', name: '80~100km/h', min: 80, max: 100 }, { key: '#DD425A', name: '>100km/h', min: 100 }]; } }, ctrlIcons: { type: Object, default: function _default() { return { left: __webpack_require__(75), play: { active: __webpack_require__(76), inactive: __webpack_require__(77) }, right: __webpack_require__(78) }; } } }, data: function data() { return { map: null, startIndex: 0, car: null, timeId: null, angle: 60, // 旋转角度 myCompOverlay: null, myPopOverlay: null, showInfoWindow: this.showInfoWin, // 是否显示info弹窗 curPlay: this.play, // 播放状态 curProgress: 0, // 当前播放进度 curSpeed: 1, // 倍数 parsedPoints: [], // 处理点分组 value: 0, pointsBMap: [] }; }, computed: { beginEndTime: function beginEndTime() { return this.points.length > 0 ? { startTime: this.points[0].reportTime, endTime: this.points[this.points.length - 1].reportTime } : {}; }, colorsArr: function colorsArr() { return this.colorsArrResource.filter(function (item) { return item.min > 0 || item.max > 0; }); } }, watch: { play: function play(newv) { this.curPlay = newv; if (newv) { if (!this.car) this.$emit('update:play', false);else this.start(); } else { this.pause(); } }, points: function points(newv) { console.log('newv', newv); this.clearMap(); this.initLinesArr(); // this.initLine() // let lon = this.points.length > 0 ? this.points[0].lon : this.initPoint.lon // let lat = this.points.length > 0 ? this.points[0].lat : this.initPoint.lat if (this.points.length > 0) { this.initCar(this.points[0][this.longitudeKey], this.points[0][this.latitudeKey]); // 画车 this.initStartEndPoint(); // 画开始结束的点 } }, curSpeed: function curSpeed() { if (this.timeId) this.start(); }, curProgress: function curProgress(newv) { if (this.points.length > 0) { this.startIndex = newv; if (newv < 0) { this.startIndex = 0; } if (newv < this.points.length - 1) { this.angle = Number(this.points[this.startIndex].direction) + this.direction; } else { this.startIndex = this.points.length - 1; } this.initCar(this.points[this.startIndex][this.longitudeKey], this.points[this.startIndex][this.latitudeKey]); } }, colorsArr: function colorsArr(newv) { this.parsedPoints = []; // 清空已有数组 this.pointsBMap.forEach(function (item) { item.enableMassClear(); }); if (this.points.length > 0) { this.initLinesArr(); } }, showPoints: function showPoints(newv) { if (newv && this.pointsArr.length > 0) this.initPoints();else { this.map.clearOverlays(); } } }, mounted: function mounted() { BMap = window.BMap; ComplexCustomOverlay = function ComplexCustomOverlay(point, el) { this._point = point; this._div = el; }; ComplexCustomOverlay.prototype = new BMap.Overlay(); ComplexCustomOverlay.prototype.initialize = function (map) { this._map = map; map.getPanes().labelPane.appendChild(this._div); return this._div; }; ComplexCustomOverlay.prototype.draw = function () { var map = this._map; var pixel = map.pointToOverlayPixel(this._point); /* 获取地图东北与西南角*/ var NorthEast = map.getBounds().getNorthEast(); // 东北 - 上右 var SouthWest = map.getBounds().getSouthWest(); // 西南 - 下左 var o = 20; // 距离边缘和小车的偏移值 var offsetLeft = 0; var offsetTop = this._div.offsetHeight + o; var lng = void 0, lat = void 0; var northEastX = map.pointToOverlayPixel(NorthEast).x; var northEastY = map.pointToOverlayPixel(NorthEast).y; if (pixel.x + this._div.offsetWidth >= northEastX) { // console.log('到右边了') lng = NorthEast.lng; lat = this._point.lat; offsetLeft = -this._div.offsetWidth - o; pixel = map.pointToOverlayPixel(new BMap.Point(lng, lat)); } if (pixel.y - this._div.offsetHeight - o <= northEastY) { // console.log('到上边了') lng = this._point.lng; lat = NorthEast.lat; offsetTop = -30; pixel = map.pointToOverlayPixel(new BMap.Point(lng, lat)); } // 超出下边/左边范围 if (this._point.lng < SouthWest.lng || this._point.lat < SouthWest.lat) { // console.log('左下') lng = this._point.lng < SouthWest.lng ? SouthWest.lng : this._point.lng; lat = this._point.lat < SouthWest.lat ? SouthWest.lat : this._point.lat; pixel = map.pointToOverlayPixel(new BMap.Point(lng, lat)); if (this._point.lng < SouthWest.lng) { offsetLeft = o; } } if (this._point.lat > NorthEast.lat) { // console.log('上.....') lng = this._point.lng; lat = NorthEast.lat; offsetTop = -o; pixel = map.pointToOverlayPixel(new BMap.Point(lng, lat)); } if (this._point.lng < SouthWest.lng && this._point.lat > NorthEast.lat) { // console.log('左上。。。。') lng = SouthWest.lng; lat = NorthEast.lat; offsetTop = -o; pixel = map.pointToOverlayPixel(new BMap.Point(lng, lat)); } if (pixel.y - this._div.offsetHeight - o <= northEastY && pixel.x + this._div.offsetWidth >= northEastX) { // console.log('上右') lng = NorthEast.lng; lat = NorthEast.lat; offsetLeft = -this._div.offsetWidth - o; offsetTop = -o; pixel = map.pointToOverlayPixel(new BMap.Point(lng, lat)); } if (pixel.x + this._div.offsetWidth >= northEastX && this._point.lat < SouthWest.lat) { // console.log('右下角') lng = NorthEast.lng; lat = SouthWest.lat; offsetLeft = -this._div.offsetWidth - o; pixel = map.pointToOverlayPixel(new BMap.Point(lng, lat)); } // console.log('分割线--------------------------------------------------------') // if ( // NorthEast.lng > 180 || // SouthWest.lng > 180 || // NorthEast.lat > 90 || // SouthWest.lat > 90 || // NorthEast.lng < 0 || // SouthWest.lng < 0 || // NorthEast.lat < 0 || // SouthWest.lat < 0 // ) { // setTimeout(() => { // map.setCenter(this._point) // }, 100) // alert('超过经纬度限制!') // } this._div.style.left = pixel.x + offsetLeft + 'px'; this._div.style.top = pixel.y - offsetTop + 'px'; }; this.initMap(); this.curSpeed = this.speedArr[0]; }, methods: { initMap: function initMap() { var that = this; var map = new BMap.Map(this.$refs.mapInner, { enableMapClick: false, minZoom: 6, maxZoom: 18 }); map.enableScrollWheelZoom(new BMap.Point(this.points[0] ? this.points[0][this.longitudeKey] : this.initPoint[this.longitudeKey] || this.initPoint.lon, this.points[0] ? this.points[0][this.latitudeKey] : this.initPoint[this.latitudeKey] || this.initPoint.lat), this.zoom); map.centerAndZoom(new BMap.Point(this.points[0] ? this.points[0][this.longitudeKey] : this.initPoint[this.longitudeKey] || this.initPoint.lon, this.points[0] ? this.points[0][this.latitudeKey] : this.initPoint[this.latitudeKey] || this.initPoint.lat), this.zoom); this.map = map; if (this.points.length > 0) { this.clearMap(); this.initLinesArr(); this.initLine(); this.initCar(this.points[0][this.longitudeKey], this.points[0][this.latitudeKey]); // 画车 this.initStartEndPoint(); // 画开始结束的点 } this.map.setMapStyle(mapStyle); this.map.addEventListener('zoomend', function () { that.initInfoWindow('zoomend'); }); }, initPoints: function initPoints() { var _this2 = this; var _this = this; // 地图打点 this.pointsArr.forEach(function (item, index) { var p = new BMap.Point(item[_this2.longitudeKey], item[_this2.latitudeKey]); var pointMarker = new BMap.Marker(p, { icon: new BMap.Icon(__webpack_require__(79), new BMap.Size(32, 32)), zIndex: 99 }); pointMarker.addEventListener('mouseover', function (e) { console.log('mouseover', e.currentTarget); _this.hoverPopCard(e.currentTarget); _this.$emit('clickPoint', item); }); pointMarker.addEventListener('mouseout', function (e) { _this.clearPopcard(e.currentTarget); }); _this2.map.addOverlay(pointMarker); }); }, initLinesArr: function initLinesArr() { var _this3 = this; // 初始化分段数组 this.points.forEach(function (item) { var speed = parseInt(item.speed); for (var i = 0; i < _this3.colorsArr.length; i++) { var element = _this3.colorsArr[i]; if (element.max ? speed < element.max && speed > element.min : speed > element.min) { _this3.pushData(element.min, item, element); } else if (element.min === 0 && element.max === 0) { _this3.pushData(element.min, item, _this3.colorsArr[i + 1]); } } }); this.initLine(); }, pushData: function pushData(tag, value, color) { if (this.parsedPoints.length === 0 || this.parsedPoints[this.parsedPoints.length - 1].tag !== tag) { this.parsedPoints.push({ tag: tag, color: color.key, points: [] }); } this.parsedPoints[this.parsedPoints.length - 1].points.push(value); }, initLine: function initLine() { var _this4 = this; // 清除已有的线 var allLines = this.map.getOverlays(); allLines.forEach(function (item) { _this4.map.removeOverlay(item); }); console.log('initLine', allLines); // 画轨迹 // 画不同颜色的路线 this.parsedPoints.forEach(function (item, index, arr) { // 解决断点情况。每个首尾相连 if (index + 1 < arr.length) { item.points.push(arr[index + 1].points[0]); } var polyLine = new BMap.Polyline(item.points.map(function (it) { return new BMap.Point(it[_this4.longitudeKey], it[_this4.latitudeKey]); }), { strokeColor: item.color, // 设置颜色 strokeWeight: _this4.lineWidth, // 宽度 strokeOpacity: 1 }); polyLine.disableMassClear(); _this4.pointsBMap.push(polyLine); _this4.map.addOverlay(polyLine); }); // 添加途经点 if (this.pointsArr.length > 0 && this.showPoints) this.initPoints(); console.timeEnd(); }, initStartEndPoint: function initStartEndPoint() { var startIcon = new BMap.Icon(__webpack_require__(80), new BMap.Size(40, 40)); var endIcon = new BMap.Icon(__webpack_require__(81), new BMap.Size(40, 40)); var startPoint = new BMap.Point(this.points[0][this.longitudeKey], this.points[0][this.latitudeKey]); var start = new BMap.Marker(startPoint, { icon: startIcon }); var endPoint = new BMap.Point(this.points[this.points.length - 1][this.longitudeKey], this.points[this.points.length - 1][this.latitudeKey]); var end = new BMap.Marker(endPoint, { icon: endIcon }); start.disableMassClear(); end.disableMassClear(); this.map.addOverlay(start); this.map.addOverlay(end); }, initCar: function initCar(lng, lat) { this.car && this.map.removeOverlay(this.car); var that = this; // 创建小车图标 var myIcon = new BMap.Icon(__webpack_require__(82), new BMap.Size(94, 94)); // 创建Marker标注,使用小车图标 var pt = new BMap.Point(lng, lat); this.car = new BMap.Marker(pt, { icon: myIcon, rotation: that.angle, zIndex: 99 }); this.car.disableMassClear(); if (this.showInfoWindow) this.initInfoWindow(); // 将标注添加到地图 this.map.addOverlay(this.car); if (this.points.length > 0) { this.map.setCenter(new BMap.Point(lng, lat)); } // 点标记添加点击事件 this.car.addEventListener('click', function () { console.log('点击了小车'); that.showInfoWindow = !that.showInfoWindow; that.$emit('carClick', { lng: lng, lat: lat, isShow: that.showInfoWindow }); // that.initCar() that.initInfoWindow(); // this.map.openInfoWindow(infoWindow, point); // 开启信息窗口 }); }, initInfoWindow: function initInfoWindow(type) { var _this5 = this; this.myCompOverlay && this.map.removeOverlay(this.myCompOverlay); if (this.showPopCard && this.points.length > 0) { this.$nextTick(function () { if (type === 'zoomend') { setTimeout(function () { _this5.myCompOverlay = new ComplexCustomOverlay(_this5.car.getPosition(), _this5.$refs.slotContainer); _this5.map.addOverlay(_this5.myCompOverlay); }, 100); } else { _this5.myCompOverlay = new ComplexCustomOverlay(_this5.car.getPosition(), _this5.$refs.slotContainer); _this5.map.addOverlay(_this5.myCompOverlay); } }); } }, // 停留点弹窗 hoverPopCard: function hoverPopCard(point, data) { var _this6 = this; this.myPopOverlay && this.map.removeOverlay(this.myPopOverlay); console.log(this.$refs.slotPopCard); console.log(point.getPosition()); if (this.pointsArr.length > 0) { this.$nextTick(function () { _this6.myPopOverlay = new ComplexCustomOverlay(point.getPosition(), _this6.$refs.slotPopCard); _this6.map.addOverlay(_this6.myPopOverlay); }); } }, clearPopcard: function clearPopcard() { this.myPopOverlay && this.map.removeOverlay(this.myPopOverlay); }, start: function start() { this.timeId && clearTimeout(this.timeId); this.timeId = null; if (this.startIndex < this.points.length) { this.intervalFn(); } }, intervalFn: function intervalFn() { var _this7 = this; if (this.points.length === 0) return; this.timeId = null; clearTimeout(this.timeId); // console.log('运动=>', this.startIndex) if (this.startIndex === this.points.length - 1) { this.finished(); return; } // this.angle = getAngle(this.points[this.startIndex].lon, this.points[this.startIndex].lat, this.points[this.startIndex+1].lon, this.points[this.startIndex+1].lat) this.angle = Number(this.points[this.startIndex].direction) + this.direction; this.startIndex++; this.initCar(this.points[this.startIndex][this.longitudeKey], this.points[this.startIndex][this.latitudeKey]); this.$emit('update:progress', this.startIndex); this.curProgress = this.startIndex; // console.log('当前速度=>', parseInt(this.points[this.startIndex].speed) * this.speedBase / this.curSpeed) this.timeId = setTimeout(function () { _this7.intervalFn(); }, parseInt(this.points[this.startIndex].speed) * this.speedBase / this.curSpeed + 10); }, pause: function pause() { clearTimeout(this.timeId); this.timeId = null; }, togglePlay: function togglePlay() { console.log(this.points); if (this.points.length === 0) { return; } this.curPlay = !this.curPlay; if (this.curPlay) { if (!this.car) this.curPlay = false;else this.start(); } else { this.pause(); } }, forwardOrBackward: function forwardOrBackward(type) { // console.log(type) if (this.points.length > 0) { if (type > 0) this.curProgress += 20;else this.curProgress -= 20; } }, handleProgressChange: function handleProgressChange(e) { this.curProgress = e; this.$emit('update:progress', e); }, setSpeed: function setSpeed(event) { var speed = event.target.value; console.log('速度改变了->', speed); this.curSpeed = speed; if (this.curPlay) { this.pause(); this.intervalFn(); } }, finished: function finished() { this.pause(); this.startIndex = 0; this.$emit('update:play', false); this.$emit('finished'); this.curPlay = false; }, clearMap: function clearMap() { this.map.clearOverlays(); this.parsedPoints = []; this.curProgress = 0; this.curSpeed = this.speedArr[0]; this.finished(); } }, render: function render() { var _this8 = this; var h = arguments[0]; // element 进度条 <el-slider max={this.points.length} value={this.curProgress} showTooltip={false} onInput={this.handleProgressChange} onChange={this.handleProgressChange}> </el-slider> var slotEl = h( 'div', { ref: 'slotContainer', 'class': 'slot-container' }, [this.$slots.default] ); var slotPopCard = h( 'div', { ref: 'slotPopCard', 'class': 'slot-popcard-container' }, [this.$slots.popcard] ); var pauseIcn = h('i', { 'class': 'yk_icon_arrow_fill_right', style: 'color:white' }); var palyIcn = h('i', { 'class': 'yk_icon_media_pause', style: 'color:white' }); return h( 'div', { 'class': 'yk-routebook' }, [h( 'div', { 'class': 'routebook-map-box' }, [h( 'div', { ref: 'mapInner', style: { height: this.height } }, [' '] ), this.points.length > 0 ? slotEl : null, this.pointsArr.length > 0 ? slotPopCard : null, h( 'span', { 'class': { disabled: this.points.length === 0, 'get-position': true }, on: { 'click': function click() { if (_this8.points.length === 0) return; _this8.map.setCenter(_this8.car.getPosition()); } } }, [' '] ), h( 'div', { 'class': 'routebook-speed-info' }, [h('ul', [this.colorsArr.map(function (item) { return h( 'li', { 'class': 'speed-item' }, [h( 'span', { style: { background: item.key } }, [' '] ), item.name] ); })])] ), h( 'div', { 'class': 'play-crl routebook-flex' }, [h( 'div', { 'class': 'play-icon yk-flex-c', on: { 'click': this.togglePlay } }, [this.curPlay ? palyIcn : pauseIcn] ), h( 'div', { 'class': 'routebook-progress yk-ml8' }, [h( 'div', { 'class': 'routebook-rm' }, [h( 'vue-slider', { ref: 'slider', attrs: { value: this.curProgress, max: this.points.length > 0 ? this.points.length - 1 : 1, height: 4, dotSize: 10, railStyle: { background: '#ffffff' }, duration: 0, processStyle: { background: '#2E63FD' }, disabled: this.points.length === 0, tooltip: 'none', attrs: this.$attrs }, on: { 'change': this.handleProgressChange } }, [' '] )] )] ), h( 'div', { 'class': 'routebook-flex yk-ml8' }, [h( 'div', { 'class': 'play-icon yk-flex-c ' }, [h('i', { 'class': 'yk_icon_arrow_double_left', style: 'color:white', on: { 'click': this.forwardOrBackward.bind(this, -1) } })] ), h( 'div', { 'class': 'play-icon yk-flex-c yk-ml8' }, [h('i', { 'class': 'yk_icon_arrow_double_right', style: 'color:white', on: { 'click': this.forwardOrBackward.bind(this, 1) } })] ), h( 'div', { 'class': 'yk-flex-c yk-ml8' }, [h( 'select', { 'class': 'routebook-select', on: { 'change': this.setSpeed.bind(this) } }, [this.speedArr.map(function (item) { return h( 'option', { domProps: { 'value': item } }, [item, 'X'] ); })] )] )] )] )] )] ); } }); // CONCATENATED MODULE: ./packages/routebook/src/main.vue?vue&type=script&lang=js& /* harmony default export */ var src_mainvue_type_script_lang_js_ = (mainvue_type_script_lang_js_); // EXTERNAL MODULE: ./node_modules/_vue-loader@15.9.8@vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(2); // CONCATENATED MODULE: ./packages/routebook/src/main.vue var render, staticRenderFns /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( src_mainvue_type_script_lang_js_, render, staticRenderFns, false, null, null, null ) /* hot reload */ if (false) { var api; } component.options.__file = "packages/routebook/src/main.vue" /* harmony default export */ var main = (component.exports); // CONCATENATED MODULE: ./packages/routebook/index.js /* istanbul ignore next */ main.install = function (Vue) { Vue.component(main.name, main); }; /* harmony default export */ var routebook = __webpack_exports__["default"] = (main); /***/ }), /***/ 2: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return normalizeComponent; }); /* globals __VUE_SSR_CONTEXT__ */ // IMPORTANT: Do NOT use ES2015 features in this file (except for modules). // This module is a runtime utility for cleaner component module output and will // be included in the final webpack user bundle. function normalizeComponent ( scriptExports, render, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, /* server only */ shadowMode /* vue-cli only */ ) { // Vue.extend constructor export interop var options = typeof scriptExports === 'function' ? scriptExports.options : scriptExports // render functions if (render) { options.render = render options.staticRenderFns = staticRenderFns options._compiled = true } // functional template if (functionalTemplate) { options.functional = true } // scopedId if (scopeId) { options._scopeId = 'data-v-' + scopeId } var hook if (moduleIdentifier) { // server build hook = function (context) { // 2.3 injection context = context || // cached call (this.$vnode && this.$vnode.ssrContext) || // stateful (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional // 2.2 with runInNewContext: true if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { context = __VUE_SSR_CONTEXT__ } // inject component styles if (injectStyles) { injectStyles.call(this, context) } // register component module identifier for async chunk inferrence if (context && context._registeredComponents) { context._registeredComponents.add(moduleIdentifier) } } // used by ssr in case component is cached and beforeCreate // never gets called options._ssrRegister = hook } else if (injectStyles) { hook = shadowMode ? function () { injectStyles.call( this, (options.functional ? this.parent : this).$root.$options.shadowRoot ) } : injectStyles } if (hook) { if (options.functional) { // for template-only hot-reload because in that case the render fn doesn't // go through the normalizer options._injectStyles = hook // register for functional component in vue file var originalRender = options.render options.render = function renderWithStyleInjection (h, context) { hook.call(context) return originalRender(h, context) } } else { // inject component registration as beforeCreate hook var existing = options.beforeCreate options.beforeCreate = existing ? [].concat(existing, hook) : [hook] } } return { exports: scriptExports, options: options } } /***/ }), /***/ 47: /***/ (function(module, exports) { module.exports = require("vue-slider-component"); /***/ }), /***/ 54: /***/ (function(module, exports) { module.exports = require("vue-slider-component/theme/default.css"); /***/ }), /***/ 75: /***/ (function(module, exports) { module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAJCAYAAAA7KqwyAAAAx0lEQVQoU33RO0rEQRDE4a8VfCJiJIJi6gsDBR+YmAuCjwN4Lm8i3kPwEGKgecnIf2F3nbWjYWq6prt+pVNJtnGO76p6mX6S5BCP+KhxMckGLrAzuq+q59E5ydbQeDTc5dcgyRJOsY+5cdNmkGQNt7jC/ISe5ABnWOitg3fcYbmnV5Knf5pbTxt3cYa5ZrA3TNDW6NUbHrDSnWDIoP1wgpZuL4NV3OD6TwZTFNYHCrszKGwOFI4nKHQ4N1yX+Kqq147e1r7H5w/sij/xDGxhNQAAAABJRU5ErkJggg==" /***/ }), /***/ 76: /***/ (function(module, exports) { module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC8AAAAuCAYAAAC4e0AJAAAFBklEQVRoQ9Waa6xcUxTHf8ubi3o/41kU8QhaxCff64P4QD+IRJQiEo8iPohHiWcIEUQIQSQ+eSUiHpGgivRWG/VolSAtbUNdTet1lS3/mX2ma3bPnDnn3pkz05Xc5M7sffb6r33WXvu/1hpjkhJC2AaYEv92BXYGdgC2BQz4D/gH+Bv4HdgAjJnZX5NU3Vh8QhJC2BM4ENg7Aq26jgxZC6w2MxlXWSqDDyHsCxwGaJd7IXozq4EfzGy8yoKlwYcQdgGmRffopGP/aNgBgObLfeQevwIrBTB+znv+X+B7YJWZhTJGlAIfQpB7HA3Iv73o8wzgbOA0QG+lSOQeXwEfA+8AP+dM/k1zzExnpFAKwYcQNK7d1k562Q44B7ggZ6ybzmxcO/0B8BzwXfKQjPzczNYXLdYRfIwiJwB7JQucAlwDHFoWZZd5MuIV4GngDzdXZ0EGyOVyJRd83PETE+AKfZcAs2II7BH21jKrgNuBbxIDlprZWJ6yTuDl3we7B3YEbgPO7DXiZD0dbun5xH2/CfjUzPxbaQxvAT6EoIhxnHt4J+Be4KQ+A8+WF9g7gPedPt0Ji8xMrtSSNvAhBO2woocOZGbcncBZNQHP1Cjez5XPO70rzezbIvDHA/u5CRdGP68Ze0PdOmA2oNApUewfNTO9hXa3CSHsBpzqXOko4HH3FgZhwHvxDGS615nZ0jzwCov7OISPAPpu0HK9/N2B0O5vzHya6OuKJNkZmA7cP2jUUf8y4AqHRURuuQevC+dIN+GB6EJDgp+rgc8iGEWjBYo8jZ0OIWinM5YoHvNC1YtodPk4T77ePEuXzhxh+jRxsqYUjZXcnTeBe9xc3by/WAhh+xgKM5c5P3lNpdaf8+AY6zc2yeCUEeOJuaL7TSkaK7U4yMfPBUQlJD+a2QqBVzIhKpCJLqTTSy7amjZrXjsFefGWzZSoaKyCnisjI9UjG8xskcAfAkx1i7wM7FFh0cbUGsA/BLwacW0ys/kCfwxwUPxSsf61qsBrAv8SoPCdyQKB9/H9cOCZIQWfXlijAn8ykJ0u0YNHhxT8QuBGh23xVg/eu80RMaOpvPk1HFhR5FsdsIbb+AO7uzvRlQyoAXzugU1DpfJJVcAqSQ3gH465rnC1QmV6Sd0XE5JhA38V8EUE1bqkUnqgBHtOJeRdKEAP6IFIk+iBSJmkSQ/0X0LMlHg/X5WYLVw2zlORmM2eOcKMYzcTs6Kxkpv0NnCXm9skZhF8Sol1FSv+D4tcByyOYLagxEq8fTKi/+8eEuQrgMsclvZkJO5+mgY+lpRABmXLTUkdpz0NjODTBFw1SlEFVcoGJR8CNzvl+Ql4NCAtfVwMXDQg5CrxqfSRJQqdSx8RfFp0Uglb6ZcKUXWKDuUNwBKntLjoFA1Iy31qEqiSoLdShyjVU1h81ynrXu7LJid8R1/LgHmxgdBPA1TmU51yvlNSvtAad1/xPy1xq355OXBe1QuspLVrYolbdZpMVFitVuKOBsjf85oLZwDXAnKvXogO4huxtNiohEWZWHPBuU+nto7ufnENlUlE7CYiAv0R8CzwdbLA5No6frEQghJ0FV7ThppcSeVvNdTU7ulWddBu6sZUQ+0t4Kccq9WH+nLSDbXEgG6tTL0l5QbiSVkrU6H3T9fKVOPMu4ZX0Z9WZmKE2pWqMoxMxFdynul/EzlVulW273OM6PTDCZ0HuZLcoS8/nPgfi4LibpuTuuoAAAAASUVORK5CYII=" /***/ }), /***/ 77: /***/ (function(module, exports) { module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC8AAAAuCAYAAAC4e0AJAAAHTklEQVRoQ9Vab4wkVRGv6tfdM90zvfPP3dub81gOb2/1cgdB7/Q4IBBPQowXcvoBNkgwBvwbE09BY6KJCxhEwQRDhG9HEP2K6JeLf2IiImDkxMjBoatBArreze3O9HTP9HRPvy7zxumxt3d2t3tn9w5fMsnM63pVv6quV69e1SCMOObm5qTjx48XiEh88kEQaJIkqYjIAACJKGCMdV3XdbPZbMt1Xcu27fquXbs6I4oG3CiDRqNR4pxvR8RKH2gqVpzzliRJZ0ul0gIidlMt7hOnBr+wsDCuadqUsPJGBA5ZE0iStDA2NvYGInppeCYGT0R6o9GYAYDCagIymcw2xtgUIk4CgC7cBwA6nPMlInrTdd03giAY6i5ExInoH+Vy+S1EpCRKJALfarW2e543DQBSlCkiSpqmHWSMXc8Yex8AjK8jtEtEZ4IgeMFxnF/5vl8bQt84f/78menpaXc9BdYET0RoWdYM51xYcjAQUc7lckdlWb4FAJY9W09g5DnnnP+22+3+sNPpvB5dR0RiD5wul8vmWvxWBU9EUr1e34eI5SgDTdOuVFX1OCJekgLoWqRCiadbrdaJIAjaEUKxF04XCoWl1RYPBS8sfu7cuf2qqg6Ai4iSz+fvYIzNihC4ScCjbN5qt9v3eJ73t6gCzWbz5ampqfoweUNBmKY5HQTBjnCBoigZXdfnEPHQFoCOsux4njfXbrd/H04Skd/pdP5YrVajb6X3eAX4s2fPblNV9T3hYkmSsoZhfAcRL99i4CF73/O8+9rt9jPhhDgTKpXKKUQMlu296I/5+flMpVI5KDZkfx4LhcK3EPHwBQIeivFc173LcZzT4QQivlksFv++KvjFxcW9kiRNhASGYdzGGLvjAgMPxS1alnUn57zRnyDXdV+cnJxsDRQKv9RqNUOW5feGrqSq6m5d1x8DgPAtXHAdiOg3pmnORfx/sVwuv7wC/NLSkgiL7wgfFAqFRxBx3wVHHBPouu7djuOcCqe73e6LExMT9mDDElGm0WiISNLbwJqmHchkMg9ebOBCPhG9Zprm5wa72fcXxsfH/zIAv7S0dAkiXhax+vcQUbhQ4vHCqx48frIFMztluO0GHSZKIiPenOG67hcdx/lzXxm/VCo9JyJPz9K1Wu2ALMu9LFFRlO25XO7HaQ+iTz1UB6v933xKYQAfuSoLx67RIKuOfp5xzn9uWdYDoSlEFKpWq+fFZUFpNBoiFPakGIZxM2Ns8JqS2m723pWneDGPcOsRHa69PAM4gg5EZDebzWMi8xR4JEn6Z6FQmMdms1nhnO+PuIw4kN6fFHRINwx8+Gz3Dhluv1GHPe/ceOByXffzjuOc6fk6olUsFk/h4uLiTkmS3hUKKhaLPwGA4maCD3ldu1+F2SM6VMaWZdaJRPm+/7Bt2z8N/b5cLj8rLL+Hc14Vk4wxwzCMnyXiFiNay/JR0owCcNPVGhw9lIVMiv3AOX/KsqxHIkZ+DqPxPZvNXprNZh/fSvAh74MzCtx1i5FYVPzAEvEe6/X6FQBQElw0TdubyWR+kJhjhDCp5cMlMgP40deXXRXWFEtEfzBN86shERG9dNHAH5hR4O50ll8JPuo2iqLsyuVyJ7bS8sLnj16lwU2HU/v8M5ZlfTPE1nOb2IYdMwyjt6PTjiRuc/U+FW790MaiDRE9ZZrm8g07JFQ+vVZ5