diff --git a/app/Database/migrations/2017_06_07_014930_create_settings_table.php b/app/Database/migrations/2017_06_07_014930_create_settings_table.php index 5c9deb50..b873c3e6 100644 --- a/app/Database/migrations/2017_06_07_014930_create_settings_table.php +++ b/app/Database/migrations/2017_06_07_014930_create_settings_table.php @@ -113,6 +113,15 @@ class CreateSettingsTable extends Migration 'description' => 'The units for fuel for display', ]); + $this->addSetting('units.temperature', [ + 'name' => 'Temperature Units', + 'group' => 'units', + 'value' => 'f', + 'type' => 'select', + 'options' => 'f=Fahrenheit,c=Celsius', + 'description' => 'The units for temperature', + ]); + /** * BIDS */ diff --git a/app/Support/Http.php b/app/Support/Http.php new file mode 100644 index 00000000..5f07ab45 --- /dev/null +++ b/app/Support/Http.php @@ -0,0 +1,32 @@ +request('GET', $uri, $opts); + + $body = $response->getBody()->getContents(); + if ($response->getHeader('content-type') === 'application/json') { + $body = \GuzzleHttp\json_decode($body); + } + + return $body; + } +} diff --git a/app/Widgets/CheckWx.php b/app/Widgets/CheckWx.php new file mode 100644 index 00000000..cdd498d8 --- /dev/null +++ b/app/Widgets/CheckWx.php @@ -0,0 +1,52 @@ + null, + ]; + + /** + * Attempt to get the data from the CheckWX API + */ + public function run() + { + if (!config('checkwx.api_key')) { + $data = null; + } else { + $url = config('checkwx.url').'/metar/'.$this->config['icao'].'/decoded'; + $data = Http::get($url, [ + 'headers' => [ + 'X-API-Key' => config('checkwx.api_key'), + 'content-type' => 'application/json', + ] + ]); + + $data = json_decode($data); + #dd($data); + + if($data->results === 1) { + $data = $data->data[0]; + } else { + $data = null; + } + } + + return view('widgets.check_wx', [ + 'config' => $this->config, + 'data' => $data, + 'unit_alt' => setting('units.altitude'), + 'unit_dist' => setting('units.distance'), + 'unit_temp' => setting('units.temperature'), + ]); + } +} diff --git a/app/helpers.php b/app/helpers.php index c32b029b..872c3884 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -195,3 +195,29 @@ if (!function_exists('show_date')) { return $date->timezone($timezone)->toFormattedDateString(); } } + +if (!function_exists('_fmt')) { + /** + * Replace strings + * @param $line "Hi, my name is :name" + * @param array $replace ['name' => 'Nabeel'] + * @return mixed + */ + function _fmt($line, array $replace) + { + if (empty($replace)) { + return $line; + } + + foreach ($replace as $key => $value) { + $key = strtolower($key); + $line = str_replace( + [':'.$key], + [$value], + $line + ); + } + + return $line; + } +} diff --git a/config/checkwx.php b/config/checkwx.php new file mode 100644 index 00000000..61d552d5 --- /dev/null +++ b/config/checkwx.php @@ -0,0 +1,10 @@ + 'https://api.checkwx.com', + 'api_key' => false, +]; diff --git a/config/map.php b/config/map.php new file mode 100644 index 00000000..3c4e8961 --- /dev/null +++ b/config/map.php @@ -0,0 +1,16 @@ + [ + 'url' => 'https://ogcie.iblsoft.com/observations?', + 'params' => [ + 'layers' => 'metar' + ], + ], +]; diff --git a/config/phpvms.php b/config/phpvms.php index 6e0ef329..ec4820d6 100644 --- a/config/phpvms.php +++ b/config/phpvms.php @@ -34,12 +34,6 @@ return [ */ 'vacentral_api_url' => 'https://api.vacentral.net', - /** - * For METAR features, register for an API key at - * https://www.checkwx.com - */ - 'checkwx_api_key' => env('CHECKWX_API_KEY', false), - /** * Misc Settings */ diff --git a/public/assets/admin/js/app.js b/public/assets/admin/js/app.js index 39c9c194..4ffe4504 100644 --- a/public/assets/admin/js/app.js +++ b/public/assets/admin/js/app.js @@ -318,7 +318,7 @@ eval("/**\n * Bootstrap any Javascript libraries required\n */\n\nwindow.axios = /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpack_require__(\"./resources/js/maps/base_map.js\");\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n\n\n/**\n * Render a map with the airspace, etc around a given set of coords\n * e.g, the airport map\n * @param opts\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n opts = Object.assign({\n render_elem: 'map',\n overlay_elem: '',\n lat: 0,\n lon: 0,\n zoom: 12,\n layers: [],\n set_marker: true\n }, opts);\n\n var map = Object(__WEBPACK_IMPORTED_MODULE_0__base_map__[\"a\" /* default */])(opts);\n var coords = [opts.lat, opts.lon];\n console.log('Applying coords', coords);\n\n map.setView(coords, opts.zoom);\n if (opts.set_marker === true) {\n leaflet.marker(coords).addTo(map);\n }\n\n return map;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9haXJzcGFjZV9tYXAuanM/NGZiMCJdLCJuYW1lcyI6WyJsZWFmbGV0IiwicmVxdWlyZSIsIm9wdHMiLCJPYmplY3QiLCJhc3NpZ24iLCJyZW5kZXJfZWxlbSIsIm92ZXJsYXlfZWxlbSIsImxhdCIsImxvbiIsInpvb20iLCJsYXllcnMiLCJzZXRfbWFya2VyIiwibWFwIiwiZHJhd19iYXNlX21hcCIsImNvb3JkcyIsImNvbnNvbGUiLCJsb2ciLCJzZXRWaWV3IiwibWFya2VyIiwiYWRkVG8iXSwibWFwcGluZ3MiOiI7O0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQTs7QUFFQTs7Ozs7QUFLQSx5REFBZSxVQUFDQyxJQUFELEVBQVU7QUFDdkJBLFNBQU9DLE9BQU9DLE1BQVAsQ0FBYztBQUNuQkMsaUJBQWEsS0FETTtBQUVuQkMsa0JBQWMsRUFGSztBQUduQkMsU0FBSyxDQUhjO0FBSW5CQyxTQUFLLENBSmM7QUFLbkJDLFVBQU0sRUFMYTtBQU1uQkMsWUFBUSxFQU5XO0FBT25CQyxnQkFBWTtBQVBPLEdBQWQsRUFRSlQsSUFSSSxDQUFQOztBQVVBLE1BQUlVLE1BQU0sa0VBQUFDLENBQWNYLElBQWQsQ0FBVjtBQUNBLE1BQU1ZLFNBQVMsQ0FBQ1osS0FBS0ssR0FBTixFQUFXTCxLQUFLTSxHQUFoQixDQUFmO0FBQ0FPLFVBQVFDLEdBQVIsQ0FBWSxpQkFBWixFQUErQkYsTUFBL0I7O0FBRUFGLE1BQUlLLE9BQUosQ0FBWUgsTUFBWixFQUFvQlosS0FBS08sSUFBekI7QUFDQSxNQUFJUCxLQUFLUyxVQUFMLEtBQW9CLElBQXhCLEVBQThCO0FBQzVCWCxZQUFRa0IsTUFBUixDQUFlSixNQUFmLEVBQXVCSyxLQUF2QixDQUE2QlAsR0FBN0I7QUFDRDs7QUFFRCxTQUFPQSxHQUFQO0FBQ0QsQ0FyQkQiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvbWFwcy9haXJzcGFjZV9tYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmNvbnN0IGxlYWZsZXQgPSByZXF1aXJlKCdsZWFmbGV0Jyk7XG5cbmltcG9ydCBkcmF3X2Jhc2VfbWFwIGZyb20gJy4vYmFzZV9tYXAnXG5cbi8qKlxuICogUmVuZGVyIGEgbWFwIHdpdGggdGhlIGFpcnNwYWNlLCBldGMgYXJvdW5kIGEgZ2l2ZW4gc2V0IG9mIGNvb3Jkc1xuICogZS5nLCB0aGUgYWlycG9ydCBtYXBcbiAqIEBwYXJhbSBvcHRzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IChvcHRzKSA9PiB7XG4gIG9wdHMgPSBPYmplY3QuYXNzaWduKHtcbiAgICByZW5kZXJfZWxlbTogJ21hcCcsXG4gICAgb3ZlcmxheV9lbGVtOiAnJyxcbiAgICBsYXQ6IDAsXG4gICAgbG9uOiAwLFxuICAgIHpvb206IDEyLFxuICAgIGxheWVyczogW10sXG4gICAgc2V0X21hcmtlcjogdHJ1ZSxcbiAgfSwgb3B0cyk7XG5cbiAgbGV0IG1hcCA9IGRyYXdfYmFzZV9tYXAob3B0cylcbiAgY29uc3QgY29vcmRzID0gW29wdHMubGF0LCBvcHRzLmxvbl1cbiAgY29uc29sZS5sb2coJ0FwcGx5aW5nIGNvb3JkcycsIGNvb3JkcylcblxuICBtYXAuc2V0Vmlldyhjb29yZHMsIG9wdHMuem9vbSlcbiAgaWYgKG9wdHMuc2V0X21hcmtlciA9PT0gdHJ1ZSkge1xuICAgIGxlYWZsZXQubWFya2VyKGNvb3JkcykuYWRkVG8obWFwKVxuICB9XG5cbiAgcmV0dXJuIG1hcFxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9tYXBzL2FpcnNwYWNlX21hcC5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/maps/airspace_map.js\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpack_require__(\"./resources/js/maps/base_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helpers__ = __webpack_require__(\"./resources/js/maps/helpers.js\");\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n\n\n\n/**\n * Render a map with the airspace, etc around a given set of coords\n * e.g, the airport map\n * @param opts\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n opts = Object.assign({\n render_elem: 'map',\n overlay_elem: '',\n lat: 0,\n lon: 0,\n zoom: 12,\n layers: [],\n set_marker: true,\n marker_popup: '',\n\n // Passed from the config/maps.php file\n metar_wms: {\n url: '',\n params: {}\n }\n }, opts);\n\n var map = Object(__WEBPACK_IMPORTED_MODULE_0__base_map__[\"a\" /* default */])(opts);\n var coords = [opts.lat, opts.lon];\n console.log('Applying coords', coords);\n\n map.setView(coords, opts.zoom);\n if (opts.set_marker === true) {\n leaflet.marker(coords).addTo(map).bindPopup(opts.marker_popup);\n }\n\n if (opts.metar_wms.url !== '') {\n Object(__WEBPACK_IMPORTED_MODULE_1__helpers__[\"a\" /* addWMSLayer */])(map, opts.metar_wms);\n }\n\n return map;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9haXJzcGFjZV9tYXAuanM/NGZiMCJdLCJuYW1lcyI6WyJsZWFmbGV0IiwicmVxdWlyZSIsIm9wdHMiLCJPYmplY3QiLCJhc3NpZ24iLCJyZW5kZXJfZWxlbSIsIm92ZXJsYXlfZWxlbSIsImxhdCIsImxvbiIsInpvb20iLCJsYXllcnMiLCJzZXRfbWFya2VyIiwibWFya2VyX3BvcHVwIiwibWV0YXJfd21zIiwidXJsIiwicGFyYW1zIiwibWFwIiwiZHJhd19iYXNlX21hcCIsImNvb3JkcyIsImNvbnNvbGUiLCJsb2ciLCJzZXRWaWV3IiwibWFya2VyIiwiYWRkVG8iLCJiaW5kUG9wdXAiLCJhZGRXTVNMYXllciJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQTtBQUNBOztBQUVBOzs7OztBQUtBLHlEQUFlLFVBQUNDLElBQUQsRUFBVTtBQUN2QkEsU0FBT0MsT0FBT0MsTUFBUCxDQUFjO0FBQ25CQyxpQkFBYSxLQURNO0FBRW5CQyxrQkFBYyxFQUZLO0FBR25CQyxTQUFLLENBSGM7QUFJbkJDLFNBQUssQ0FKYztBQUtuQkMsVUFBTSxFQUxhO0FBTW5CQyxZQUFRLEVBTlc7QUFPbkJDLGdCQUFZLElBUE87QUFRbkJDLGtCQUFjLEVBUks7O0FBVW5CO0FBQ0FDLGVBQVc7QUFDUEMsV0FBSyxFQURFO0FBRVBDLGNBQVE7QUFGRDtBQVhRLEdBQWQsRUFlSmIsSUFmSSxDQUFQOztBQWlCQSxNQUFJYyxNQUFNLGtFQUFBQyxDQUFjZixJQUFkLENBQVY7QUFDQSxNQUFNZ0IsU0FBUyxDQUFDaEIsS0FBS0ssR0FBTixFQUFXTCxLQUFLTSxHQUFoQixDQUFmO0FBQ0FXLFVBQVFDLEdBQVIsQ0FBWSxpQkFBWixFQUErQkYsTUFBL0I7O0FBRUFGLE1BQUlLLE9BQUosQ0FBWUgsTUFBWixFQUFvQmhCLEtBQUtPLElBQXpCO0FBQ0EsTUFBSVAsS0FBS1MsVUFBTCxLQUFvQixJQUF4QixFQUE4QjtBQUM1QlgsWUFBUXNCLE1BQVIsQ0FBZUosTUFBZixFQUF1QkssS0FBdkIsQ0FBNkJQLEdBQTdCLEVBQWtDUSxTQUFsQyxDQUE0Q3RCLEtBQUtVLFlBQWpEO0FBQ0Q7O0FBRUQsTUFBR1YsS0FBS1csU0FBTCxDQUFlQyxHQUFmLEtBQXVCLEVBQTFCLEVBQThCO0FBQzFCVyxJQUFBLHFFQUFBQSxDQUFZVCxHQUFaLEVBQWlCZCxLQUFLVyxTQUF0QjtBQUNIOztBQUVELFNBQU9HLEdBQVA7QUFDRCxDQWhDRCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL2FpcnNwYWNlX21hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuY29uc3QgbGVhZmxldCA9IHJlcXVpcmUoJ2xlYWZsZXQnKTtcblxuaW1wb3J0IGRyYXdfYmFzZV9tYXAgZnJvbSAnLi9iYXNlX21hcCdcbmltcG9ydCB7IGFkZFdNU0xheWVyIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuLyoqXG4gKiBSZW5kZXIgYSBtYXAgd2l0aCB0aGUgYWlyc3BhY2UsIGV0YyBhcm91bmQgYSBnaXZlbiBzZXQgb2YgY29vcmRzXG4gKiBlLmcsIHRoZSBhaXJwb3J0IG1hcFxuICogQHBhcmFtIG9wdHNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgKG9wdHMpID0+IHtcbiAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHJlbmRlcl9lbGVtOiAnbWFwJyxcbiAgICBvdmVybGF5X2VsZW06ICcnLFxuICAgIGxhdDogMCxcbiAgICBsb246IDAsXG4gICAgem9vbTogMTIsXG4gICAgbGF5ZXJzOiBbXSxcbiAgICBzZXRfbWFya2VyOiB0cnVlLFxuICAgIG1hcmtlcl9wb3B1cDogJycsXG5cbiAgICAvLyBQYXNzZWQgZnJvbSB0aGUgY29uZmlnL21hcHMucGhwIGZpbGVcbiAgICBtZXRhcl93bXM6IHtcbiAgICAgICAgdXJsOiAnJyxcbiAgICAgICAgcGFyYW1zOiB7fVxuICAgIH0sXG4gIH0sIG9wdHMpO1xuXG4gIGxldCBtYXAgPSBkcmF3X2Jhc2VfbWFwKG9wdHMpO1xuICBjb25zdCBjb29yZHMgPSBbb3B0cy5sYXQsIG9wdHMubG9uXTtcbiAgY29uc29sZS5sb2coJ0FwcGx5aW5nIGNvb3JkcycsIGNvb3Jkcyk7XG5cbiAgbWFwLnNldFZpZXcoY29vcmRzLCBvcHRzLnpvb20pO1xuICBpZiAob3B0cy5zZXRfbWFya2VyID09PSB0cnVlKSB7XG4gICAgbGVhZmxldC5tYXJrZXIoY29vcmRzKS5hZGRUbyhtYXApLmJpbmRQb3B1cChvcHRzLm1hcmtlcl9wb3B1cCk7XG4gIH1cblxuICBpZihvcHRzLm1ldGFyX3dtcy51cmwgIT09ICcnKSB7XG4gICAgICBhZGRXTVNMYXllcihtYXAsIG9wdHMubWV0YXJfd21zKTtcbiAgfVxuXG4gIHJldHVybiBtYXA7XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL21hcHMvYWlyc3BhY2VfbWFwLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/maps/airspace_map.js\n"); /***/ }), @@ -326,7 +326,7 @@ eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpa /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n\n opts = Object.assign({\n render_elem: 'map',\n center: [29.98139, -95.33374],\n zoom: 5,\n maxZoom: 10,\n layers: [],\n set_marker: false\n }, opts);\n\n var feature_groups = [];\n /*var openaip_airspace_labels = new leaflet.TileLayer.WMS(\n \"http://{s}.tile.maps.openaip.net/geowebcache/service/wms\", {\n maxZoom: 14,\n minZoom: 12,\n layers: 'openaip_approved_airspaces_labels',\n tileSize: 1024,\n detectRetina: true,\n subdomains: '12',\n format: 'image/png',\n transparent: true\n });\n openaip_airspace_labels.addTo(map);*/\n\n var opencyclemap_phys_osm = new leaflet.TileLayer('http://{s}.tile.thunderforest.com/landscape/{z}/{x}/{y}.png?apikey=f09a38fa87514de4890fc96e7fe8ecb1', {\n maxZoom: 14,\n minZoom: 4,\n format: 'image/png',\n transparent: true\n });\n\n feature_groups.push(opencyclemap_phys_osm);\n\n /*const openaip_cached_basemap = new leaflet.TileLayer(\"http://{s}.tile.maps.openaip.net/geowebcache/service/tms/1.0.0/openaip_basemap@EPSG%3A900913@png/{z}/{x}/{y}.png\", {\n maxZoom: 14,\n minZoom: 4,\n tms: true,\n detectRetina: true,\n subdomains: '12',\n format: 'image/png',\n transparent: true\n });\n feature_groups.push(openaip_cached_basemap);\n */\n\n var openaip_basemap_phys_osm = leaflet.featureGroup(feature_groups);\n\n var map = leaflet.map('map', {\n layers: [openaip_basemap_phys_osm],\n center: opts.center,\n zoom: opts.zoom,\n scrollWheelZoom: false\n });\n\n var attrib = leaflet.control.attribution({ position: 'bottomleft' });\n attrib.addAttribution('Thunderforest');\n attrib.addAttribution('openAIP');\n attrib.addAttribution('OpenStreetMap contributors');\n attrib.addAttribution('OpenWeatherMap');\n\n attrib.addTo(map);\n\n return map;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9iYXNlX21hcC5qcz80MzA3Il0sIm5hbWVzIjpbImxlYWZsZXQiLCJyZXF1aXJlIiwib3B0cyIsIk9iamVjdCIsImFzc2lnbiIsInJlbmRlcl9lbGVtIiwiY2VudGVyIiwiem9vbSIsIm1heFpvb20iLCJsYXllcnMiLCJzZXRfbWFya2VyIiwiZmVhdHVyZV9ncm91cHMiLCJvcGVuY3ljbGVtYXBfcGh5c19vc20iLCJUaWxlTGF5ZXIiLCJtaW5ab29tIiwiZm9ybWF0IiwidHJhbnNwYXJlbnQiLCJwdXNoIiwib3BlbmFpcF9iYXNlbWFwX3BoeXNfb3NtIiwiZmVhdHVyZUdyb3VwIiwibWFwIiwic2Nyb2xsV2hlZWxab29tIiwiYXR0cmliIiwiY29udHJvbCIsImF0dHJpYnV0aW9uIiwicG9zaXRpb24iLCJhZGRBdHRyaWJ1dGlvbiIsImFkZFRvIl0sIm1hcHBpbmdzIjoiO0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQSx5REFBZSxVQUFDQyxJQUFELEVBQVU7O0FBRXZCQSxTQUFPQyxPQUFPQyxNQUFQLENBQWM7QUFDbkJDLGlCQUFhLEtBRE07QUFFbkJDLFlBQVEsQ0FBQyxRQUFELEVBQVcsQ0FBQyxRQUFaLENBRlc7QUFHbkJDLFVBQU0sQ0FIYTtBQUluQkMsYUFBUyxFQUpVO0FBS25CQyxZQUFRLEVBTFc7QUFNbkJDLGdCQUFZO0FBTk8sR0FBZCxFQU9KUixJQVBJLENBQVA7O0FBU0EsTUFBSVMsaUJBQWlCLEVBQXJCO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUFjQSxNQUFNQyx3QkFBd0IsSUFBSVosUUFBUWEsU0FBWixDQUM1QixxR0FENEIsRUFDMkU7QUFDckdMLGFBQVMsRUFENEY7QUFFckdNLGFBQVMsQ0FGNEY7QUFHckdDLFlBQVEsV0FINkY7QUFJckdDLGlCQUFhO0FBSndGLEdBRDNFLENBQTlCOztBQVFBTCxpQkFBZU0sSUFBZixDQUFvQkwscUJBQXBCOztBQUVBOzs7Ozs7Ozs7Ozs7QUFhQSxNQUFNTSwyQkFBMkJsQixRQUFRbUIsWUFBUixDQUFxQlIsY0FBckIsQ0FBakM7O0FBRUEsTUFBSVMsTUFBTXBCLFFBQVFvQixHQUFSLENBQVksS0FBWixFQUFtQjtBQUMzQlgsWUFBUSxDQUFDUyx3QkFBRCxDQURtQjtBQUUzQlosWUFBUUosS0FBS0ksTUFGYztBQUczQkMsVUFBTUwsS0FBS0ssSUFIZ0I7QUFJM0JjLHFCQUFpQjtBQUpVLEdBQW5CLENBQVY7O0FBT0EsTUFBTUMsU0FBU3RCLFFBQVF1QixPQUFSLENBQWdCQyxXQUFoQixDQUE0QixFQUFDQyxVQUFVLFlBQVgsRUFBNUIsQ0FBZjtBQUNBSCxTQUFPSSxjQUFQLENBQXNCLG9GQUF0QjtBQUNBSixTQUFPSSxjQUFQLENBQXNCLHdFQUF0QjtBQUNBSixTQUFPSSxjQUFQLENBQXNCLDJHQUF0QjtBQUNBSixTQUFPSSxjQUFQLENBQXNCLHNGQUF0Qjs7QUFFQUosU0FBT0ssS0FBUCxDQUFhUCxHQUFiOztBQUVBLFNBQU9BLEdBQVA7QUFDRCxDQW5FRCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL2Jhc2VfbWFwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG5jb25zdCBsZWFmbGV0ID0gcmVxdWlyZSgnbGVhZmxldCcpO1xuXG5leHBvcnQgZGVmYXVsdCAob3B0cykgPT4ge1xuXG4gIG9wdHMgPSBPYmplY3QuYXNzaWduKHtcbiAgICByZW5kZXJfZWxlbTogJ21hcCcsXG4gICAgY2VudGVyOiBbMjkuOTgxMzksIC05NS4zMzM3NF0sXG4gICAgem9vbTogNSxcbiAgICBtYXhab29tOiAxMCxcbiAgICBsYXllcnM6IFtdLFxuICAgIHNldF9tYXJrZXI6IGZhbHNlLFxuICB9LCBvcHRzKTtcblxuICBsZXQgZmVhdHVyZV9ncm91cHMgPSBbXTtcbiAgLyp2YXIgb3BlbmFpcF9haXJzcGFjZV9sYWJlbHMgPSBuZXcgbGVhZmxldC5UaWxlTGF5ZXIuV01TKFxuICAgICAgXCJodHRwOi8ve3N9LnRpbGUubWFwcy5vcGVuYWlwLm5ldC9nZW93ZWJjYWNoZS9zZXJ2aWNlL3dtc1wiLCB7XG4gICAgICAgICAgbWF4Wm9vbTogMTQsXG4gICAgICAgICAgbWluWm9vbTogMTIsXG4gICAgICAgICAgbGF5ZXJzOiAnb3BlbmFpcF9hcHByb3ZlZF9haXJzcGFjZXNfbGFiZWxzJyxcbiAgICAgICAgICB0aWxlU2l6ZTogMTAyNCxcbiAgICAgICAgICBkZXRlY3RSZXRpbmE6IHRydWUsXG4gICAgICAgICAgc3ViZG9tYWluczogJzEyJyxcbiAgICAgICAgICBmb3JtYXQ6ICdpbWFnZS9wbmcnLFxuICAgICAgICAgIHRyYW5zcGFyZW50OiB0cnVlXG4gICAgICB9KTtcblxuICBvcGVuYWlwX2FpcnNwYWNlX2xhYmVscy5hZGRUbyhtYXApOyovXG5cbiAgY29uc3Qgb3BlbmN5Y2xlbWFwX3BoeXNfb3NtID0gbmV3IGxlYWZsZXQuVGlsZUxheWVyKFxuICAgICdodHRwOi8ve3N9LnRpbGUudGh1bmRlcmZvcmVzdC5jb20vbGFuZHNjYXBlL3t6fS97eH0ve3l9LnBuZz9hcGlrZXk9ZjA5YTM4ZmE4NzUxNGRlNDg5MGZjOTZlN2ZlOGVjYjEnLCB7XG4gICAgICBtYXhab29tOiAxNCxcbiAgICAgIG1pblpvb206IDQsXG4gICAgICBmb3JtYXQ6ICdpbWFnZS9wbmcnLFxuICAgICAgdHJhbnNwYXJlbnQ6IHRydWVcbiAgICB9KVxuXG4gIGZlYXR1cmVfZ3JvdXBzLnB1c2gob3BlbmN5Y2xlbWFwX3BoeXNfb3NtKVxuXG4gIC8qY29uc3Qgb3BlbmFpcF9jYWNoZWRfYmFzZW1hcCA9IG5ldyBsZWFmbGV0LlRpbGVMYXllcihcImh0dHA6Ly97c30udGlsZS5tYXBzLm9wZW5haXAubmV0L2dlb3dlYmNhY2hlL3NlcnZpY2UvdG1zLzEuMC4wL29wZW5haXBfYmFzZW1hcEBFUFNHJTNBOTAwOTEzQHBuZy97en0ve3h9L3t5fS5wbmdcIiwge1xuICAgICAgbWF4Wm9vbTogMTQsXG4gICAgICBtaW5ab29tOiA0LFxuICAgICAgdG1zOiB0cnVlLFxuICAgICAgZGV0ZWN0UmV0aW5hOiB0cnVlLFxuICAgICAgc3ViZG9tYWluczogJzEyJyxcbiAgICAgIGZvcm1hdDogJ2ltYWdlL3BuZycsXG4gICAgICB0cmFuc3BhcmVudDogdHJ1ZVxuICB9KTtcblxuICBmZWF0dXJlX2dyb3Vwcy5wdXNoKG9wZW5haXBfY2FjaGVkX2Jhc2VtYXApO1xuICAqL1xuXG4gIGNvbnN0IG9wZW5haXBfYmFzZW1hcF9waHlzX29zbSA9IGxlYWZsZXQuZmVhdHVyZUdyb3VwKGZlYXR1cmVfZ3JvdXBzKVxuXG4gIGxldCBtYXAgPSBsZWFmbGV0Lm1hcCgnbWFwJywge1xuICAgIGxheWVyczogW29wZW5haXBfYmFzZW1hcF9waHlzX29zbV0sXG4gICAgY2VudGVyOiBvcHRzLmNlbnRlcixcbiAgICB6b29tOiBvcHRzLnpvb20sXG4gICAgc2Nyb2xsV2hlZWxab29tOiBmYWxzZSxcbiAgfSlcblxuICBjb25zdCBhdHRyaWIgPSBsZWFmbGV0LmNvbnRyb2wuYXR0cmlidXRpb24oe3Bvc2l0aW9uOiAnYm90dG9tbGVmdCd9KVxuICBhdHRyaWIuYWRkQXR0cmlidXRpb24oJzxhIGhyZWY9XCJodHRwczovL3d3dy50aHVuZGVyZm9yZXN0LmNvbVwiIHRhcmdldD1cIl9ibGFua1wiIHN0eWxlPVwiXCI+VGh1bmRlcmZvcmVzdDwvYT4nKVxuICBhdHRyaWIuYWRkQXR0cmlidXRpb24oJzxhIGhyZWY9XCJodHRwczovL3d3dy5vcGVuYWlwLm5ldFwiIHRhcmdldD1cIl9ibGFua1wiIHN0eWxlPVwiXCI+b3BlbkFJUDwvYT4nKVxuICBhdHRyaWIuYWRkQXR0cmlidXRpb24oJzxhIGhyZWY9XCJodHRwczovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHRcIiB0YXJnZXQ9XCJfYmxhbmtcIiBzdHlsZT1cIlwiPk9wZW5TdHJlZXRNYXA8L2E+IGNvbnRyaWJ1dG9ycycpXG4gIGF0dHJpYi5hZGRBdHRyaWJ1dGlvbignPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm9wZW53ZWF0aGVybWFwLm9yZ1wiIHRhcmdldD1cIl9ibGFua1wiIHN0eWxlPVwiXCI+T3BlbldlYXRoZXJNYXA8L2E+JylcblxuICBhdHRyaWIuYWRkVG8obWFwKVxuXG4gIHJldHVybiBtYXBcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yZXNvdXJjZXMvanMvbWFwcy9iYXNlX21hcC5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/maps/base_map.js\n"); +eval("\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n\n opts = Object.assign({\n render_elem: 'map',\n center: [29.98139, -95.33374],\n zoom: 5,\n maxZoom: 10,\n layers: [],\n set_marker: false\n }, opts);\n\n var feature_groups = [];\n /*var openaip_airspace_labels = new leaflet.TileLayer.WMS(\n \"http://{s}.tile.maps.openaip.net/geowebcache/service/wms\", {\n maxZoom: 14,\n minZoom: 12,\n layers: 'openaip_approved_airspaces_labels',\n tileSize: 1024,\n detectRetina: true,\n subdomains: '12',\n format: 'image/png',\n transparent: true\n });\n openaip_airspace_labels.addTo(map);*/\n\n var opencyclemap_phys_osm = new leaflet.TileLayer('http://{s}.tile.thunderforest.com/landscape/{z}/{x}/{y}.png?apikey=f09a38fa87514de4890fc96e7fe8ecb1', {\n maxZoom: 14,\n minZoom: 4,\n format: 'image/png',\n transparent: true\n });\n\n feature_groups.push(opencyclemap_phys_osm);\n\n /*const openaip_cached_basemap = new leaflet.TileLayer(\"http://{s}.tile.maps.openaip.net/geowebcache/service/tms/1.0.0/openaip_basemap@EPSG%3A900913@png/{z}/{x}/{y}.png\", {\n maxZoom: 14,\n minZoom: 4,\n tms: true,\n detectRetina: true,\n subdomains: '12',\n format: 'image/png',\n transparent: true\n });\n feature_groups.push(openaip_cached_basemap);\n */\n\n var openaip_basemap_phys_osm = leaflet.featureGroup(feature_groups);\n\n var map = leaflet.map('map', {\n layers: [openaip_basemap_phys_osm],\n center: opts.center,\n zoom: opts.zoom,\n scrollWheelZoom: false\n });\n\n var attrib = leaflet.control.attribution({ position: 'bottomleft' });\n attrib.addAttribution('Thunderforest');\n attrib.addAttribution('openAIP');\n attrib.addAttribution('OpenStreetMap contributors');\n attrib.addAttribution('OpenWeatherMap');\n\n attrib.addTo(map);\n\n return map;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9iYXNlX21hcC5qcz80MzA3Il0sIm5hbWVzIjpbImxlYWZsZXQiLCJyZXF1aXJlIiwib3B0cyIsIk9iamVjdCIsImFzc2lnbiIsInJlbmRlcl9lbGVtIiwiY2VudGVyIiwiem9vbSIsIm1heFpvb20iLCJsYXllcnMiLCJzZXRfbWFya2VyIiwiZmVhdHVyZV9ncm91cHMiLCJvcGVuY3ljbGVtYXBfcGh5c19vc20iLCJUaWxlTGF5ZXIiLCJtaW5ab29tIiwiZm9ybWF0IiwidHJhbnNwYXJlbnQiLCJwdXNoIiwib3BlbmFpcF9iYXNlbWFwX3BoeXNfb3NtIiwiZmVhdHVyZUdyb3VwIiwibWFwIiwic2Nyb2xsV2hlZWxab29tIiwiYXR0cmliIiwiY29udHJvbCIsImF0dHJpYnV0aW9uIiwicG9zaXRpb24iLCJhZGRBdHRyaWJ1dGlvbiIsImFkZFRvIl0sIm1hcHBpbmdzIjoiO0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQSx5REFBZSxVQUFDQyxJQUFELEVBQVU7O0FBRXZCQSxTQUFPQyxPQUFPQyxNQUFQLENBQWM7QUFDbkJDLGlCQUFhLEtBRE07QUFFbkJDLFlBQVEsQ0FBQyxRQUFELEVBQVcsQ0FBQyxRQUFaLENBRlc7QUFHbkJDLFVBQU0sQ0FIYTtBQUluQkMsYUFBUyxFQUpVO0FBS25CQyxZQUFRLEVBTFc7QUFNbkJDLGdCQUFZO0FBTk8sR0FBZCxFQU9KUixJQVBJLENBQVA7O0FBU0EsTUFBSVMsaUJBQWlCLEVBQXJCO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUFjQSxNQUFNQyx3QkFBd0IsSUFBSVosUUFBUWEsU0FBWixDQUM1QixxR0FENEIsRUFDMkU7QUFDckdMLGFBQVMsRUFENEY7QUFFckdNLGFBQVMsQ0FGNEY7QUFHckdDLFlBQVEsV0FINkY7QUFJckdDLGlCQUFhO0FBSndGLEdBRDNFLENBQTlCOztBQVFBTCxpQkFBZU0sSUFBZixDQUFvQkwscUJBQXBCOztBQUVBOzs7Ozs7Ozs7Ozs7QUFhQSxNQUFNTSwyQkFBMkJsQixRQUFRbUIsWUFBUixDQUFxQlIsY0FBckIsQ0FBakM7O0FBRUEsTUFBSVMsTUFBTXBCLFFBQVFvQixHQUFSLENBQVksS0FBWixFQUFtQjtBQUMzQlgsWUFBUSxDQUFDUyx3QkFBRCxDQURtQjtBQUUzQlosWUFBUUosS0FBS0ksTUFGYztBQUczQkMsVUFBTUwsS0FBS0ssSUFIZ0I7QUFJM0JjLHFCQUFpQjtBQUpVLEdBQW5CLENBQVY7O0FBT0EsTUFBTUMsU0FBU3RCLFFBQVF1QixPQUFSLENBQWdCQyxXQUFoQixDQUE0QixFQUFDQyxVQUFVLFlBQVgsRUFBNUIsQ0FBZjtBQUNBSCxTQUFPSSxjQUFQLENBQXNCLG9GQUF0QjtBQUNBSixTQUFPSSxjQUFQLENBQXNCLHdFQUF0QjtBQUNBSixTQUFPSSxjQUFQLENBQXNCLDJHQUF0QjtBQUNBSixTQUFPSSxjQUFQLENBQXNCLHNGQUF0Qjs7QUFFQUosU0FBT0ssS0FBUCxDQUFhUCxHQUFiOztBQUVBLFNBQU9BLEdBQVA7QUFDRCxDQW5FRCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL2Jhc2VfbWFwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG5jb25zdCBsZWFmbGV0ID0gcmVxdWlyZSgnbGVhZmxldCcpO1xuXG5leHBvcnQgZGVmYXVsdCAob3B0cykgPT4ge1xuXG4gIG9wdHMgPSBPYmplY3QuYXNzaWduKHtcbiAgICByZW5kZXJfZWxlbTogJ21hcCcsXG4gICAgY2VudGVyOiBbMjkuOTgxMzksIC05NS4zMzM3NF0sXG4gICAgem9vbTogNSxcbiAgICBtYXhab29tOiAxMCxcbiAgICBsYXllcnM6IFtdLFxuICAgIHNldF9tYXJrZXI6IGZhbHNlLFxuICB9LCBvcHRzKTtcblxuICBsZXQgZmVhdHVyZV9ncm91cHMgPSBbXTtcbiAgLyp2YXIgb3BlbmFpcF9haXJzcGFjZV9sYWJlbHMgPSBuZXcgbGVhZmxldC5UaWxlTGF5ZXIuV01TKFxuICAgICAgXCJodHRwOi8ve3N9LnRpbGUubWFwcy5vcGVuYWlwLm5ldC9nZW93ZWJjYWNoZS9zZXJ2aWNlL3dtc1wiLCB7XG4gICAgICAgICAgbWF4Wm9vbTogMTQsXG4gICAgICAgICAgbWluWm9vbTogMTIsXG4gICAgICAgICAgbGF5ZXJzOiAnb3BlbmFpcF9hcHByb3ZlZF9haXJzcGFjZXNfbGFiZWxzJyxcbiAgICAgICAgICB0aWxlU2l6ZTogMTAyNCxcbiAgICAgICAgICBkZXRlY3RSZXRpbmE6IHRydWUsXG4gICAgICAgICAgc3ViZG9tYWluczogJzEyJyxcbiAgICAgICAgICBmb3JtYXQ6ICdpbWFnZS9wbmcnLFxuICAgICAgICAgIHRyYW5zcGFyZW50OiB0cnVlXG4gICAgICB9KTtcblxuICBvcGVuYWlwX2FpcnNwYWNlX2xhYmVscy5hZGRUbyhtYXApOyovXG5cbiAgY29uc3Qgb3BlbmN5Y2xlbWFwX3BoeXNfb3NtID0gbmV3IGxlYWZsZXQuVGlsZUxheWVyKFxuICAgICdodHRwOi8ve3N9LnRpbGUudGh1bmRlcmZvcmVzdC5jb20vbGFuZHNjYXBlL3t6fS97eH0ve3l9LnBuZz9hcGlrZXk9ZjA5YTM4ZmE4NzUxNGRlNDg5MGZjOTZlN2ZlOGVjYjEnLCB7XG4gICAgICBtYXhab29tOiAxNCxcbiAgICAgIG1pblpvb206IDQsXG4gICAgICBmb3JtYXQ6ICdpbWFnZS9wbmcnLFxuICAgICAgdHJhbnNwYXJlbnQ6IHRydWVcbiAgICB9KVxuXG4gIGZlYXR1cmVfZ3JvdXBzLnB1c2gob3BlbmN5Y2xlbWFwX3BoeXNfb3NtKVxuXG4gIC8qY29uc3Qgb3BlbmFpcF9jYWNoZWRfYmFzZW1hcCA9IG5ldyBsZWFmbGV0LlRpbGVMYXllcihcImh0dHA6Ly97c30udGlsZS5tYXBzLm9wZW5haXAubmV0L2dlb3dlYmNhY2hlL3NlcnZpY2UvdG1zLzEuMC4wL29wZW5haXBfYmFzZW1hcEBFUFNHJTNBOTAwOTEzQHBuZy97en0ve3h9L3t5fS5wbmdcIiwge1xuICAgICAgbWF4Wm9vbTogMTQsXG4gICAgICBtaW5ab29tOiA0LFxuICAgICAgdG1zOiB0cnVlLFxuICAgICAgZGV0ZWN0UmV0aW5hOiB0cnVlLFxuICAgICAgc3ViZG9tYWluczogJzEyJyxcbiAgICAgIGZvcm1hdDogJ2ltYWdlL3BuZycsXG4gICAgICB0cmFuc3BhcmVudDogdHJ1ZVxuICB9KTtcblxuICBmZWF0dXJlX2dyb3Vwcy5wdXNoKG9wZW5haXBfY2FjaGVkX2Jhc2VtYXApO1xuICAqL1xuXG4gIGNvbnN0IG9wZW5haXBfYmFzZW1hcF9waHlzX29zbSA9IGxlYWZsZXQuZmVhdHVyZUdyb3VwKGZlYXR1cmVfZ3JvdXBzKTtcblxuICBsZXQgbWFwID0gbGVhZmxldC5tYXAoJ21hcCcsIHtcbiAgICBsYXllcnM6IFtvcGVuYWlwX2Jhc2VtYXBfcGh5c19vc21dLFxuICAgIGNlbnRlcjogb3B0cy5jZW50ZXIsXG4gICAgem9vbTogb3B0cy56b29tLFxuICAgIHNjcm9sbFdoZWVsWm9vbTogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IGF0dHJpYiA9IGxlYWZsZXQuY29udHJvbC5hdHRyaWJ1dGlvbih7cG9zaXRpb246ICdib3R0b21sZWZ0J30pXG4gIGF0dHJpYi5hZGRBdHRyaWJ1dGlvbignPGEgaHJlZj1cImh0dHBzOi8vd3d3LnRodW5kZXJmb3Jlc3QuY29tXCIgdGFyZ2V0PVwiX2JsYW5rXCIgc3R5bGU9XCJcIj5UaHVuZGVyZm9yZXN0PC9hPicpXG4gIGF0dHJpYi5hZGRBdHRyaWJ1dGlvbignPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm9wZW5haXAubmV0XCIgdGFyZ2V0PVwiX2JsYW5rXCIgc3R5bGU9XCJcIj5vcGVuQUlQPC9hPicpXG4gIGF0dHJpYi5hZGRBdHRyaWJ1dGlvbignPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodFwiIHRhcmdldD1cIl9ibGFua1wiIHN0eWxlPVwiXCI+T3BlblN0cmVldE1hcDwvYT4gY29udHJpYnV0b3JzJylcbiAgYXR0cmliLmFkZEF0dHJpYnV0aW9uKCc8YSBocmVmPVwiaHR0cHM6Ly93d3cub3BlbndlYXRoZXJtYXAub3JnXCIgdGFyZ2V0PVwiX2JsYW5rXCIgc3R5bGU9XCJcIj5PcGVuV2VhdGhlck1hcDwvYT4nKVxuXG4gIGF0dHJpYi5hZGRUbyhtYXApXG5cbiAgcmV0dXJuIG1hcFxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9tYXBzL2Jhc2VfbWFwLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/maps/base_map.js\n"); /***/ }), @@ -338,6 +338,14 @@ eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, /***/ }), +/***/ "./resources/js/maps/helpers.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("/* harmony export (immutable) */ __webpack_exports__[\"a\"] = addWMSLayer;\n/* unused harmony export showFeaturePopup */\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n/**\n * Add a WMS layer to a map. opts must be:\n * {\n * url: '',\n * params: {}\n * }\n * @param map\n * @param opts\n */\nfunction addWMSLayer(map, opts) {\n\n if (opts.url === '') {\n return;\n }\n\n opts.params = Object.assign({\n format: 'image/png',\n transparent: true,\n maxZoom: 14,\n minZoom: 4\n }, opts.params);\n\n var mlayer = leaflet.tileLayer.wms(opts.url, opts.params);\n\n mlayer.addTo(map);\n\n return mlayer;\n}\n\n/**\n * Show a popup\n * @param feature\n * @param layer\n */\nfunction showFeaturePopup(feature, layer) {\n var popup_html = '';\n if (feature.properties && feature.properties.popup) {\n popup_html += feature.properties.popup;\n }\n\n layer.bindPopup(popup_html);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9oZWxwZXJzLmpzPzNjZDUiXSwibmFtZXMiOlsibGVhZmxldCIsInJlcXVpcmUiLCJhZGRXTVNMYXllciIsIm1hcCIsIm9wdHMiLCJ1cmwiLCJwYXJhbXMiLCJPYmplY3QiLCJhc3NpZ24iLCJmb3JtYXQiLCJ0cmFuc3BhcmVudCIsIm1heFpvb20iLCJtaW5ab29tIiwibWxheWVyIiwidGlsZUxheWVyIiwid21zIiwiYWRkVG8iLCJzaG93RmVhdHVyZVBvcHVwIiwiZmVhdHVyZSIsImxheWVyIiwicG9wdXBfaHRtbCIsInByb3BlcnRpZXMiLCJwb3B1cCIsImJpbmRQb3B1cCJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQTs7Ozs7Ozs7O0FBU08sU0FBU0MsV0FBVCxDQUFxQkMsR0FBckIsRUFBMEJDLElBQTFCLEVBQWdDOztBQUVuQyxRQUFHQSxLQUFLQyxHQUFMLEtBQWEsRUFBaEIsRUFBb0I7QUFDaEI7QUFDSDs7QUFFREQsU0FBS0UsTUFBTCxHQUFjQyxPQUFPQyxNQUFQLENBQWM7QUFDeEJDLGdCQUFRLFdBRGdCO0FBRXhCQyxxQkFBYSxJQUZXO0FBR3hCQyxpQkFBUyxFQUhlO0FBSXhCQyxpQkFBUztBQUplLEtBQWQsRUFLWFIsS0FBS0UsTUFMTSxDQUFkOztBQU9BLFFBQU1PLFNBQVNiLFFBQVFjLFNBQVIsQ0FBa0JDLEdBQWxCLENBQ1hYLEtBQUtDLEdBRE0sRUFDREQsS0FBS0UsTUFESixDQUFmOztBQUlBTyxXQUFPRyxLQUFQLENBQWFiLEdBQWI7O0FBRUEsV0FBT1UsTUFBUDtBQUNIOztBQUVEOzs7OztBQUtPLFNBQVNJLGdCQUFULENBQTBCQyxPQUExQixFQUFtQ0MsS0FBbkMsRUFBMEM7QUFDN0MsUUFBSUMsYUFBYSxFQUFqQjtBQUNBLFFBQUlGLFFBQVFHLFVBQVIsSUFBc0JILFFBQVFHLFVBQVIsQ0FBbUJDLEtBQTdDLEVBQW9EO0FBQ2hERixzQkFBY0YsUUFBUUcsVUFBUixDQUFtQkMsS0FBakM7QUFDSDs7QUFFREgsVUFBTUksU0FBTixDQUFnQkgsVUFBaEI7QUFDSCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL2hlbHBlcnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmNvbnN0IGxlYWZsZXQgPSByZXF1aXJlKCdsZWFmbGV0Jyk7XG5cbi8qKlxuICogQWRkIGEgV01TIGxheWVyIHRvIGEgbWFwLiBvcHRzIG11c3QgYmU6XG4gKiB7XG4gKiAgdXJsOiAnJyxcbiAqICBwYXJhbXM6IHt9XG4gKiAgfVxuICogQHBhcmFtIG1hcFxuICogQHBhcmFtIG9wdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFdNU0xheWVyKG1hcCwgb3B0cykge1xuXG4gICAgaWYob3B0cy51cmwgPT09ICcnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBvcHRzLnBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBmb3JtYXQ6ICdpbWFnZS9wbmcnLFxuICAgICAgICB0cmFuc3BhcmVudDogdHJ1ZSxcbiAgICAgICAgbWF4Wm9vbTogMTQsXG4gICAgICAgIG1pblpvb206IDQsXG4gICAgfSwgb3B0cy5wYXJhbXMpO1xuXG4gICAgY29uc3QgbWxheWVyID0gbGVhZmxldC50aWxlTGF5ZXIud21zKFxuICAgICAgICBvcHRzLnVybCwgb3B0cy5wYXJhbXNcbiAgICApO1xuXG4gICAgbWxheWVyLmFkZFRvKG1hcCk7XG5cbiAgICByZXR1cm4gbWxheWVyO1xufVxuXG4vKipcbiAqIFNob3cgYSBwb3B1cFxuICogQHBhcmFtIGZlYXR1cmVcbiAqIEBwYXJhbSBsYXllclxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvd0ZlYXR1cmVQb3B1cChmZWF0dXJlLCBsYXllcikge1xuICAgIGxldCBwb3B1cF9odG1sID0gJyc7XG4gICAgaWYgKGZlYXR1cmUucHJvcGVydGllcyAmJiBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXApIHtcbiAgICAgICAgcG9wdXBfaHRtbCArPSBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXBcbiAgICB9XG5cbiAgICBsYXllci5iaW5kUG9wdXAocG9wdXBfaHRtbClcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9tYXBzL2hlbHBlcnMuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/maps/helpers.js\n"); + +/***/ }), + /***/ "./resources/js/maps/index.js": /***/ (function(module, __webpack_exports__, __webpack_require__) { @@ -358,7 +366,7 @@ eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpa /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export onFeaturePointClick */\n/* unused harmony export pointToLayer */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpack_require__(\"./resources/js/maps/base_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__config__ = __webpack_require__(\"./resources/js/maps/config.js\");\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n\n\n\n/**\n * Show some popup text when a feature is clicked on\n * @param feature\n * @param layer\n */\nvar onFeaturePointClick = function onFeaturePointClick(feature, layer) {\n var popup_html = '';\n if (feature.properties && feature.properties.popup) {\n popup_html += feature.properties.popup;\n }\n\n layer.bindPopup(popup_html);\n};\n\n/**\n * Show each point as a marker\n * @param feature\n * @param latlng\n * @returns {*}\n */\nvar pointToLayer = function pointToLayer(feature, latlng) {\n return leaflet.circleMarker(latlng, {\n radius: 12,\n fillColor: '#ff7800',\n color: '#000',\n weight: 1,\n opacity: 1,\n fillOpacity: 0.8\n });\n};\n\n/**\n *\n * @param opts\n * @private\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n\n opts = Object.assign({\n route_points: null,\n planned_route_line: null,\n actual_route_points: null,\n actual_route_line: null,\n render_elem: 'map'\n }, opts);\n\n console.log(opts);\n\n var map = Object(__WEBPACK_IMPORTED_MODULE_0__base_map__[\"a\" /* default */])(opts);\n\n var geodesicLayer = leaflet.geodesic([], {\n weight: 7,\n opacity: 0.9,\n color: __WEBPACK_IMPORTED_MODULE_1__config__[\"b\" /* PLAN_ROUTE_COLOR */],\n steps: 50,\n wrap: false\n }).addTo(map);\n\n geodesicLayer.geoJson(opts.planned_route_line);\n\n try {\n map.fitBounds(geodesicLayer.getBounds());\n } catch (e) {\n console.log(e);\n }\n\n // Draw the route points after\n if (opts.route_points !== null) {\n var route_points = leaflet.geoJSON(opts.route_points, {\n onEachFeature: onFeaturePointClick,\n pointToLayer: pointToLayer,\n style: {\n 'color': __WEBPACK_IMPORTED_MODULE_1__config__[\"b\" /* PLAN_ROUTE_COLOR */],\n 'weight': 5,\n 'opacity': 0.65\n }\n });\n\n route_points.addTo(map);\n }\n\n /**\n * draw the actual route\n */\n\n if (opts.actual_route_line !== null && opts.actual_route_line.features.length > 0) {\n var _geodesicLayer = leaflet.geodesic([], {\n weight: 7,\n opacity: 0.9,\n color: __WEBPACK_IMPORTED_MODULE_1__config__[\"a\" /* ACTUAL_ROUTE_COLOR */],\n steps: 50,\n wrap: false\n }).addTo(map);\n\n _geodesicLayer.geoJson(opts.actual_route_line);\n\n try {\n map.fitBounds(_geodesicLayer.getBounds());\n } catch (e) {\n console.log(e);\n }\n }\n\n if (opts.actual_route_points !== null && opts.actual_route_points.features.length > 0) {\n var _route_points = leaflet.geoJSON(opts.actual_route_points, {\n onEachFeature: onFeaturePointClick,\n pointToLayer: pointToLayer,\n style: {\n 'color': __WEBPACK_IMPORTED_MODULE_1__config__[\"a\" /* ACTUAL_ROUTE_COLOR */],\n 'weight': 5,\n 'opacity': 0.65\n }\n });\n\n _route_points.addTo(map);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9yb3V0ZV9tYXAuanM/YTc0NSJdLCJuYW1lcyI6WyJsZWFmbGV0IiwicmVxdWlyZSIsIm9uRmVhdHVyZVBvaW50Q2xpY2siLCJmZWF0dXJlIiwibGF5ZXIiLCJwb3B1cF9odG1sIiwicHJvcGVydGllcyIsInBvcHVwIiwiYmluZFBvcHVwIiwicG9pbnRUb0xheWVyIiwibGF0bG5nIiwiY2lyY2xlTWFya2VyIiwicmFkaXVzIiwiZmlsbENvbG9yIiwiY29sb3IiLCJ3ZWlnaHQiLCJvcGFjaXR5IiwiZmlsbE9wYWNpdHkiLCJvcHRzIiwiT2JqZWN0IiwiYXNzaWduIiwicm91dGVfcG9pbnRzIiwicGxhbm5lZF9yb3V0ZV9saW5lIiwiYWN0dWFsX3JvdXRlX3BvaW50cyIsImFjdHVhbF9yb3V0ZV9saW5lIiwicmVuZGVyX2VsZW0iLCJjb25zb2xlIiwibG9nIiwibWFwIiwiZHJhd19iYXNlX21hcCIsImdlb2Rlc2ljTGF5ZXIiLCJnZW9kZXNpYyIsInN0ZXBzIiwid3JhcCIsImFkZFRvIiwiZ2VvSnNvbiIsImZpdEJvdW5kcyIsImdldEJvdW5kcyIsImUiLCJnZW9KU09OIiwib25FYWNoRmVhdHVyZSIsInN0eWxlIiwiZmVhdHVyZXMiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQTtBQUNBOztBQUVBOzs7OztBQUtPLElBQU1DLHNCQUFzQixTQUF0QkEsbUJBQXNCLENBQUNDLE9BQUQsRUFBVUMsS0FBVixFQUFvQjtBQUNyRCxNQUFJQyxhQUFhLEVBQWpCO0FBQ0EsTUFBSUYsUUFBUUcsVUFBUixJQUFzQkgsUUFBUUcsVUFBUixDQUFtQkMsS0FBN0MsRUFBb0Q7QUFDbERGLGtCQUFjRixRQUFRRyxVQUFSLENBQW1CQyxLQUFqQztBQUNEOztBQUVESCxRQUFNSSxTQUFOLENBQWdCSCxVQUFoQjtBQUNELENBUE07O0FBU1A7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LENBQW5COztBQVVBcEIsa0JBQWFhLEtBQWIsQ0FBbUJOLEdBQW5CO0FBQ0Q7QUFDRixDQWhGRCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL3JvdXRlX21hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuY29uc3QgbGVhZmxldCA9IHJlcXVpcmUoJ2xlYWZsZXQnKTtcblxuaW1wb3J0IGRyYXdfYmFzZV9tYXAgZnJvbSAnLi9iYXNlX21hcCdcbmltcG9ydCB7IEFDVFVBTF9ST1VURV9DT0xPUiwgUExBTl9ST1VURV9DT0xPUiB9IGZyb20gJy4vY29uZmlnJ1xuXG4vKipcbiAqIFNob3cgc29tZSBwb3B1cCB0ZXh0IHdoZW4gYSBmZWF0dXJlIGlzIGNsaWNrZWQgb25cbiAqIEBwYXJhbSBmZWF0dXJlXG4gKiBAcGFyYW0gbGF5ZXJcbiAqL1xuZXhwb3J0IGNvbnN0IG9uRmVhdHVyZVBvaW50Q2xpY2sgPSAoZmVhdHVyZSwgbGF5ZXIpID0+IHtcbiAgbGV0IHBvcHVwX2h0bWwgPSAnJztcbiAgaWYgKGZlYXR1cmUucHJvcGVydGllcyAmJiBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXApIHtcbiAgICBwb3B1cF9odG1sICs9IGZlYXR1cmUucHJvcGVydGllcy5wb3B1cFxuICB9XG5cbiAgbGF5ZXIuYmluZFBvcHVwKHBvcHVwX2h0bWwpXG59O1xuXG4vKipcbiAqIFNob3cgZWFjaCBwb2ludCBhcyBhIG1hcmtlclxuICogQHBhcmFtIGZlYXR1cmVcbiAqIEBwYXJhbSBsYXRsbmdcbiAqIEByZXR1cm5zIHsqfVxuICovXG5leHBvcnQgY29uc3QgcG9pbnRUb0xheWVyID0gKGZlYXR1cmUsIGxhdGxuZykgPT4ge1xuICByZXR1cm4gbGVhZmxldC5jaXJjbGVNYXJrZXIobGF0bG5nLCB7XG4gICAgcmFkaXVzOiAxMixcbiAgICBmaWxsQ29sb3I6ICcjZmY3ODAwJyxcbiAgICBjb2xvcjogJyMwMDAnLFxuICAgIHdlaWdodDogMSxcbiAgICBvcGFjaXR5OiAxLFxuICAgIGZpbGxPcGFjaXR5OiAwLjhcbiAgfSlcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIG9wdHNcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IChvcHRzKSA9PiB7XG5cbiAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHJvdXRlX3BvaW50czogbnVsbCxcbiAgICBwbGFubmVkX3JvdXRlX2xpbmU6IG51bGwsXG4gICAgYWN0dWFsX3JvdXRlX3BvaW50czogbnVsbCxcbiAgICBhY3R1YWxfcm91dGVfbGluZTogbnVsbCxcbiAgICByZW5kZXJfZWxlbTogJ21hcCcsXG4gIH0sIG9wdHMpO1xuXG4gIGNvbnNvbGUubG9nKG9wdHMpXG5cbiAgbGV0IG1hcCA9IGRyYXdfYmFzZV9tYXAob3B0cylcblxuICBsZXQgZ2VvZGVzaWNMYXllciA9IGxlYWZsZXQuZ2VvZGVzaWMoW10sIHtcbiAgICB3ZWlnaHQ6IDcsXG4gICAgb3BhY2l0eTogMC45LFxuICAgIGNvbG9yOiBQTEFOX1JPVVRFX0NPTE9SLFxuICAgIHN0ZXBzOiA1MCxcbiAgICB3cmFwOiBmYWxzZSxcbiAgfSkuYWRkVG8obWFwKVxuXG4gIGdlb2Rlc2ljTGF5ZXIuZ2VvSnNvbihvcHRzLnBsYW5uZWRfcm91dGVfbGluZSlcblxuICB0cnkge1xuICAgIG1hcC5maXRCb3VuZHMoZ2VvZGVzaWNMYXllci5nZXRCb3VuZHMoKSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKGUpXG4gIH1cblxuICAvLyBEcmF3IHRoZSByb3V0ZSBwb2ludHMgYWZ0ZXJcbiAgaWYgKG9wdHMucm91dGVfcG9pbnRzICE9PSBudWxsKSB7XG4gICAgbGV0IHJvdXRlX3BvaW50cyA9IGxlYWZsZXQuZ2VvSlNPTihvcHRzLnJvdXRlX3BvaW50cywge1xuICAgICAgb25FYWNoRmVhdHVyZTogb25GZWF0dXJlUG9pbnRDbGljayxcbiAgICAgIHBvaW50VG9MYXllcjogcG9pbnRUb0xheWVyLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgJ2NvbG9yJzogUExBTl9ST1VURV9DT0xPUixcbiAgICAgICAgJ3dlaWdodCc6IDUsXG4gICAgICAgICdvcGFjaXR5JzogMC42NSxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIHJvdXRlX3BvaW50cy5hZGRUbyhtYXApXG4gIH1cblxuICAvKipcbiAgICogZHJhdyB0aGUgYWN0dWFsIHJvdXRlXG4gICAqL1xuXG4gIGlmIChvcHRzLmFjdHVhbF9yb3V0ZV9saW5lICE9PSBudWxsICYmIG9wdHMuYWN0dWFsX3JvdXRlX2xpbmUuZmVhdHVyZXMubGVuZ3RoID4gMCkge1xuICAgIGxldCBnZW9kZXNpY0xheWVyID0gbGVhZmxldC5nZW9kZXNpYyhbXSwge1xuICAgICAgd2VpZ2h0OiA3LFxuICAgICAgb3BhY2l0eTogMC45LFxuICAgICAgY29sb3I6IEFDVFVBTF9ST1VURV9DT0xPUixcbiAgICAgIHN0ZXBzOiA1MCxcbiAgICAgIHdyYXA6IGZhbHNlLFxuICAgIH0pLmFkZFRvKG1hcClcblxuICAgIGdlb2Rlc2ljTGF5ZXIuZ2VvSnNvbihvcHRzLmFjdHVhbF9yb3V0ZV9saW5lKVxuXG4gICAgdHJ5IHtcbiAgICAgIG1hcC5maXRCb3VuZHMoZ2VvZGVzaWNMYXllci5nZXRCb3VuZHMoKSlcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmxvZyhlKVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLmFjdHVhbF9yb3V0ZV9wb2ludHMgIT09IG51bGwgJiYgb3B0cy5hY3R1YWxfcm91dGVfcG9pbnRzLmZlYXR1cmVzLmxlbmd0aCA+IDApIHtcbiAgICBsZXQgcm91dGVfcG9pbnRzID0gbGVhZmxldC5nZW9KU09OKG9wdHMuYWN0dWFsX3JvdXRlX3BvaW50cywge1xuICAgICAgb25FYWNoRmVhdHVyZTogb25GZWF0dXJlUG9pbnRDbGljayxcbiAgICAgIHBvaW50VG9MYXllcjogcG9pbnRUb0xheWVyLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgJ2NvbG9yJzogQUNUVUFMX1JPVVRFX0NPTE9SLFxuICAgICAgICAnd2VpZ2h0JzogNSxcbiAgICAgICAgJ29wYWNpdHknOiAwLjY1LFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgcm91dGVfcG9pbnRzLmFkZFRvKG1hcClcbiAgfVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9tYXBzL3JvdXRlX21hcC5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/maps/route_map.js\n"); +eval("/* unused harmony export onFeaturePointClick */\n/* unused harmony export pointToLayer */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpack_require__(\"./resources/js/maps/base_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__config__ = __webpack_require__(\"./resources/js/maps/config.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__helpers__ = __webpack_require__(\"./resources/js/maps/helpers.js\");\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n\n\n\n\n/**\n * Show some popup text when a feature is clicked on\n * @param feature\n * @param layer\n */\nvar onFeaturePointClick = function onFeaturePointClick(feature, layer) {\n var popup_html = '';\n if (feature.properties && feature.properties.popup) {\n popup_html += feature.properties.popup;\n }\n\n layer.bindPopup(popup_html);\n};\n\n/**\n * Show each point as a marker\n * @param feature\n * @param latlng\n * @returns {*}\n */\nvar pointToLayer = function pointToLayer(feature, latlng) {\n return leaflet.circleMarker(latlng, {\n radius: 12,\n fillColor: '#ff7800',\n color: '#000',\n weight: 1,\n opacity: 1,\n fillOpacity: 0.8\n });\n};\n\n/**\n *\n * @param opts\n * @private\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n\n opts = Object.assign({\n route_points: null,\n planned_route_line: null,\n actual_route_points: null,\n actual_route_line: null,\n render_elem: 'map',\n metar_wms: {\n url: '',\n params: {}\n }\n }, opts);\n\n console.log(opts);\n\n var map = Object(__WEBPACK_IMPORTED_MODULE_0__base_map__[\"a\" /* default */])(opts);\n\n if (opts.metar_wms.url !== '') {\n Object(__WEBPACK_IMPORTED_MODULE_2__helpers__[\"a\" /* addWMSLayer */])(map, opts.metar_wms);\n }\n\n var geodesicLayer = leaflet.geodesic([], {\n weight: 7,\n opacity: 0.9,\n color: __WEBPACK_IMPORTED_MODULE_1__config__[\"b\" /* PLAN_ROUTE_COLOR */],\n steps: 50,\n wrap: false\n }).addTo(map);\n\n geodesicLayer.geoJson(opts.planned_route_line);\n\n try {\n map.fitBounds(geodesicLayer.getBounds());\n } catch (e) {\n console.log(e);\n }\n\n // Draw the route points after\n if (opts.route_points !== null) {\n var route_points = leaflet.geoJSON(opts.route_points, {\n onEachFeature: onFeaturePointClick,\n pointToLayer: pointToLayer,\n style: {\n 'color': __WEBPACK_IMPORTED_MODULE_1__config__[\"b\" /* PLAN_ROUTE_COLOR */],\n 'weight': 5,\n 'opacity': 0.65\n }\n });\n\n route_points.addTo(map);\n }\n\n /**\n * draw the actual route\n */\n\n if (opts.actual_route_line !== null && opts.actual_route_line.features.length > 0) {\n var _geodesicLayer = leaflet.geodesic([], {\n weight: 7,\n opacity: 0.9,\n color: __WEBPACK_IMPORTED_MODULE_1__config__[\"a\" /* ACTUAL_ROUTE_COLOR */],\n steps: 50,\n wrap: false\n }).addTo(map);\n\n _geodesicLayer.geoJson(opts.actual_route_line);\n\n try {\n map.fitBounds(_geodesicLayer.getBounds());\n } catch (e) {\n console.log(e);\n }\n }\n\n if (opts.actual_route_points !== null && opts.actual_route_points.features.length > 0) {\n var _route_points = leaflet.geoJSON(opts.actual_route_points, {\n onEachFeature: onFeaturePointClick,\n pointToLayer: pointToLayer,\n style: {\n 'color': __WEBPACK_IMPORTED_MODULE_1__config__[\"a\" /* ACTUAL_ROUTE_COLOR */],\n 'weight': 5,\n 'opacity': 0.65\n }\n });\n\n _route_points.addTo(map);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9yb3V0ZV9tYXAuanM/YTc0NSJdLCJuYW1lcyI6WyJsZWFmbGV0IiwicmVxdWlyZSIsIm9uRmVhdHVyZVBvaW50Q2xpY2siLCJmZWF0dXJlIiwibGF5ZXIiLCJwb3B1cF9odG1sIiwicHJvcGVydGllcyIsInBvcHVwIiwiYmluZFBvcHVwIiwicG9pbnRUb0xheWVyIiwibGF0bG5nIiwiY2lyY2xlTWFya2VyIiwicmFkaXVzIiwiZmlsbENvbG9yIiwiY29sb3IiLCJ3ZWlnaHQiLCJvcGFjaXR5IiwiZmlsbE9wYWNpdHkiLCJvcHRzIiwiT2JqZWN0IiwiYXNzaWduIiwicm91dGVfcG9pbnRzIiwicGxhbm5lZF9yb3V0ZV9saW5lIiwiYWN0dWFsX3JvdXRlX3BvaW50cyIsImFjdHVhbF9yb3V0ZV9saW5lIiwicmVuZGVyX2VsZW0iLCJtZXRhcl93bXMiLCJ1cmwiLCJwYXJhbXMiLCJjb25zb2xlIiwibG9nIiwibWFwIiwiZHJhd19iYXNlX21hcCIsImFkZFdNU0xheWVyIiwiZ2VvZGVzaWNMYXllciIsImdlb2Rlc2ljIiwic3RlcHMiLCJ3cmFwIiwiYWRkVG8iLCJnZW9Kc29uIiwiZml0Qm91bmRzIiwiZ2V0Qm91bmRzIiwiZSIsImdlb0pTT04iLCJvbkVhY2hGZWF0dXJlIiwic3R5bGUiLCJmZWF0dXJlcyIsImxlbmd0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7O0FBS08sSUFBTUMsc0JBQXNCLFNBQXRCQSxtQkFBc0IsQ0FBQ0MsT0FBRCxFQUFVQyxLQUFWLEVBQW9CO0FBQ3JELE1BQUlDLGFBQWEsRUFBakI7QUFDQSxNQUFJRixRQUFRRyxVQUFSLElBQXNCSCxRQUFRRyxVQUFSLENBQW1CQyxLQUE3QyxFQUFvRDtBQUNsREYsa0JBQWNGLFFBQVFHLFVBQVIsQ0FBbUJDLEtBQWpDO0FBQ0Q7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Q0MsTUFBbEMsR0FBMkMsQ0FBcEYsRUFBdUY7QUFDckYsUUFBSTFCLGdCQUFlckIsUUFBUTJDLE9BQVIsQ0FBZ0J6QixLQUFLSyxtQkFBckIsRUFBMEM7QUFDM0RxQixxQkFBZTFDLG1CQUQ0QztBQUUzRE8sb0JBQWNBLFlBRjZDO0FBRzNEb0MsYUFBTztBQUNMLGlCQUFTLG1FQURKO0FBRUwsa0JBQVUsQ0FGTDtBQUdMLG1CQUFXO0FBSE47QUFIb0QsS0FBMUMsQ0FBbkI7O0FBVUF4QixrQkFBYWlCLEtBQWIsQ0FBbUJQLEdBQW5CO0FBQ0Q7QUFDRixDQXhGRCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL3JvdXRlX21hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuY29uc3QgbGVhZmxldCA9IHJlcXVpcmUoJ2xlYWZsZXQnKTtcblxuaW1wb3J0IGRyYXdfYmFzZV9tYXAgZnJvbSAnLi9iYXNlX21hcCdcbmltcG9ydCB7IEFDVFVBTF9ST1VURV9DT0xPUiwgUExBTl9ST1VURV9DT0xPUiB9IGZyb20gJy4vY29uZmlnJ1xuaW1wb3J0IHthZGRXTVNMYXllcn0gZnJvbSAnLi9oZWxwZXJzJztcblxuLyoqXG4gKiBTaG93IHNvbWUgcG9wdXAgdGV4dCB3aGVuIGEgZmVhdHVyZSBpcyBjbGlja2VkIG9uXG4gKiBAcGFyYW0gZmVhdHVyZVxuICogQHBhcmFtIGxheWVyXG4gKi9cbmV4cG9ydCBjb25zdCBvbkZlYXR1cmVQb2ludENsaWNrID0gKGZlYXR1cmUsIGxheWVyKSA9PiB7XG4gIGxldCBwb3B1cF9odG1sID0gJyc7XG4gIGlmIChmZWF0dXJlLnByb3BlcnRpZXMgJiYgZmVhdHVyZS5wcm9wZXJ0aWVzLnBvcHVwKSB7XG4gICAgcG9wdXBfaHRtbCArPSBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXBcbiAgfVxuXG4gIGxheWVyLmJpbmRQb3B1cChwb3B1cF9odG1sKVxufTtcblxuLyoqXG4gKiBTaG93IGVhY2ggcG9pbnQgYXMgYSBtYXJrZXJcbiAqIEBwYXJhbSBmZWF0dXJlXG4gKiBAcGFyYW0gbGF0bG5nXG4gKiBAcmV0dXJucyB7Kn1cbiAqL1xuZXhwb3J0IGNvbnN0IHBvaW50VG9MYXllciA9IChmZWF0dXJlLCBsYXRsbmcpID0+IHtcbiAgcmV0dXJuIGxlYWZsZXQuY2lyY2xlTWFya2VyKGxhdGxuZywge1xuICAgIHJhZGl1czogMTIsXG4gICAgZmlsbENvbG9yOiAnI2ZmNzgwMCcsXG4gICAgY29sb3I6ICcjMDAwJyxcbiAgICB3ZWlnaHQ6IDEsXG4gICAgb3BhY2l0eTogMSxcbiAgICBmaWxsT3BhY2l0eTogMC44XG4gIH0pXG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBvcHRzXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgZGVmYXVsdCAob3B0cykgPT4ge1xuXG4gIG9wdHMgPSBPYmplY3QuYXNzaWduKHtcbiAgICByb3V0ZV9wb2ludHM6IG51bGwsXG4gICAgcGxhbm5lZF9yb3V0ZV9saW5lOiBudWxsLFxuICAgIGFjdHVhbF9yb3V0ZV9wb2ludHM6IG51bGwsXG4gICAgYWN0dWFsX3JvdXRlX2xpbmU6IG51bGwsXG4gICAgcmVuZGVyX2VsZW06ICdtYXAnLFxuICAgIG1ldGFyX3dtczoge1xuICAgICAgICB1cmw6ICcnLFxuICAgICAgICBwYXJhbXM6IHt9XG4gICAgfSxcbiAgfSwgb3B0cyk7XG5cbiAgY29uc29sZS5sb2cob3B0cyk7XG5cbiAgbGV0IG1hcCA9IGRyYXdfYmFzZV9tYXAob3B0cyk7XG5cbiAgaWYgKG9wdHMubWV0YXJfd21zLnVybCAhPT0gJycpIHtcbiAgICAgIGFkZFdNU0xheWVyKG1hcCwgb3B0cy5tZXRhcl93bXMpO1xuICB9XG5cbiAgbGV0IGdlb2Rlc2ljTGF5ZXIgPSBsZWFmbGV0Lmdlb2Rlc2ljKFtdLCB7XG4gICAgd2VpZ2h0OiA3LFxuICAgIG9wYWNpdHk6IDAuOSxcbiAgICBjb2xvcjogUExBTl9ST1VURV9DT0xPUixcbiAgICBzdGVwczogNTAsXG4gICAgd3JhcDogZmFsc2UsXG4gIH0pLmFkZFRvKG1hcClcblxuICBnZW9kZXNpY0xheWVyLmdlb0pzb24ob3B0cy5wbGFubmVkX3JvdXRlX2xpbmUpXG5cbiAgdHJ5IHtcbiAgICBtYXAuZml0Qm91bmRzKGdlb2Rlc2ljTGF5ZXIuZ2V0Qm91bmRzKCkpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhlKVxuICB9XG5cbiAgLy8gRHJhdyB0aGUgcm91dGUgcG9pbnRzIGFmdGVyXG4gIGlmIChvcHRzLnJvdXRlX3BvaW50cyAhPT0gbnVsbCkge1xuICAgIGxldCByb3V0ZV9wb2ludHMgPSBsZWFmbGV0Lmdlb0pTT04ob3B0cy5yb3V0ZV9wb2ludHMsIHtcbiAgICAgIG9uRWFjaEZlYXR1cmU6IG9uRmVhdHVyZVBvaW50Q2xpY2ssXG4gICAgICBwb2ludFRvTGF5ZXI6IHBvaW50VG9MYXllcixcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgICdjb2xvcic6IFBMQU5fUk9VVEVfQ09MT1IsXG4gICAgICAgICd3ZWlnaHQnOiA1LFxuICAgICAgICAnb3BhY2l0eSc6IDAuNjUsXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICByb3V0ZV9wb2ludHMuYWRkVG8obWFwKVxuICB9XG5cbiAgLyoqXG4gICAqIGRyYXcgdGhlIGFjdHVhbCByb3V0ZVxuICAgKi9cblxuICBpZiAob3B0cy5hY3R1YWxfcm91dGVfbGluZSAhPT0gbnVsbCAmJiBvcHRzLmFjdHVhbF9yb3V0ZV9saW5lLmZlYXR1cmVzLmxlbmd0aCA+IDApIHtcbiAgICBsZXQgZ2VvZGVzaWNMYXllciA9IGxlYWZsZXQuZ2VvZGVzaWMoW10sIHtcbiAgICAgIHdlaWdodDogNyxcbiAgICAgIG9wYWNpdHk6IDAuOSxcbiAgICAgIGNvbG9yOiBBQ1RVQUxfUk9VVEVfQ09MT1IsXG4gICAgICBzdGVwczogNTAsXG4gICAgICB3cmFwOiBmYWxzZSxcbiAgICB9KS5hZGRUbyhtYXApXG5cbiAgICBnZW9kZXNpY0xheWVyLmdlb0pzb24ob3B0cy5hY3R1YWxfcm91dGVfbGluZSlcblxuICAgIHRyeSB7XG4gICAgICBtYXAuZml0Qm91bmRzKGdlb2Rlc2ljTGF5ZXIuZ2V0Qm91bmRzKCkpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coZSlcbiAgICB9XG4gIH1cblxuICBpZiAob3B0cy5hY3R1YWxfcm91dGVfcG9pbnRzICE9PSBudWxsICYmIG9wdHMuYWN0dWFsX3JvdXRlX3BvaW50cy5mZWF0dXJlcy5sZW5ndGggPiAwKSB7XG4gICAgbGV0IHJvdXRlX3BvaW50cyA9IGxlYWZsZXQuZ2VvSlNPTihvcHRzLmFjdHVhbF9yb3V0ZV9wb2ludHMsIHtcbiAgICAgIG9uRWFjaEZlYXR1cmU6IG9uRmVhdHVyZVBvaW50Q2xpY2ssXG4gICAgICBwb2ludFRvTGF5ZXI6IHBvaW50VG9MYXllcixcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgICdjb2xvcic6IEFDVFVBTF9ST1VURV9DT0xPUixcbiAgICAgICAgJ3dlaWdodCc6IDUsXG4gICAgICAgICdvcGFjaXR5JzogMC42NSxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIHJvdXRlX3BvaW50cy5hZGRUbyhtYXApXG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yZXNvdXJjZXMvanMvbWFwcy9yb3V0ZV9tYXAuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/maps/route_map.js\n"); /***/ }), diff --git a/public/assets/frontend/js/app.js b/public/assets/frontend/js/app.js index 3f9732ba..bd969f0c 100644 --- a/public/assets/frontend/js/app.js +++ b/public/assets/frontend/js/app.js @@ -318,7 +318,7 @@ eval("\n__webpack_require__(\"./resources/js/bootstrap.js\");\n\n// Import the m /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpack_require__(\"./resources/js/maps/base_map.js\");\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n\n\n/**\n * Render a map with the airspace, etc around a given set of coords\n * e.g, the airport map\n * @param opts\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n opts = Object.assign({\n render_elem: 'map',\n overlay_elem: '',\n lat: 0,\n lon: 0,\n zoom: 12,\n layers: [],\n set_marker: true\n }, opts);\n\n var map = Object(__WEBPACK_IMPORTED_MODULE_0__base_map__[\"a\" /* default */])(opts);\n var coords = [opts.lat, opts.lon];\n console.log('Applying coords', coords);\n\n map.setView(coords, opts.zoom);\n if (opts.set_marker === true) {\n leaflet.marker(coords).addTo(map);\n }\n\n return map;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9haXJzcGFjZV9tYXAuanM/NGZiMCJdLCJuYW1lcyI6WyJsZWFmbGV0IiwicmVxdWlyZSIsIm9wdHMiLCJPYmplY3QiLCJhc3NpZ24iLCJyZW5kZXJfZWxlbSIsIm92ZXJsYXlfZWxlbSIsImxhdCIsImxvbiIsInpvb20iLCJsYXllcnMiLCJzZXRfbWFya2VyIiwibWFwIiwiZHJhd19iYXNlX21hcCIsImNvb3JkcyIsImNvbnNvbGUiLCJsb2ciLCJzZXRWaWV3IiwibWFya2VyIiwiYWRkVG8iXSwibWFwcGluZ3MiOiI7O0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQTs7QUFFQTs7Ozs7QUFLQSx5REFBZSxVQUFDQyxJQUFELEVBQVU7QUFDdkJBLFNBQU9DLE9BQU9DLE1BQVAsQ0FBYztBQUNuQkMsaUJBQWEsS0FETTtBQUVuQkMsa0JBQWMsRUFGSztBQUduQkMsU0FBSyxDQUhjO0FBSW5CQyxTQUFLLENBSmM7QUFLbkJDLFVBQU0sRUFMYTtBQU1uQkMsWUFBUSxFQU5XO0FBT25CQyxnQkFBWTtBQVBPLEdBQWQsRUFRSlQsSUFSSSxDQUFQOztBQVVBLE1BQUlVLE1BQU0sa0VBQUFDLENBQWNYLElBQWQsQ0FBVjtBQUNBLE1BQU1ZLFNBQVMsQ0FBQ1osS0FBS0ssR0FBTixFQUFXTCxLQUFLTSxHQUFoQixDQUFmO0FBQ0FPLFVBQVFDLEdBQVIsQ0FBWSxpQkFBWixFQUErQkYsTUFBL0I7O0FBRUFGLE1BQUlLLE9BQUosQ0FBWUgsTUFBWixFQUFvQlosS0FBS08sSUFBekI7QUFDQSxNQUFJUCxLQUFLUyxVQUFMLEtBQW9CLElBQXhCLEVBQThCO0FBQzVCWCxZQUFRa0IsTUFBUixDQUFlSixNQUFmLEVBQXVCSyxLQUF2QixDQUE2QlAsR0FBN0I7QUFDRDs7QUFFRCxTQUFPQSxHQUFQO0FBQ0QsQ0FyQkQiLCJmaWxlIjoiLi9yZXNvdXJjZXMvanMvbWFwcy9haXJzcGFjZV9tYXAuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmNvbnN0IGxlYWZsZXQgPSByZXF1aXJlKCdsZWFmbGV0Jyk7XG5cbmltcG9ydCBkcmF3X2Jhc2VfbWFwIGZyb20gJy4vYmFzZV9tYXAnXG5cbi8qKlxuICogUmVuZGVyIGEgbWFwIHdpdGggdGhlIGFpcnNwYWNlLCBldGMgYXJvdW5kIGEgZ2l2ZW4gc2V0IG9mIGNvb3Jkc1xuICogZS5nLCB0aGUgYWlycG9ydCBtYXBcbiAqIEBwYXJhbSBvcHRzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IChvcHRzKSA9PiB7XG4gIG9wdHMgPSBPYmplY3QuYXNzaWduKHtcbiAgICByZW5kZXJfZWxlbTogJ21hcCcsXG4gICAgb3ZlcmxheV9lbGVtOiAnJyxcbiAgICBsYXQ6IDAsXG4gICAgbG9uOiAwLFxuICAgIHpvb206IDEyLFxuICAgIGxheWVyczogW10sXG4gICAgc2V0X21hcmtlcjogdHJ1ZSxcbiAgfSwgb3B0cyk7XG5cbiAgbGV0IG1hcCA9IGRyYXdfYmFzZV9tYXAob3B0cylcbiAgY29uc3QgY29vcmRzID0gW29wdHMubGF0LCBvcHRzLmxvbl1cbiAgY29uc29sZS5sb2coJ0FwcGx5aW5nIGNvb3JkcycsIGNvb3JkcylcblxuICBtYXAuc2V0Vmlldyhjb29yZHMsIG9wdHMuem9vbSlcbiAgaWYgKG9wdHMuc2V0X21hcmtlciA9PT0gdHJ1ZSkge1xuICAgIGxlYWZsZXQubWFya2VyKGNvb3JkcykuYWRkVG8obWFwKVxuICB9XG5cbiAgcmV0dXJuIG1hcFxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9tYXBzL2FpcnNwYWNlX21hcC5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/maps/airspace_map.js\n"); +eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpack_require__(\"./resources/js/maps/base_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__helpers__ = __webpack_require__(\"./resources/js/maps/helpers.js\");\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n\n\n\n/**\n * Render a map with the airspace, etc around a given set of coords\n * e.g, the airport map\n * @param opts\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n opts = Object.assign({\n render_elem: 'map',\n overlay_elem: '',\n lat: 0,\n lon: 0,\n zoom: 12,\n layers: [],\n set_marker: true,\n marker_popup: '',\n\n // Passed from the config/maps.php file\n metar_wms: {\n url: '',\n params: {}\n }\n }, opts);\n\n var map = Object(__WEBPACK_IMPORTED_MODULE_0__base_map__[\"a\" /* default */])(opts);\n var coords = [opts.lat, opts.lon];\n console.log('Applying coords', coords);\n\n map.setView(coords, opts.zoom);\n if (opts.set_marker === true) {\n leaflet.marker(coords).addTo(map).bindPopup(opts.marker_popup);\n }\n\n if (opts.metar_wms.url !== '') {\n Object(__WEBPACK_IMPORTED_MODULE_1__helpers__[\"a\" /* addWMSLayer */])(map, opts.metar_wms);\n }\n\n return map;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9haXJzcGFjZV9tYXAuanM/NGZiMCJdLCJuYW1lcyI6WyJsZWFmbGV0IiwicmVxdWlyZSIsIm9wdHMiLCJPYmplY3QiLCJhc3NpZ24iLCJyZW5kZXJfZWxlbSIsIm92ZXJsYXlfZWxlbSIsImxhdCIsImxvbiIsInpvb20iLCJsYXllcnMiLCJzZXRfbWFya2VyIiwibWFya2VyX3BvcHVwIiwibWV0YXJfd21zIiwidXJsIiwicGFyYW1zIiwibWFwIiwiZHJhd19iYXNlX21hcCIsImNvb3JkcyIsImNvbnNvbGUiLCJsb2ciLCJzZXRWaWV3IiwibWFya2VyIiwiYWRkVG8iLCJiaW5kUG9wdXAiLCJhZGRXTVNMYXllciJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQTtBQUNBOztBQUVBOzs7OztBQUtBLHlEQUFlLFVBQUNDLElBQUQsRUFBVTtBQUN2QkEsU0FBT0MsT0FBT0MsTUFBUCxDQUFjO0FBQ25CQyxpQkFBYSxLQURNO0FBRW5CQyxrQkFBYyxFQUZLO0FBR25CQyxTQUFLLENBSGM7QUFJbkJDLFNBQUssQ0FKYztBQUtuQkMsVUFBTSxFQUxhO0FBTW5CQyxZQUFRLEVBTlc7QUFPbkJDLGdCQUFZLElBUE87QUFRbkJDLGtCQUFjLEVBUks7O0FBVW5CO0FBQ0FDLGVBQVc7QUFDUEMsV0FBSyxFQURFO0FBRVBDLGNBQVE7QUFGRDtBQVhRLEdBQWQsRUFlSmIsSUFmSSxDQUFQOztBQWlCQSxNQUFJYyxNQUFNLGtFQUFBQyxDQUFjZixJQUFkLENBQVY7QUFDQSxNQUFNZ0IsU0FBUyxDQUFDaEIsS0FBS0ssR0FBTixFQUFXTCxLQUFLTSxHQUFoQixDQUFmO0FBQ0FXLFVBQVFDLEdBQVIsQ0FBWSxpQkFBWixFQUErQkYsTUFBL0I7O0FBRUFGLE1BQUlLLE9BQUosQ0FBWUgsTUFBWixFQUFvQmhCLEtBQUtPLElBQXpCO0FBQ0EsTUFBSVAsS0FBS1MsVUFBTCxLQUFvQixJQUF4QixFQUE4QjtBQUM1QlgsWUFBUXNCLE1BQVIsQ0FBZUosTUFBZixFQUF1QkssS0FBdkIsQ0FBNkJQLEdBQTdCLEVBQWtDUSxTQUFsQyxDQUE0Q3RCLEtBQUtVLFlBQWpEO0FBQ0Q7O0FBRUQsTUFBR1YsS0FBS1csU0FBTCxDQUFlQyxHQUFmLEtBQXVCLEVBQTFCLEVBQThCO0FBQzFCVyxJQUFBLHFFQUFBQSxDQUFZVCxHQUFaLEVBQWlCZCxLQUFLVyxTQUF0QjtBQUNIOztBQUVELFNBQU9HLEdBQVA7QUFDRCxDQWhDRCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL2FpcnNwYWNlX21hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuY29uc3QgbGVhZmxldCA9IHJlcXVpcmUoJ2xlYWZsZXQnKTtcblxuaW1wb3J0IGRyYXdfYmFzZV9tYXAgZnJvbSAnLi9iYXNlX21hcCdcbmltcG9ydCB7IGFkZFdNU0xheWVyIH0gZnJvbSAnLi9oZWxwZXJzJztcblxuLyoqXG4gKiBSZW5kZXIgYSBtYXAgd2l0aCB0aGUgYWlyc3BhY2UsIGV0YyBhcm91bmQgYSBnaXZlbiBzZXQgb2YgY29vcmRzXG4gKiBlLmcsIHRoZSBhaXJwb3J0IG1hcFxuICogQHBhcmFtIG9wdHNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgKG9wdHMpID0+IHtcbiAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHJlbmRlcl9lbGVtOiAnbWFwJyxcbiAgICBvdmVybGF5X2VsZW06ICcnLFxuICAgIGxhdDogMCxcbiAgICBsb246IDAsXG4gICAgem9vbTogMTIsXG4gICAgbGF5ZXJzOiBbXSxcbiAgICBzZXRfbWFya2VyOiB0cnVlLFxuICAgIG1hcmtlcl9wb3B1cDogJycsXG5cbiAgICAvLyBQYXNzZWQgZnJvbSB0aGUgY29uZmlnL21hcHMucGhwIGZpbGVcbiAgICBtZXRhcl93bXM6IHtcbiAgICAgICAgdXJsOiAnJyxcbiAgICAgICAgcGFyYW1zOiB7fVxuICAgIH0sXG4gIH0sIG9wdHMpO1xuXG4gIGxldCBtYXAgPSBkcmF3X2Jhc2VfbWFwKG9wdHMpO1xuICBjb25zdCBjb29yZHMgPSBbb3B0cy5sYXQsIG9wdHMubG9uXTtcbiAgY29uc29sZS5sb2coJ0FwcGx5aW5nIGNvb3JkcycsIGNvb3Jkcyk7XG5cbiAgbWFwLnNldFZpZXcoY29vcmRzLCBvcHRzLnpvb20pO1xuICBpZiAob3B0cy5zZXRfbWFya2VyID09PSB0cnVlKSB7XG4gICAgbGVhZmxldC5tYXJrZXIoY29vcmRzKS5hZGRUbyhtYXApLmJpbmRQb3B1cChvcHRzLm1hcmtlcl9wb3B1cCk7XG4gIH1cblxuICBpZihvcHRzLm1ldGFyX3dtcy51cmwgIT09ICcnKSB7XG4gICAgICBhZGRXTVNMYXllcihtYXAsIG9wdHMubWV0YXJfd21zKTtcbiAgfVxuXG4gIHJldHVybiBtYXA7XG59O1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vcmVzb3VyY2VzL2pzL21hcHMvYWlyc3BhY2VfbWFwLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/maps/airspace_map.js\n"); /***/ }), @@ -326,7 +326,7 @@ eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpa /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n\n opts = Object.assign({\n render_elem: 'map',\n center: [29.98139, -95.33374],\n zoom: 5,\n maxZoom: 10,\n layers: [],\n set_marker: false\n }, opts);\n\n var feature_groups = [];\n /*var openaip_airspace_labels = new leaflet.TileLayer.WMS(\n \"http://{s}.tile.maps.openaip.net/geowebcache/service/wms\", {\n maxZoom: 14,\n minZoom: 12,\n layers: 'openaip_approved_airspaces_labels',\n tileSize: 1024,\n detectRetina: true,\n subdomains: '12',\n format: 'image/png',\n transparent: true\n });\n openaip_airspace_labels.addTo(map);*/\n\n var opencyclemap_phys_osm = new leaflet.TileLayer('http://{s}.tile.thunderforest.com/landscape/{z}/{x}/{y}.png?apikey=f09a38fa87514de4890fc96e7fe8ecb1', {\n maxZoom: 14,\n minZoom: 4,\n format: 'image/png',\n transparent: true\n });\n\n feature_groups.push(opencyclemap_phys_osm);\n\n /*const openaip_cached_basemap = new leaflet.TileLayer(\"http://{s}.tile.maps.openaip.net/geowebcache/service/tms/1.0.0/openaip_basemap@EPSG%3A900913@png/{z}/{x}/{y}.png\", {\n maxZoom: 14,\n minZoom: 4,\n tms: true,\n detectRetina: true,\n subdomains: '12',\n format: 'image/png',\n transparent: true\n });\n feature_groups.push(openaip_cached_basemap);\n */\n\n var openaip_basemap_phys_osm = leaflet.featureGroup(feature_groups);\n\n var map = leaflet.map('map', {\n layers: [openaip_basemap_phys_osm],\n center: opts.center,\n zoom: opts.zoom,\n scrollWheelZoom: false\n });\n\n var attrib = leaflet.control.attribution({ position: 'bottomleft' });\n attrib.addAttribution('Thunderforest');\n attrib.addAttribution('openAIP');\n attrib.addAttribution('OpenStreetMap contributors');\n attrib.addAttribution('OpenWeatherMap');\n\n attrib.addTo(map);\n\n return map;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9iYXNlX21hcC5qcz80MzA3Il0sIm5hbWVzIjpbImxlYWZsZXQiLCJyZXF1aXJlIiwib3B0cyIsIk9iamVjdCIsImFzc2lnbiIsInJlbmRlcl9lbGVtIiwiY2VudGVyIiwiem9vbSIsIm1heFpvb20iLCJsYXllcnMiLCJzZXRfbWFya2VyIiwiZmVhdHVyZV9ncm91cHMiLCJvcGVuY3ljbGVtYXBfcGh5c19vc20iLCJUaWxlTGF5ZXIiLCJtaW5ab29tIiwiZm9ybWF0IiwidHJhbnNwYXJlbnQiLCJwdXNoIiwib3BlbmFpcF9iYXNlbWFwX3BoeXNfb3NtIiwiZmVhdHVyZUdyb3VwIiwibWFwIiwic2Nyb2xsV2hlZWxab29tIiwiYXR0cmliIiwiY29udHJvbCIsImF0dHJpYnV0aW9uIiwicG9zaXRpb24iLCJhZGRBdHRyaWJ1dGlvbiIsImFkZFRvIl0sIm1hcHBpbmdzIjoiO0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQSx5REFBZSxVQUFDQyxJQUFELEVBQVU7O0FBRXZCQSxTQUFPQyxPQUFPQyxNQUFQLENBQWM7QUFDbkJDLGlCQUFhLEtBRE07QUFFbkJDLFlBQVEsQ0FBQyxRQUFELEVBQVcsQ0FBQyxRQUFaLENBRlc7QUFHbkJDLFVBQU0sQ0FIYTtBQUluQkMsYUFBUyxFQUpVO0FBS25CQyxZQUFRLEVBTFc7QUFNbkJDLGdCQUFZO0FBTk8sR0FBZCxFQU9KUixJQVBJLENBQVA7O0FBU0EsTUFBSVMsaUJBQWlCLEVBQXJCO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUFjQSxNQUFNQyx3QkFBd0IsSUFBSVosUUFBUWEsU0FBWixDQUM1QixxR0FENEIsRUFDMkU7QUFDckdMLGFBQVMsRUFENEY7QUFFckdNLGFBQVMsQ0FGNEY7QUFHckdDLFlBQVEsV0FINkY7QUFJckdDLGlCQUFhO0FBSndGLEdBRDNFLENBQTlCOztBQVFBTCxpQkFBZU0sSUFBZixDQUFvQkwscUJBQXBCOztBQUVBOzs7Ozs7Ozs7Ozs7QUFhQSxNQUFNTSwyQkFBMkJsQixRQUFRbUIsWUFBUixDQUFxQlIsY0FBckIsQ0FBakM7O0FBRUEsTUFBSVMsTUFBTXBCLFFBQVFvQixHQUFSLENBQVksS0FBWixFQUFtQjtBQUMzQlgsWUFBUSxDQUFDUyx3QkFBRCxDQURtQjtBQUUzQlosWUFBUUosS0FBS0ksTUFGYztBQUczQkMsVUFBTUwsS0FBS0ssSUFIZ0I7QUFJM0JjLHFCQUFpQjtBQUpVLEdBQW5CLENBQVY7O0FBT0EsTUFBTUMsU0FBU3RCLFFBQVF1QixPQUFSLENBQWdCQyxXQUFoQixDQUE0QixFQUFDQyxVQUFVLFlBQVgsRUFBNUIsQ0FBZjtBQUNBSCxTQUFPSSxjQUFQLENBQXNCLG9GQUF0QjtBQUNBSixTQUFPSSxjQUFQLENBQXNCLHdFQUF0QjtBQUNBSixTQUFPSSxjQUFQLENBQXNCLDJHQUF0QjtBQUNBSixTQUFPSSxjQUFQLENBQXNCLHNGQUF0Qjs7QUFFQUosU0FBT0ssS0FBUCxDQUFhUCxHQUFiOztBQUVBLFNBQU9BLEdBQVA7QUFDRCxDQW5FRCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL2Jhc2VfbWFwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG5jb25zdCBsZWFmbGV0ID0gcmVxdWlyZSgnbGVhZmxldCcpO1xuXG5leHBvcnQgZGVmYXVsdCAob3B0cykgPT4ge1xuXG4gIG9wdHMgPSBPYmplY3QuYXNzaWduKHtcbiAgICByZW5kZXJfZWxlbTogJ21hcCcsXG4gICAgY2VudGVyOiBbMjkuOTgxMzksIC05NS4zMzM3NF0sXG4gICAgem9vbTogNSxcbiAgICBtYXhab29tOiAxMCxcbiAgICBsYXllcnM6IFtdLFxuICAgIHNldF9tYXJrZXI6IGZhbHNlLFxuICB9LCBvcHRzKTtcblxuICBsZXQgZmVhdHVyZV9ncm91cHMgPSBbXTtcbiAgLyp2YXIgb3BlbmFpcF9haXJzcGFjZV9sYWJlbHMgPSBuZXcgbGVhZmxldC5UaWxlTGF5ZXIuV01TKFxuICAgICAgXCJodHRwOi8ve3N9LnRpbGUubWFwcy5vcGVuYWlwLm5ldC9nZW93ZWJjYWNoZS9zZXJ2aWNlL3dtc1wiLCB7XG4gICAgICAgICAgbWF4Wm9vbTogMTQsXG4gICAgICAgICAgbWluWm9vbTogMTIsXG4gICAgICAgICAgbGF5ZXJzOiAnb3BlbmFpcF9hcHByb3ZlZF9haXJzcGFjZXNfbGFiZWxzJyxcbiAgICAgICAgICB0aWxlU2l6ZTogMTAyNCxcbiAgICAgICAgICBkZXRlY3RSZXRpbmE6IHRydWUsXG4gICAgICAgICAgc3ViZG9tYWluczogJzEyJyxcbiAgICAgICAgICBmb3JtYXQ6ICdpbWFnZS9wbmcnLFxuICAgICAgICAgIHRyYW5zcGFyZW50OiB0cnVlXG4gICAgICB9KTtcblxuICBvcGVuYWlwX2FpcnNwYWNlX2xhYmVscy5hZGRUbyhtYXApOyovXG5cbiAgY29uc3Qgb3BlbmN5Y2xlbWFwX3BoeXNfb3NtID0gbmV3IGxlYWZsZXQuVGlsZUxheWVyKFxuICAgICdodHRwOi8ve3N9LnRpbGUudGh1bmRlcmZvcmVzdC5jb20vbGFuZHNjYXBlL3t6fS97eH0ve3l9LnBuZz9hcGlrZXk9ZjA5YTM4ZmE4NzUxNGRlNDg5MGZjOTZlN2ZlOGVjYjEnLCB7XG4gICAgICBtYXhab29tOiAxNCxcbiAgICAgIG1pblpvb206IDQsXG4gICAgICBmb3JtYXQ6ICdpbWFnZS9wbmcnLFxuICAgICAgdHJhbnNwYXJlbnQ6IHRydWVcbiAgICB9KVxuXG4gIGZlYXR1cmVfZ3JvdXBzLnB1c2gob3BlbmN5Y2xlbWFwX3BoeXNfb3NtKVxuXG4gIC8qY29uc3Qgb3BlbmFpcF9jYWNoZWRfYmFzZW1hcCA9IG5ldyBsZWFmbGV0LlRpbGVMYXllcihcImh0dHA6Ly97c30udGlsZS5tYXBzLm9wZW5haXAubmV0L2dlb3dlYmNhY2hlL3NlcnZpY2UvdG1zLzEuMC4wL29wZW5haXBfYmFzZW1hcEBFUFNHJTNBOTAwOTEzQHBuZy97en0ve3h9L3t5fS5wbmdcIiwge1xuICAgICAgbWF4Wm9vbTogMTQsXG4gICAgICBtaW5ab29tOiA0LFxuICAgICAgdG1zOiB0cnVlLFxuICAgICAgZGV0ZWN0UmV0aW5hOiB0cnVlLFxuICAgICAgc3ViZG9tYWluczogJzEyJyxcbiAgICAgIGZvcm1hdDogJ2ltYWdlL3BuZycsXG4gICAgICB0cmFuc3BhcmVudDogdHJ1ZVxuICB9KTtcblxuICBmZWF0dXJlX2dyb3Vwcy5wdXNoKG9wZW5haXBfY2FjaGVkX2Jhc2VtYXApO1xuICAqL1xuXG4gIGNvbnN0IG9wZW5haXBfYmFzZW1hcF9waHlzX29zbSA9IGxlYWZsZXQuZmVhdHVyZUdyb3VwKGZlYXR1cmVfZ3JvdXBzKVxuXG4gIGxldCBtYXAgPSBsZWFmbGV0Lm1hcCgnbWFwJywge1xuICAgIGxheWVyczogW29wZW5haXBfYmFzZW1hcF9waHlzX29zbV0sXG4gICAgY2VudGVyOiBvcHRzLmNlbnRlcixcbiAgICB6b29tOiBvcHRzLnpvb20sXG4gICAgc2Nyb2xsV2hlZWxab29tOiBmYWxzZSxcbiAgfSlcblxuICBjb25zdCBhdHRyaWIgPSBsZWFmbGV0LmNvbnRyb2wuYXR0cmlidXRpb24oe3Bvc2l0aW9uOiAnYm90dG9tbGVmdCd9KVxuICBhdHRyaWIuYWRkQXR0cmlidXRpb24oJzxhIGhyZWY9XCJodHRwczovL3d3dy50aHVuZGVyZm9yZXN0LmNvbVwiIHRhcmdldD1cIl9ibGFua1wiIHN0eWxlPVwiXCI+VGh1bmRlcmZvcmVzdDwvYT4nKVxuICBhdHRyaWIuYWRkQXR0cmlidXRpb24oJzxhIGhyZWY9XCJodHRwczovL3d3dy5vcGVuYWlwLm5ldFwiIHRhcmdldD1cIl9ibGFua1wiIHN0eWxlPVwiXCI+b3BlbkFJUDwvYT4nKVxuICBhdHRyaWIuYWRkQXR0cmlidXRpb24oJzxhIGhyZWY9XCJodHRwczovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHRcIiB0YXJnZXQ9XCJfYmxhbmtcIiBzdHlsZT1cIlwiPk9wZW5TdHJlZXRNYXA8L2E+IGNvbnRyaWJ1dG9ycycpXG4gIGF0dHJpYi5hZGRBdHRyaWJ1dGlvbignPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm9wZW53ZWF0aGVybWFwLm9yZ1wiIHRhcmdldD1cIl9ibGFua1wiIHN0eWxlPVwiXCI+T3BlbldlYXRoZXJNYXA8L2E+JylcblxuICBhdHRyaWIuYWRkVG8obWFwKVxuXG4gIHJldHVybiBtYXBcbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yZXNvdXJjZXMvanMvbWFwcy9iYXNlX21hcC5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/maps/base_map.js\n"); +eval("\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n\n opts = Object.assign({\n render_elem: 'map',\n center: [29.98139, -95.33374],\n zoom: 5,\n maxZoom: 10,\n layers: [],\n set_marker: false\n }, opts);\n\n var feature_groups = [];\n /*var openaip_airspace_labels = new leaflet.TileLayer.WMS(\n \"http://{s}.tile.maps.openaip.net/geowebcache/service/wms\", {\n maxZoom: 14,\n minZoom: 12,\n layers: 'openaip_approved_airspaces_labels',\n tileSize: 1024,\n detectRetina: true,\n subdomains: '12',\n format: 'image/png',\n transparent: true\n });\n openaip_airspace_labels.addTo(map);*/\n\n var opencyclemap_phys_osm = new leaflet.TileLayer('http://{s}.tile.thunderforest.com/landscape/{z}/{x}/{y}.png?apikey=f09a38fa87514de4890fc96e7fe8ecb1', {\n maxZoom: 14,\n minZoom: 4,\n format: 'image/png',\n transparent: true\n });\n\n feature_groups.push(opencyclemap_phys_osm);\n\n /*const openaip_cached_basemap = new leaflet.TileLayer(\"http://{s}.tile.maps.openaip.net/geowebcache/service/tms/1.0.0/openaip_basemap@EPSG%3A900913@png/{z}/{x}/{y}.png\", {\n maxZoom: 14,\n minZoom: 4,\n tms: true,\n detectRetina: true,\n subdomains: '12',\n format: 'image/png',\n transparent: true\n });\n feature_groups.push(openaip_cached_basemap);\n */\n\n var openaip_basemap_phys_osm = leaflet.featureGroup(feature_groups);\n\n var map = leaflet.map('map', {\n layers: [openaip_basemap_phys_osm],\n center: opts.center,\n zoom: opts.zoom,\n scrollWheelZoom: false\n });\n\n var attrib = leaflet.control.attribution({ position: 'bottomleft' });\n attrib.addAttribution('Thunderforest');\n attrib.addAttribution('openAIP');\n attrib.addAttribution('OpenStreetMap contributors');\n attrib.addAttribution('OpenWeatherMap');\n\n attrib.addTo(map);\n\n return map;\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9iYXNlX21hcC5qcz80MzA3Il0sIm5hbWVzIjpbImxlYWZsZXQiLCJyZXF1aXJlIiwib3B0cyIsIk9iamVjdCIsImFzc2lnbiIsInJlbmRlcl9lbGVtIiwiY2VudGVyIiwiem9vbSIsIm1heFpvb20iLCJsYXllcnMiLCJzZXRfbWFya2VyIiwiZmVhdHVyZV9ncm91cHMiLCJvcGVuY3ljbGVtYXBfcGh5c19vc20iLCJUaWxlTGF5ZXIiLCJtaW5ab29tIiwiZm9ybWF0IiwidHJhbnNwYXJlbnQiLCJwdXNoIiwib3BlbmFpcF9iYXNlbWFwX3BoeXNfb3NtIiwiZmVhdHVyZUdyb3VwIiwibWFwIiwic2Nyb2xsV2hlZWxab29tIiwiYXR0cmliIiwiY29udHJvbCIsImF0dHJpYnV0aW9uIiwicG9zaXRpb24iLCJhZGRBdHRyaWJ1dGlvbiIsImFkZFRvIl0sIm1hcHBpbmdzIjoiO0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQSx5REFBZSxVQUFDQyxJQUFELEVBQVU7O0FBRXZCQSxTQUFPQyxPQUFPQyxNQUFQLENBQWM7QUFDbkJDLGlCQUFhLEtBRE07QUFFbkJDLFlBQVEsQ0FBQyxRQUFELEVBQVcsQ0FBQyxRQUFaLENBRlc7QUFHbkJDLFVBQU0sQ0FIYTtBQUluQkMsYUFBUyxFQUpVO0FBS25CQyxZQUFRLEVBTFc7QUFNbkJDLGdCQUFZO0FBTk8sR0FBZCxFQU9KUixJQVBJLENBQVA7O0FBU0EsTUFBSVMsaUJBQWlCLEVBQXJCO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUFjQSxNQUFNQyx3QkFBd0IsSUFBSVosUUFBUWEsU0FBWixDQUM1QixxR0FENEIsRUFDMkU7QUFDckdMLGFBQVMsRUFENEY7QUFFckdNLGFBQVMsQ0FGNEY7QUFHckdDLFlBQVEsV0FINkY7QUFJckdDLGlCQUFhO0FBSndGLEdBRDNFLENBQTlCOztBQVFBTCxpQkFBZU0sSUFBZixDQUFvQkwscUJBQXBCOztBQUVBOzs7Ozs7Ozs7Ozs7QUFhQSxNQUFNTSwyQkFBMkJsQixRQUFRbUIsWUFBUixDQUFxQlIsY0FBckIsQ0FBakM7O0FBRUEsTUFBSVMsTUFBTXBCLFFBQVFvQixHQUFSLENBQVksS0FBWixFQUFtQjtBQUMzQlgsWUFBUSxDQUFDUyx3QkFBRCxDQURtQjtBQUUzQlosWUFBUUosS0FBS0ksTUFGYztBQUczQkMsVUFBTUwsS0FBS0ssSUFIZ0I7QUFJM0JjLHFCQUFpQjtBQUpVLEdBQW5CLENBQVY7O0FBT0EsTUFBTUMsU0FBU3RCLFFBQVF1QixPQUFSLENBQWdCQyxXQUFoQixDQUE0QixFQUFDQyxVQUFVLFlBQVgsRUFBNUIsQ0FBZjtBQUNBSCxTQUFPSSxjQUFQLENBQXNCLG9GQUF0QjtBQUNBSixTQUFPSSxjQUFQLENBQXNCLHdFQUF0QjtBQUNBSixTQUFPSSxjQUFQLENBQXNCLDJHQUF0QjtBQUNBSixTQUFPSSxjQUFQLENBQXNCLHNGQUF0Qjs7QUFFQUosU0FBT0ssS0FBUCxDQUFhUCxHQUFiOztBQUVBLFNBQU9BLEdBQVA7QUFDRCxDQW5FRCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL2Jhc2VfbWFwLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG5jb25zdCBsZWFmbGV0ID0gcmVxdWlyZSgnbGVhZmxldCcpO1xuXG5leHBvcnQgZGVmYXVsdCAob3B0cykgPT4ge1xuXG4gIG9wdHMgPSBPYmplY3QuYXNzaWduKHtcbiAgICByZW5kZXJfZWxlbTogJ21hcCcsXG4gICAgY2VudGVyOiBbMjkuOTgxMzksIC05NS4zMzM3NF0sXG4gICAgem9vbTogNSxcbiAgICBtYXhab29tOiAxMCxcbiAgICBsYXllcnM6IFtdLFxuICAgIHNldF9tYXJrZXI6IGZhbHNlLFxuICB9LCBvcHRzKTtcblxuICBsZXQgZmVhdHVyZV9ncm91cHMgPSBbXTtcbiAgLyp2YXIgb3BlbmFpcF9haXJzcGFjZV9sYWJlbHMgPSBuZXcgbGVhZmxldC5UaWxlTGF5ZXIuV01TKFxuICAgICAgXCJodHRwOi8ve3N9LnRpbGUubWFwcy5vcGVuYWlwLm5ldC9nZW93ZWJjYWNoZS9zZXJ2aWNlL3dtc1wiLCB7XG4gICAgICAgICAgbWF4Wm9vbTogMTQsXG4gICAgICAgICAgbWluWm9vbTogMTIsXG4gICAgICAgICAgbGF5ZXJzOiAnb3BlbmFpcF9hcHByb3ZlZF9haXJzcGFjZXNfbGFiZWxzJyxcbiAgICAgICAgICB0aWxlU2l6ZTogMTAyNCxcbiAgICAgICAgICBkZXRlY3RSZXRpbmE6IHRydWUsXG4gICAgICAgICAgc3ViZG9tYWluczogJzEyJyxcbiAgICAgICAgICBmb3JtYXQ6ICdpbWFnZS9wbmcnLFxuICAgICAgICAgIHRyYW5zcGFyZW50OiB0cnVlXG4gICAgICB9KTtcblxuICBvcGVuYWlwX2FpcnNwYWNlX2xhYmVscy5hZGRUbyhtYXApOyovXG5cbiAgY29uc3Qgb3BlbmN5Y2xlbWFwX3BoeXNfb3NtID0gbmV3IGxlYWZsZXQuVGlsZUxheWVyKFxuICAgICdodHRwOi8ve3N9LnRpbGUudGh1bmRlcmZvcmVzdC5jb20vbGFuZHNjYXBlL3t6fS97eH0ve3l9LnBuZz9hcGlrZXk9ZjA5YTM4ZmE4NzUxNGRlNDg5MGZjOTZlN2ZlOGVjYjEnLCB7XG4gICAgICBtYXhab29tOiAxNCxcbiAgICAgIG1pblpvb206IDQsXG4gICAgICBmb3JtYXQ6ICdpbWFnZS9wbmcnLFxuICAgICAgdHJhbnNwYXJlbnQ6IHRydWVcbiAgICB9KVxuXG4gIGZlYXR1cmVfZ3JvdXBzLnB1c2gob3BlbmN5Y2xlbWFwX3BoeXNfb3NtKVxuXG4gIC8qY29uc3Qgb3BlbmFpcF9jYWNoZWRfYmFzZW1hcCA9IG5ldyBsZWFmbGV0LlRpbGVMYXllcihcImh0dHA6Ly97c30udGlsZS5tYXBzLm9wZW5haXAubmV0L2dlb3dlYmNhY2hlL3NlcnZpY2UvdG1zLzEuMC4wL29wZW5haXBfYmFzZW1hcEBFUFNHJTNBOTAwOTEzQHBuZy97en0ve3h9L3t5fS5wbmdcIiwge1xuICAgICAgbWF4Wm9vbTogMTQsXG4gICAgICBtaW5ab29tOiA0LFxuICAgICAgdG1zOiB0cnVlLFxuICAgICAgZGV0ZWN0UmV0aW5hOiB0cnVlLFxuICAgICAgc3ViZG9tYWluczogJzEyJyxcbiAgICAgIGZvcm1hdDogJ2ltYWdlL3BuZycsXG4gICAgICB0cmFuc3BhcmVudDogdHJ1ZVxuICB9KTtcblxuICBmZWF0dXJlX2dyb3Vwcy5wdXNoKG9wZW5haXBfY2FjaGVkX2Jhc2VtYXApO1xuICAqL1xuXG4gIGNvbnN0IG9wZW5haXBfYmFzZW1hcF9waHlzX29zbSA9IGxlYWZsZXQuZmVhdHVyZUdyb3VwKGZlYXR1cmVfZ3JvdXBzKTtcblxuICBsZXQgbWFwID0gbGVhZmxldC5tYXAoJ21hcCcsIHtcbiAgICBsYXllcnM6IFtvcGVuYWlwX2Jhc2VtYXBfcGh5c19vc21dLFxuICAgIGNlbnRlcjogb3B0cy5jZW50ZXIsXG4gICAgem9vbTogb3B0cy56b29tLFxuICAgIHNjcm9sbFdoZWVsWm9vbTogZmFsc2UsXG4gIH0pO1xuXG4gIGNvbnN0IGF0dHJpYiA9IGxlYWZsZXQuY29udHJvbC5hdHRyaWJ1dGlvbih7cG9zaXRpb246ICdib3R0b21sZWZ0J30pXG4gIGF0dHJpYi5hZGRBdHRyaWJ1dGlvbignPGEgaHJlZj1cImh0dHBzOi8vd3d3LnRodW5kZXJmb3Jlc3QuY29tXCIgdGFyZ2V0PVwiX2JsYW5rXCIgc3R5bGU9XCJcIj5UaHVuZGVyZm9yZXN0PC9hPicpXG4gIGF0dHJpYi5hZGRBdHRyaWJ1dGlvbignPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm9wZW5haXAubmV0XCIgdGFyZ2V0PVwiX2JsYW5rXCIgc3R5bGU9XCJcIj5vcGVuQUlQPC9hPicpXG4gIGF0dHJpYi5hZGRBdHRyaWJ1dGlvbignPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodFwiIHRhcmdldD1cIl9ibGFua1wiIHN0eWxlPVwiXCI+T3BlblN0cmVldE1hcDwvYT4gY29udHJpYnV0b3JzJylcbiAgYXR0cmliLmFkZEF0dHJpYnV0aW9uKCc8YSBocmVmPVwiaHR0cHM6Ly93d3cub3BlbndlYXRoZXJtYXAub3JnXCIgdGFyZ2V0PVwiX2JsYW5rXCIgc3R5bGU9XCJcIj5PcGVuV2VhdGhlck1hcDwvYT4nKVxuXG4gIGF0dHJpYi5hZGRUbyhtYXApXG5cbiAgcmV0dXJuIG1hcFxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9tYXBzL2Jhc2VfbWFwLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./resources/js/maps/base_map.js\n"); /***/ }), @@ -338,6 +338,14 @@ eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, /***/ }), +/***/ "./resources/js/maps/helpers.js": +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("/* harmony export (immutable) */ __webpack_exports__[\"a\"] = addWMSLayer;\n/* unused harmony export showFeaturePopup */\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n/**\n * Add a WMS layer to a map. opts must be:\n * {\n * url: '',\n * params: {}\n * }\n * @param map\n * @param opts\n */\nfunction addWMSLayer(map, opts) {\n\n if (opts.url === '') {\n return;\n }\n\n opts.params = Object.assign({\n format: 'image/png',\n transparent: true,\n maxZoom: 14,\n minZoom: 4\n }, opts.params);\n\n var mlayer = leaflet.tileLayer.wms(opts.url, opts.params);\n\n mlayer.addTo(map);\n\n return mlayer;\n}\n\n/**\n * Show a popup\n * @param feature\n * @param layer\n */\nfunction showFeaturePopup(feature, layer) {\n var popup_html = '';\n if (feature.properties && feature.properties.popup) {\n popup_html += feature.properties.popup;\n }\n\n layer.bindPopup(popup_html);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9oZWxwZXJzLmpzPzNjZDUiXSwibmFtZXMiOlsibGVhZmxldCIsInJlcXVpcmUiLCJhZGRXTVNMYXllciIsIm1hcCIsIm9wdHMiLCJ1cmwiLCJwYXJhbXMiLCJPYmplY3QiLCJhc3NpZ24iLCJmb3JtYXQiLCJ0cmFuc3BhcmVudCIsIm1heFpvb20iLCJtaW5ab29tIiwibWxheWVyIiwidGlsZUxheWVyIiwid21zIiwiYWRkVG8iLCJzaG93RmVhdHVyZVBvcHVwIiwiZmVhdHVyZSIsImxheWVyIiwicG9wdXBfaHRtbCIsInByb3BlcnRpZXMiLCJwb3B1cCIsImJpbmRQb3B1cCJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQTs7Ozs7Ozs7O0FBU08sU0FBU0MsV0FBVCxDQUFxQkMsR0FBckIsRUFBMEJDLElBQTFCLEVBQWdDOztBQUVuQyxRQUFHQSxLQUFLQyxHQUFMLEtBQWEsRUFBaEIsRUFBb0I7QUFDaEI7QUFDSDs7QUFFREQsU0FBS0UsTUFBTCxHQUFjQyxPQUFPQyxNQUFQLENBQWM7QUFDeEJDLGdCQUFRLFdBRGdCO0FBRXhCQyxxQkFBYSxJQUZXO0FBR3hCQyxpQkFBUyxFQUhlO0FBSXhCQyxpQkFBUztBQUplLEtBQWQsRUFLWFIsS0FBS0UsTUFMTSxDQUFkOztBQU9BLFFBQU1PLFNBQVNiLFFBQVFjLFNBQVIsQ0FBa0JDLEdBQWxCLENBQ1hYLEtBQUtDLEdBRE0sRUFDREQsS0FBS0UsTUFESixDQUFmOztBQUlBTyxXQUFPRyxLQUFQLENBQWFiLEdBQWI7O0FBRUEsV0FBT1UsTUFBUDtBQUNIOztBQUVEOzs7OztBQUtPLFNBQVNJLGdCQUFULENBQTBCQyxPQUExQixFQUFtQ0MsS0FBbkMsRUFBMEM7QUFDN0MsUUFBSUMsYUFBYSxFQUFqQjtBQUNBLFFBQUlGLFFBQVFHLFVBQVIsSUFBc0JILFFBQVFHLFVBQVIsQ0FBbUJDLEtBQTdDLEVBQW9EO0FBQ2hERixzQkFBY0YsUUFBUUcsVUFBUixDQUFtQkMsS0FBakM7QUFDSDs7QUFFREgsVUFBTUksU0FBTixDQUFnQkgsVUFBaEI7QUFDSCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL2hlbHBlcnMuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmNvbnN0IGxlYWZsZXQgPSByZXF1aXJlKCdsZWFmbGV0Jyk7XG5cbi8qKlxuICogQWRkIGEgV01TIGxheWVyIHRvIGEgbWFwLiBvcHRzIG11c3QgYmU6XG4gKiB7XG4gKiAgdXJsOiAnJyxcbiAqICBwYXJhbXM6IHt9XG4gKiAgfVxuICogQHBhcmFtIG1hcFxuICogQHBhcmFtIG9wdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFdNU0xheWVyKG1hcCwgb3B0cykge1xuXG4gICAgaWYob3B0cy51cmwgPT09ICcnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBvcHRzLnBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe1xuICAgICAgICBmb3JtYXQ6ICdpbWFnZS9wbmcnLFxuICAgICAgICB0cmFuc3BhcmVudDogdHJ1ZSxcbiAgICAgICAgbWF4Wm9vbTogMTQsXG4gICAgICAgIG1pblpvb206IDQsXG4gICAgfSwgb3B0cy5wYXJhbXMpO1xuXG4gICAgY29uc3QgbWxheWVyID0gbGVhZmxldC50aWxlTGF5ZXIud21zKFxuICAgICAgICBvcHRzLnVybCwgb3B0cy5wYXJhbXNcbiAgICApO1xuXG4gICAgbWxheWVyLmFkZFRvKG1hcCk7XG5cbiAgICByZXR1cm4gbWxheWVyO1xufVxuXG4vKipcbiAqIFNob3cgYSBwb3B1cFxuICogQHBhcmFtIGZlYXR1cmVcbiAqIEBwYXJhbSBsYXllclxuICovXG5leHBvcnQgZnVuY3Rpb24gc2hvd0ZlYXR1cmVQb3B1cChmZWF0dXJlLCBsYXllcikge1xuICAgIGxldCBwb3B1cF9odG1sID0gJyc7XG4gICAgaWYgKGZlYXR1cmUucHJvcGVydGllcyAmJiBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXApIHtcbiAgICAgICAgcG9wdXBfaHRtbCArPSBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXBcbiAgICB9XG5cbiAgICBsYXllci5iaW5kUG9wdXAocG9wdXBfaHRtbClcbn1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9tYXBzL2hlbHBlcnMuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/maps/helpers.js\n"); + +/***/ }), + /***/ "./resources/js/maps/index.js": /***/ (function(module, __webpack_exports__, __webpack_require__) { @@ -358,7 +366,7 @@ eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpa /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("/* unused harmony export onFeaturePointClick */\n/* unused harmony export pointToLayer */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpack_require__(\"./resources/js/maps/base_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__config__ = __webpack_require__(\"./resources/js/maps/config.js\");\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n\n\n\n/**\n * Show some popup text when a feature is clicked on\n * @param feature\n * @param layer\n */\nvar onFeaturePointClick = function onFeaturePointClick(feature, layer) {\n var popup_html = '';\n if (feature.properties && feature.properties.popup) {\n popup_html += feature.properties.popup;\n }\n\n layer.bindPopup(popup_html);\n};\n\n/**\n * Show each point as a marker\n * @param feature\n * @param latlng\n * @returns {*}\n */\nvar pointToLayer = function pointToLayer(feature, latlng) {\n return leaflet.circleMarker(latlng, {\n radius: 12,\n fillColor: '#ff7800',\n color: '#000',\n weight: 1,\n opacity: 1,\n fillOpacity: 0.8\n });\n};\n\n/**\n *\n * @param opts\n * @private\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n\n opts = Object.assign({\n route_points: null,\n planned_route_line: null,\n actual_route_points: null,\n actual_route_line: null,\n render_elem: 'map'\n }, opts);\n\n console.log(opts);\n\n var map = Object(__WEBPACK_IMPORTED_MODULE_0__base_map__[\"a\" /* default */])(opts);\n\n var geodesicLayer = leaflet.geodesic([], {\n weight: 7,\n opacity: 0.9,\n color: __WEBPACK_IMPORTED_MODULE_1__config__[\"b\" /* PLAN_ROUTE_COLOR */],\n steps: 50,\n wrap: false\n }).addTo(map);\n\n geodesicLayer.geoJson(opts.planned_route_line);\n\n try {\n map.fitBounds(geodesicLayer.getBounds());\n } catch (e) {\n console.log(e);\n }\n\n // Draw the route points after\n if (opts.route_points !== null) {\n var route_points = leaflet.geoJSON(opts.route_points, {\n onEachFeature: onFeaturePointClick,\n pointToLayer: pointToLayer,\n style: {\n 'color': __WEBPACK_IMPORTED_MODULE_1__config__[\"b\" /* PLAN_ROUTE_COLOR */],\n 'weight': 5,\n 'opacity': 0.65\n }\n });\n\n route_points.addTo(map);\n }\n\n /**\n * draw the actual route\n */\n\n if (opts.actual_route_line !== null && opts.actual_route_line.features.length > 0) {\n var _geodesicLayer = leaflet.geodesic([], {\n weight: 7,\n opacity: 0.9,\n color: __WEBPACK_IMPORTED_MODULE_1__config__[\"a\" /* ACTUAL_ROUTE_COLOR */],\n steps: 50,\n wrap: false\n }).addTo(map);\n\n _geodesicLayer.geoJson(opts.actual_route_line);\n\n try {\n map.fitBounds(_geodesicLayer.getBounds());\n } catch (e) {\n console.log(e);\n }\n }\n\n if (opts.actual_route_points !== null && opts.actual_route_points.features.length > 0) {\n var _route_points = leaflet.geoJSON(opts.actual_route_points, {\n onEachFeature: onFeaturePointClick,\n pointToLayer: pointToLayer,\n style: {\n 'color': __WEBPACK_IMPORTED_MODULE_1__config__[\"a\" /* ACTUAL_ROUTE_COLOR */],\n 'weight': 5,\n 'opacity': 0.65\n }\n });\n\n _route_points.addTo(map);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9yb3V0ZV9tYXAuanM/YTc0NSJdLCJuYW1lcyI6WyJsZWFmbGV0IiwicmVxdWlyZSIsIm9uRmVhdHVyZVBvaW50Q2xpY2siLCJmZWF0dXJlIiwibGF5ZXIiLCJwb3B1cF9odG1sIiwicHJvcGVydGllcyIsInBvcHVwIiwiYmluZFBvcHVwIiwicG9pbnRUb0xheWVyIiwibGF0bG5nIiwiY2lyY2xlTWFya2VyIiwicmFkaXVzIiwiZmlsbENvbG9yIiwiY29sb3IiLCJ3ZWlnaHQiLCJvcGFjaXR5IiwiZmlsbE9wYWNpdHkiLCJvcHRzIiwiT2JqZWN0IiwiYXNzaWduIiwicm91dGVfcG9pbnRzIiwicGxhbm5lZF9yb3V0ZV9saW5lIiwiYWN0dWFsX3JvdXRlX3BvaW50cyIsImFjdHVhbF9yb3V0ZV9saW5lIiwicmVuZGVyX2VsZW0iLCJjb25zb2xlIiwibG9nIiwibWFwIiwiZHJhd19iYXNlX21hcCIsImdlb2Rlc2ljTGF5ZXIiLCJnZW9kZXNpYyIsInN0ZXBzIiwid3JhcCIsImFkZFRvIiwiZ2VvSnNvbiIsImZpdEJvdW5kcyIsImdldEJvdW5kcyIsImUiLCJnZW9KU09OIiwib25FYWNoRmVhdHVyZSIsInN0eWxlIiwiZmVhdHVyZXMiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQTtBQUNBOztBQUVBOzs7OztBQUtPLElBQU1DLHNCQUFzQixTQUF0QkEsbUJBQXNCLENBQUNDLE9BQUQsRUFBVUMsS0FBVixFQUFvQjtBQUNyRCxNQUFJQyxhQUFhLEVBQWpCO0FBQ0EsTUFBSUYsUUFBUUcsVUFBUixJQUFzQkgsUUFBUUcsVUFBUixDQUFtQkMsS0FBN0MsRUFBb0Q7QUFDbERGLGtCQUFjRixRQUFRRyxVQUFSLENBQW1CQyxLQUFqQztBQUNEOztBQUVESCxRQUFNSSxTQUFOLENBQWdCSCxVQUFoQjtBQUNELENBUE07O0FBU1A7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LENBQW5COztBQVVBcEIsa0JBQWFhLEtBQWIsQ0FBbUJOLEdBQW5CO0FBQ0Q7QUFDRixDQWhGRCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL3JvdXRlX21hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuY29uc3QgbGVhZmxldCA9IHJlcXVpcmUoJ2xlYWZsZXQnKTtcblxuaW1wb3J0IGRyYXdfYmFzZV9tYXAgZnJvbSAnLi9iYXNlX21hcCdcbmltcG9ydCB7IEFDVFVBTF9ST1VURV9DT0xPUiwgUExBTl9ST1VURV9DT0xPUiB9IGZyb20gJy4vY29uZmlnJ1xuXG4vKipcbiAqIFNob3cgc29tZSBwb3B1cCB0ZXh0IHdoZW4gYSBmZWF0dXJlIGlzIGNsaWNrZWQgb25cbiAqIEBwYXJhbSBmZWF0dXJlXG4gKiBAcGFyYW0gbGF5ZXJcbiAqL1xuZXhwb3J0IGNvbnN0IG9uRmVhdHVyZVBvaW50Q2xpY2sgPSAoZmVhdHVyZSwgbGF5ZXIpID0+IHtcbiAgbGV0IHBvcHVwX2h0bWwgPSAnJztcbiAgaWYgKGZlYXR1cmUucHJvcGVydGllcyAmJiBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXApIHtcbiAgICBwb3B1cF9odG1sICs9IGZlYXR1cmUucHJvcGVydGllcy5wb3B1cFxuICB9XG5cbiAgbGF5ZXIuYmluZFBvcHVwKHBvcHVwX2h0bWwpXG59O1xuXG4vKipcbiAqIFNob3cgZWFjaCBwb2ludCBhcyBhIG1hcmtlclxuICogQHBhcmFtIGZlYXR1cmVcbiAqIEBwYXJhbSBsYXRsbmdcbiAqIEByZXR1cm5zIHsqfVxuICovXG5leHBvcnQgY29uc3QgcG9pbnRUb0xheWVyID0gKGZlYXR1cmUsIGxhdGxuZykgPT4ge1xuICByZXR1cm4gbGVhZmxldC5jaXJjbGVNYXJrZXIobGF0bG5nLCB7XG4gICAgcmFkaXVzOiAxMixcbiAgICBmaWxsQ29sb3I6ICcjZmY3ODAwJyxcbiAgICBjb2xvcjogJyMwMDAnLFxuICAgIHdlaWdodDogMSxcbiAgICBvcGFjaXR5OiAxLFxuICAgIGZpbGxPcGFjaXR5OiAwLjhcbiAgfSlcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIG9wdHNcbiAqIEBwcml2YXRlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IChvcHRzKSA9PiB7XG5cbiAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe1xuICAgIHJvdXRlX3BvaW50czogbnVsbCxcbiAgICBwbGFubmVkX3JvdXRlX2xpbmU6IG51bGwsXG4gICAgYWN0dWFsX3JvdXRlX3BvaW50czogbnVsbCxcbiAgICBhY3R1YWxfcm91dGVfbGluZTogbnVsbCxcbiAgICByZW5kZXJfZWxlbTogJ21hcCcsXG4gIH0sIG9wdHMpO1xuXG4gIGNvbnNvbGUubG9nKG9wdHMpXG5cbiAgbGV0IG1hcCA9IGRyYXdfYmFzZV9tYXAob3B0cylcblxuICBsZXQgZ2VvZGVzaWNMYXllciA9IGxlYWZsZXQuZ2VvZGVzaWMoW10sIHtcbiAgICB3ZWlnaHQ6IDcsXG4gICAgb3BhY2l0eTogMC45LFxuICAgIGNvbG9yOiBQTEFOX1JPVVRFX0NPTE9SLFxuICAgIHN0ZXBzOiA1MCxcbiAgICB3cmFwOiBmYWxzZSxcbiAgfSkuYWRkVG8obWFwKVxuXG4gIGdlb2Rlc2ljTGF5ZXIuZ2VvSnNvbihvcHRzLnBsYW5uZWRfcm91dGVfbGluZSlcblxuICB0cnkge1xuICAgIG1hcC5maXRCb3VuZHMoZ2VvZGVzaWNMYXllci5nZXRCb3VuZHMoKSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKGUpXG4gIH1cblxuICAvLyBEcmF3IHRoZSByb3V0ZSBwb2ludHMgYWZ0ZXJcbiAgaWYgKG9wdHMucm91dGVfcG9pbnRzICE9PSBudWxsKSB7XG4gICAgbGV0IHJvdXRlX3BvaW50cyA9IGxlYWZsZXQuZ2VvSlNPTihvcHRzLnJvdXRlX3BvaW50cywge1xuICAgICAgb25FYWNoRmVhdHVyZTogb25GZWF0dXJlUG9pbnRDbGljayxcbiAgICAgIHBvaW50VG9MYXllcjogcG9pbnRUb0xheWVyLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgJ2NvbG9yJzogUExBTl9ST1VURV9DT0xPUixcbiAgICAgICAgJ3dlaWdodCc6IDUsXG4gICAgICAgICdvcGFjaXR5JzogMC42NSxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIHJvdXRlX3BvaW50cy5hZGRUbyhtYXApXG4gIH1cblxuICAvKipcbiAgICogZHJhdyB0aGUgYWN0dWFsIHJvdXRlXG4gICAqL1xuXG4gIGlmIChvcHRzLmFjdHVhbF9yb3V0ZV9saW5lICE9PSBudWxsICYmIG9wdHMuYWN0dWFsX3JvdXRlX2xpbmUuZmVhdHVyZXMubGVuZ3RoID4gMCkge1xuICAgIGxldCBnZW9kZXNpY0xheWVyID0gbGVhZmxldC5nZW9kZXNpYyhbXSwge1xuICAgICAgd2VpZ2h0OiA3LFxuICAgICAgb3BhY2l0eTogMC45LFxuICAgICAgY29sb3I6IEFDVFVBTF9ST1VURV9DT0xPUixcbiAgICAgIHN0ZXBzOiA1MCxcbiAgICAgIHdyYXA6IGZhbHNlLFxuICAgIH0pLmFkZFRvKG1hcClcblxuICAgIGdlb2Rlc2ljTGF5ZXIuZ2VvSnNvbihvcHRzLmFjdHVhbF9yb3V0ZV9saW5lKVxuXG4gICAgdHJ5IHtcbiAgICAgIG1hcC5maXRCb3VuZHMoZ2VvZGVzaWNMYXllci5nZXRCb3VuZHMoKSlcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmxvZyhlKVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLmFjdHVhbF9yb3V0ZV9wb2ludHMgIT09IG51bGwgJiYgb3B0cy5hY3R1YWxfcm91dGVfcG9pbnRzLmZlYXR1cmVzLmxlbmd0aCA+IDApIHtcbiAgICBsZXQgcm91dGVfcG9pbnRzID0gbGVhZmxldC5nZW9KU09OKG9wdHMuYWN0dWFsX3JvdXRlX3BvaW50cywge1xuICAgICAgb25FYWNoRmVhdHVyZTogb25GZWF0dXJlUG9pbnRDbGljayxcbiAgICAgIHBvaW50VG9MYXllcjogcG9pbnRUb0xheWVyLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgJ2NvbG9yJzogQUNUVUFMX1JPVVRFX0NPTE9SLFxuICAgICAgICAnd2VpZ2h0JzogNSxcbiAgICAgICAgJ29wYWNpdHknOiAwLjY1LFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgcm91dGVfcG9pbnRzLmFkZFRvKG1hcClcbiAgfVxufTtcblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9qcy9tYXBzL3JvdXRlX21hcC5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./resources/js/maps/route_map.js\n"); +eval("/* unused harmony export onFeaturePointClick */\n/* unused harmony export pointToLayer */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__base_map__ = __webpack_require__(\"./resources/js/maps/base_map.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__config__ = __webpack_require__(\"./resources/js/maps/config.js\");\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__helpers__ = __webpack_require__(\"./resources/js/maps/helpers.js\");\n\nvar leaflet = __webpack_require__(\"./node_modules/leaflet/dist/leaflet-src.js\");\n\n\n\n\n\n/**\n * Show some popup text when a feature is clicked on\n * @param feature\n * @param layer\n */\nvar onFeaturePointClick = function onFeaturePointClick(feature, layer) {\n var popup_html = '';\n if (feature.properties && feature.properties.popup) {\n popup_html += feature.properties.popup;\n }\n\n layer.bindPopup(popup_html);\n};\n\n/**\n * Show each point as a marker\n * @param feature\n * @param latlng\n * @returns {*}\n */\nvar pointToLayer = function pointToLayer(feature, latlng) {\n return leaflet.circleMarker(latlng, {\n radius: 12,\n fillColor: '#ff7800',\n color: '#000',\n weight: 1,\n opacity: 1,\n fillOpacity: 0.8\n });\n};\n\n/**\n *\n * @param opts\n * @private\n */\n/* harmony default export */ __webpack_exports__[\"a\"] = (function (opts) {\n\n opts = Object.assign({\n route_points: null,\n planned_route_line: null,\n actual_route_points: null,\n actual_route_line: null,\n render_elem: 'map',\n metar_wms: {\n url: '',\n params: {}\n }\n }, opts);\n\n console.log(opts);\n\n var map = Object(__WEBPACK_IMPORTED_MODULE_0__base_map__[\"a\" /* default */])(opts);\n\n if (opts.metar_wms.url !== '') {\n Object(__WEBPACK_IMPORTED_MODULE_2__helpers__[\"a\" /* addWMSLayer */])(map, opts.metar_wms);\n }\n\n var geodesicLayer = leaflet.geodesic([], {\n weight: 7,\n opacity: 0.9,\n color: __WEBPACK_IMPORTED_MODULE_1__config__[\"b\" /* PLAN_ROUTE_COLOR */],\n steps: 50,\n wrap: false\n }).addTo(map);\n\n geodesicLayer.geoJson(opts.planned_route_line);\n\n try {\n map.fitBounds(geodesicLayer.getBounds());\n } catch (e) {\n console.log(e);\n }\n\n // Draw the route points after\n if (opts.route_points !== null) {\n var route_points = leaflet.geoJSON(opts.route_points, {\n onEachFeature: onFeaturePointClick,\n pointToLayer: pointToLayer,\n style: {\n 'color': __WEBPACK_IMPORTED_MODULE_1__config__[\"b\" /* PLAN_ROUTE_COLOR */],\n 'weight': 5,\n 'opacity': 0.65\n }\n });\n\n route_points.addTo(map);\n }\n\n /**\n * draw the actual route\n */\n\n if (opts.actual_route_line !== null && opts.actual_route_line.features.length > 0) {\n var _geodesicLayer = leaflet.geodesic([], {\n weight: 7,\n opacity: 0.9,\n color: __WEBPACK_IMPORTED_MODULE_1__config__[\"a\" /* ACTUAL_ROUTE_COLOR */],\n steps: 50,\n wrap: false\n }).addTo(map);\n\n _geodesicLayer.geoJson(opts.actual_route_line);\n\n try {\n map.fitBounds(_geodesicLayer.getBounds());\n } catch (e) {\n console.log(e);\n }\n }\n\n if (opts.actual_route_points !== null && opts.actual_route_points.features.length > 0) {\n var _route_points = leaflet.geoJSON(opts.actual_route_points, {\n onEachFeature: onFeaturePointClick,\n pointToLayer: pointToLayer,\n style: {\n 'color': __WEBPACK_IMPORTED_MODULE_1__config__[\"a\" /* ACTUAL_ROUTE_COLOR */],\n 'weight': 5,\n 'opacity': 0.65\n }\n });\n\n _route_points.addTo(map);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbWFwcy9yb3V0ZV9tYXAuanM/YTc0NSJdLCJuYW1lcyI6WyJsZWFmbGV0IiwicmVxdWlyZSIsIm9uRmVhdHVyZVBvaW50Q2xpY2siLCJmZWF0dXJlIiwibGF5ZXIiLCJwb3B1cF9odG1sIiwicHJvcGVydGllcyIsInBvcHVwIiwiYmluZFBvcHVwIiwicG9pbnRUb0xheWVyIiwibGF0bG5nIiwiY2lyY2xlTWFya2VyIiwicmFkaXVzIiwiZmlsbENvbG9yIiwiY29sb3IiLCJ3ZWlnaHQiLCJvcGFjaXR5IiwiZmlsbE9wYWNpdHkiLCJvcHRzIiwiT2JqZWN0IiwiYXNzaWduIiwicm91dGVfcG9pbnRzIiwicGxhbm5lZF9yb3V0ZV9saW5lIiwiYWN0dWFsX3JvdXRlX3BvaW50cyIsImFjdHVhbF9yb3V0ZV9saW5lIiwicmVuZGVyX2VsZW0iLCJtZXRhcl93bXMiLCJ1cmwiLCJwYXJhbXMiLCJjb25zb2xlIiwibG9nIiwibWFwIiwiZHJhd19iYXNlX21hcCIsImFkZFdNU0xheWVyIiwiZ2VvZGVzaWNMYXllciIsImdlb2Rlc2ljIiwic3RlcHMiLCJ3cmFwIiwiYWRkVG8iLCJnZW9Kc29uIiwiZml0Qm91bmRzIiwiZ2V0Qm91bmRzIiwiZSIsImdlb0pTT04iLCJvbkVhY2hGZWF0dXJlIiwic3R5bGUiLCJmZWF0dXJlcyIsImxlbmd0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBTUEsVUFBVSxtQkFBQUMsQ0FBUSw0Q0FBUixDQUFoQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7O0FBS08sSUFBTUMsc0JBQXNCLFNBQXRCQSxtQkFBc0IsQ0FBQ0MsT0FBRCxFQUFVQyxLQUFWLEVBQW9CO0FBQ3JELE1BQUlDLGFBQWEsRUFBakI7QUFDQSxNQUFJRixRQUFRRyxVQUFSLElBQXNCSCxRQUFRRyxVQUFSLENBQW1CQyxLQUE3QyxFQUFvRDtBQUNsREYsa0JBQWNGLFFBQVFHLFVBQVIsQ0FBbUJDLEtBQWpDO0FBQ0Q7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Q0MsTUFBbEMsR0FBMkMsQ0FBcEYsRUFBdUY7QUFDckYsUUFBSTFCLGdCQUFlckIsUUFBUTJDLE9BQVIsQ0FBZ0J6QixLQUFLSyxtQkFBckIsRUFBMEM7QUFDM0RxQixxQkFBZTFDLG1CQUQ0QztBQUUzRE8sb0JBQWNBLFlBRjZDO0FBRzNEb0MsYUFBTztBQUNMLGlCQUFTLG1FQURKO0FBRUwsa0JBQVUsQ0FGTDtBQUdMLG1CQUFXO0FBSE47QUFIb0QsS0FBMUMsQ0FBbkI7O0FBVUF4QixrQkFBYWlCLEtBQWIsQ0FBbUJQLEdBQW5CO0FBQ0Q7QUFDRixDQXhGRCIsImZpbGUiOiIuL3Jlc291cmNlcy9qcy9tYXBzL3JvdXRlX21hcC5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuY29uc3QgbGVhZmxldCA9IHJlcXVpcmUoJ2xlYWZsZXQnKTtcblxuaW1wb3J0IGRyYXdfYmFzZV9tYXAgZnJvbSAnLi9iYXNlX21hcCdcbmltcG9ydCB7IEFDVFVBTF9ST1VURV9DT0xPUiwgUExBTl9ST1VURV9DT0xPUiB9IGZyb20gJy4vY29uZmlnJ1xuaW1wb3J0IHthZGRXTVNMYXllcn0gZnJvbSAnLi9oZWxwZXJzJztcblxuLyoqXG4gKiBTaG93IHNvbWUgcG9wdXAgdGV4dCB3aGVuIGEgZmVhdHVyZSBpcyBjbGlja2VkIG9uXG4gKiBAcGFyYW0gZmVhdHVyZVxuICogQHBhcmFtIGxheWVyXG4gKi9cbmV4cG9ydCBjb25zdCBvbkZlYXR1cmVQb2ludENsaWNrID0gKGZlYXR1cmUsIGxheWVyKSA9PiB7XG4gIGxldCBwb3B1cF9odG1sID0gJyc7XG4gIGlmIChmZWF0dXJlLnByb3BlcnRpZXMgJiYgZmVhdHVyZS5wcm9wZXJ0aWVzLnBvcHVwKSB7XG4gICAgcG9wdXBfaHRtbCArPSBmZWF0dXJlLnByb3BlcnRpZXMucG9wdXBcbiAgfVxuXG4gIGxheWVyLmJpbmRQb3B1cChwb3B1cF9odG1sKVxufTtcblxuLyoqXG4gKiBTaG93IGVhY2ggcG9pbnQgYXMgYSBtYXJrZXJcbiAqIEBwYXJhbSBmZWF0dXJlXG4gKiBAcGFyYW0gbGF0bG5nXG4gKiBAcmV0dXJucyB7Kn1cbiAqL1xuZXhwb3J0IGNvbnN0IHBvaW50VG9MYXllciA9IChmZWF0dXJlLCBsYXRsbmcpID0+IHtcbiAgcmV0dXJuIGxlYWZsZXQuY2lyY2xlTWFya2VyKGxhdGxuZywge1xuICAgIHJhZGl1czogMTIsXG4gICAgZmlsbENvbG9yOiAnI2ZmNzgwMCcsXG4gICAgY29sb3I6ICcjMDAwJyxcbiAgICB3ZWlnaHQ6IDEsXG4gICAgb3BhY2l0eTogMSxcbiAgICBmaWxsT3BhY2l0eTogMC44XG4gIH0pXG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBvcHRzXG4gKiBAcHJpdmF0ZVxuICovXG5leHBvcnQgZGVmYXVsdCAob3B0cykgPT4ge1xuXG4gIG9wdHMgPSBPYmplY3QuYXNzaWduKHtcbiAgICByb3V0ZV9wb2ludHM6IG51bGwsXG4gICAgcGxhbm5lZF9yb3V0ZV9saW5lOiBudWxsLFxuICAgIGFjdHVhbF9yb3V0ZV9wb2ludHM6IG51bGwsXG4gICAgYWN0dWFsX3JvdXRlX2xpbmU6IG51bGwsXG4gICAgcmVuZGVyX2VsZW06ICdtYXAnLFxuICAgIG1ldGFyX3dtczoge1xuICAgICAgICB1cmw6ICcnLFxuICAgICAgICBwYXJhbXM6IHt9XG4gICAgfSxcbiAgfSwgb3B0cyk7XG5cbiAgY29uc29sZS5sb2cob3B0cyk7XG5cbiAgbGV0IG1hcCA9IGRyYXdfYmFzZV9tYXAob3B0cyk7XG5cbiAgaWYgKG9wdHMubWV0YXJfd21zLnVybCAhPT0gJycpIHtcbiAgICAgIGFkZFdNU0xheWVyKG1hcCwgb3B0cy5tZXRhcl93bXMpO1xuICB9XG5cbiAgbGV0IGdlb2Rlc2ljTGF5ZXIgPSBsZWFmbGV0Lmdlb2Rlc2ljKFtdLCB7XG4gICAgd2VpZ2h0OiA3LFxuICAgIG9wYWNpdHk6IDAuOSxcbiAgICBjb2xvcjogUExBTl9ST1VURV9DT0xPUixcbiAgICBzdGVwczogNTAsXG4gICAgd3JhcDogZmFsc2UsXG4gIH0pLmFkZFRvKG1hcClcblxuICBnZW9kZXNpY0xheWVyLmdlb0pzb24ob3B0cy5wbGFubmVkX3JvdXRlX2xpbmUpXG5cbiAgdHJ5IHtcbiAgICBtYXAuZml0Qm91bmRzKGdlb2Rlc2ljTGF5ZXIuZ2V0Qm91bmRzKCkpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhlKVxuICB9XG5cbiAgLy8gRHJhdyB0aGUgcm91dGUgcG9pbnRzIGFmdGVyXG4gIGlmIChvcHRzLnJvdXRlX3BvaW50cyAhPT0gbnVsbCkge1xuICAgIGxldCByb3V0ZV9wb2ludHMgPSBsZWFmbGV0Lmdlb0pTT04ob3B0cy5yb3V0ZV9wb2ludHMsIHtcbiAgICAgIG9uRWFjaEZlYXR1cmU6IG9uRmVhdHVyZVBvaW50Q2xpY2ssXG4gICAgICBwb2ludFRvTGF5ZXI6IHBvaW50VG9MYXllcixcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgICdjb2xvcic6IFBMQU5fUk9VVEVfQ09MT1IsXG4gICAgICAgICd3ZWlnaHQnOiA1LFxuICAgICAgICAnb3BhY2l0eSc6IDAuNjUsXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICByb3V0ZV9wb2ludHMuYWRkVG8obWFwKVxuICB9XG5cbiAgLyoqXG4gICAqIGRyYXcgdGhlIGFjdHVhbCByb3V0ZVxuICAgKi9cblxuICBpZiAob3B0cy5hY3R1YWxfcm91dGVfbGluZSAhPT0gbnVsbCAmJiBvcHRzLmFjdHVhbF9yb3V0ZV9saW5lLmZlYXR1cmVzLmxlbmd0aCA+IDApIHtcbiAgICBsZXQgZ2VvZGVzaWNMYXllciA9IGxlYWZsZXQuZ2VvZGVzaWMoW10sIHtcbiAgICAgIHdlaWdodDogNyxcbiAgICAgIG9wYWNpdHk6IDAuOSxcbiAgICAgIGNvbG9yOiBBQ1RVQUxfUk9VVEVfQ09MT1IsXG4gICAgICBzdGVwczogNTAsXG4gICAgICB3cmFwOiBmYWxzZSxcbiAgICB9KS5hZGRUbyhtYXApXG5cbiAgICBnZW9kZXNpY0xheWVyLmdlb0pzb24ob3B0cy5hY3R1YWxfcm91dGVfbGluZSlcblxuICAgIHRyeSB7XG4gICAgICBtYXAuZml0Qm91bmRzKGdlb2Rlc2ljTGF5ZXIuZ2V0Qm91bmRzKCkpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coZSlcbiAgICB9XG4gIH1cblxuICBpZiAob3B0cy5hY3R1YWxfcm91dGVfcG9pbnRzICE9PSBudWxsICYmIG9wdHMuYWN0dWFsX3JvdXRlX3BvaW50cy5mZWF0dXJlcy5sZW5ndGggPiAwKSB7XG4gICAgbGV0IHJvdXRlX3BvaW50cyA9IGxlYWZsZXQuZ2VvSlNPTihvcHRzLmFjdHVhbF9yb3V0ZV9wb2ludHMsIHtcbiAgICAgIG9uRWFjaEZlYXR1cmU6IG9uRmVhdHVyZVBvaW50Q2xpY2ssXG4gICAgICBwb2ludFRvTGF5ZXI6IHBvaW50VG9MYXllcixcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgICdjb2xvcic6IEFDVFVBTF9ST1VURV9DT0xPUixcbiAgICAgICAgJ3dlaWdodCc6IDUsXG4gICAgICAgICdvcGFjaXR5JzogMC42NSxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIHJvdXRlX3BvaW50cy5hZGRUbyhtYXApXG4gIH1cbn07XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yZXNvdXJjZXMvanMvbWFwcy9yb3V0ZV9tYXAuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/maps/route_map.js\n"); /***/ }), diff --git a/public/assets/global/css/images/layers-2x.png b/public/assets/global/css/images/layers-2x.png new file mode 100644 index 00000000..200c333d Binary files /dev/null and b/public/assets/global/css/images/layers-2x.png differ diff --git a/public/assets/global/css/images/layers.png b/public/assets/global/css/images/layers.png new file mode 100644 index 00000000..1a72e578 Binary files /dev/null and b/public/assets/global/css/images/layers.png differ diff --git a/public/assets/global/css/images/marker-icon-2x.png b/public/assets/global/css/images/marker-icon-2x.png new file mode 100644 index 00000000..88f9e501 Binary files /dev/null and b/public/assets/global/css/images/marker-icon-2x.png differ diff --git a/public/assets/global/css/images/marker-icon.png b/public/assets/global/css/images/marker-icon.png new file mode 100644 index 00000000..950edf24 Binary files /dev/null and b/public/assets/global/css/images/marker-icon.png differ diff --git a/public/assets/global/css/images/marker-shadow.png b/public/assets/global/css/images/marker-shadow.png new file mode 100644 index 00000000..9fd29795 Binary files /dev/null and b/public/assets/global/css/images/marker-shadow.png differ diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 8511d2e2..fe89ebff 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,8 +1,8 @@ { - "/assets/frontend/js/app.js": "/assets/frontend/js/app.js?id=373465bdf8c91ab66596", + "/assets/frontend/js/app.js": "/assets/frontend/js/app.js?id=9fc76ac10f8d1c1906a0", "/assets/frontend/css/now-ui-kit.css": "/assets/frontend/css/now-ui-kit.css?id=dae9f7e5d10b71e28486", "/assets/admin/css/vendor.min.css": "/assets/admin/css/vendor.min.css?id=a11d81c6bf8d7a548c86", - "/assets/admin/js/app.js": "/assets/admin/js/app.js?id=7cc40ba818ed0f94c3fb", + "/assets/admin/js/app.js": "/assets/admin/js/app.js?id=aa2a19e307306470a073", "/assets/installer/js/app.js": "/assets/installer/js/app.js?id=c65781eda730445d666e", "/assets/fonts/glyphicons-halflings-regular.woff2": "/assets/fonts/glyphicons-halflings-regular.woff2?id=b5b5055c6d812c0f9f0d", "/assets/admin/fonts/glyphicons-halflings-regular.woff2": "/assets/admin/fonts/glyphicons-halflings-regular.woff2?id=b5b5055c6d812c0f9f0d", diff --git a/resources/js/maps/airspace_map.js b/resources/js/maps/airspace_map.js index 881266f2..6718e446 100644 --- a/resources/js/maps/airspace_map.js +++ b/resources/js/maps/airspace_map.js @@ -2,6 +2,7 @@ const leaflet = require('leaflet'); import draw_base_map from './base_map' +import { addWMSLayer } from './helpers'; /** * Render a map with the airspace, etc around a given set of coords @@ -17,16 +18,27 @@ export default (opts) => { zoom: 12, layers: [], set_marker: true, + marker_popup: '', + + // Passed from the config/maps.php file + metar_wms: { + url: '', + params: {} + }, }, opts); - let map = draw_base_map(opts) - const coords = [opts.lat, opts.lon] - console.log('Applying coords', coords) + let map = draw_base_map(opts); + const coords = [opts.lat, opts.lon]; + console.log('Applying coords', coords); - map.setView(coords, opts.zoom) + map.setView(coords, opts.zoom); if (opts.set_marker === true) { - leaflet.marker(coords).addTo(map) + leaflet.marker(coords).addTo(map).bindPopup(opts.marker_popup); } - return map + if(opts.metar_wms.url !== '') { + addWMSLayer(map, opts.metar_wms); + } + + return map; }; diff --git a/resources/js/maps/base_map.js b/resources/js/maps/base_map.js index 9b56ca03..208d5daf 100644 --- a/resources/js/maps/base_map.js +++ b/resources/js/maps/base_map.js @@ -50,14 +50,14 @@ export default (opts) => { feature_groups.push(openaip_cached_basemap); */ - const openaip_basemap_phys_osm = leaflet.featureGroup(feature_groups) + const openaip_basemap_phys_osm = leaflet.featureGroup(feature_groups); let map = leaflet.map('map', { layers: [openaip_basemap_phys_osm], center: opts.center, zoom: opts.zoom, scrollWheelZoom: false, - }) + }); const attrib = leaflet.control.attribution({position: 'bottomleft'}) attrib.addAttribution('Thunderforest') diff --git a/resources/js/maps/helpers.js b/resources/js/maps/helpers.js new file mode 100644 index 00000000..4df02a77 --- /dev/null +++ b/resources/js/maps/helpers.js @@ -0,0 +1,47 @@ + +const leaflet = require('leaflet'); + +/** + * Add a WMS layer to a map. opts must be: + * { + * url: '', + * params: {} + * } + * @param map + * @param opts + */ +export function addWMSLayer(map, opts) { + + if(opts.url === '') { + return; + } + + opts.params = Object.assign({ + format: 'image/png', + transparent: true, + maxZoom: 14, + minZoom: 4, + }, opts.params); + + const mlayer = leaflet.tileLayer.wms( + opts.url, opts.params + ); + + mlayer.addTo(map); + + return mlayer; +} + +/** + * Show a popup + * @param feature + * @param layer + */ +export function showFeaturePopup(feature, layer) { + let popup_html = ''; + if (feature.properties && feature.properties.popup) { + popup_html += feature.properties.popup + } + + layer.bindPopup(popup_html) +} diff --git a/resources/js/maps/route_map.js b/resources/js/maps/route_map.js index 19c3f6cc..2549a3c0 100644 --- a/resources/js/maps/route_map.js +++ b/resources/js/maps/route_map.js @@ -3,6 +3,7 @@ const leaflet = require('leaflet'); import draw_base_map from './base_map' import { ACTUAL_ROUTE_COLOR, PLAN_ROUTE_COLOR } from './config' +import {addWMSLayer} from './helpers'; /** * Show some popup text when a feature is clicked on @@ -48,11 +49,19 @@ export default (opts) => { actual_route_points: null, actual_route_line: null, render_elem: 'map', + metar_wms: { + url: '', + params: {} + }, }, opts); - console.log(opts) + console.log(opts); - let map = draw_base_map(opts) + let map = draw_base_map(opts); + + if (opts.metar_wms.url !== '') { + addWMSLayer(map, opts.metar_wms); + } let geodesicLayer = leaflet.geodesic([], { weight: 7, diff --git a/resources/stubs/installer/config.stub b/resources/stubs/installer/config.stub index 2c240b3b..b5f9da92 100644 --- a/resources/stubs/installer/config.stub +++ b/resources/stubs/installer/config.stub @@ -37,6 +37,13 @@ return [ 'api_key' => '', ], + // For METAR features, register for an API key at + // https://www.checkwx.com + 'checkwx' => [ + 'url' => 'https://api.checkwx.com', + 'api_key' => false, + ], + # # Other settings and configuration you might not need to modify # diff --git a/resources/views/layouts/default/airports/show.blade.php b/resources/views/layouts/default/airports/show.blade.php index 8b9335aa..66bdb72c 100644 --- a/resources/views/layouts/default/airports/show.blade.php +++ b/resources/views/layouts/default/airports/show.blade.php @@ -3,19 +3,28 @@ @section('content')
| Departure | -{{ $flight->dpt_airport->icao }} @ {{ $flight->dpt_time }} | ++ + {{ $flight->dpt_airport->full_name }} + @ {{ $flight->dpt_time }} |
| Arrival | -{{ $flight->arr_airport->icao }} @ {{ $flight->arr_time }} | ++ + {{ $flight->arr_airport->full_name }} @ {{ $flight->arr_time }} |
| Route Code/Leg: | -{{ $flight->route_code ?: '-' }}/{{ $flight->route_leg ?: '-' }} | -|
| Alternate Airport | - @if($flight->alt_airport_id) - {{ $flight->alt_airport->full_name }} - @else - - - @endif + {{ $flight->alt_airport->full_name }} | |
| Route | @@ -49,5 +46,20 @@
| DEP | -{{ $pirep->dpt_airport_id }} | -
| ARR | -{{ $pirep->arr_airport_id }} | -
| Flight Time | {{ Utils::minutesToTimeString($pirep->flight_time) }} | diff --git a/resources/views/layouts/default/pireps/show.blade.php b/resources/views/layouts/default/pireps/show.blade.php index fff8faf7..d4b8783f 100644 --- a/resources/views/layouts/default/pireps/show.blade.php +++ b/resources/views/layouts/default/pireps/show.blade.php @@ -35,9 +35,11 @@
| Departure/Arrival | - {{ $pirep->dpt_airport->icao }} - {{ $pirep->dpt_airport->name }} + + {{ $pirep->dpt_airport->full_name }} to - {{ $pirep->arr_airport->icao }} - {{ $pirep->arr_airport->name }} + + {{ $pirep->arr_airport->full_name }} |
|
+
+ {{$data->raw_text}}
+
+ |
+ |
| Updated: {{$data->observed}} | +|
| Conditions | ++ {{$data->flight_category}}, + @if($unit_temp === 'f') + {{$data->temperature->fahrenheit}}°F + @else + {{$data->temperature->celsius}}°C + @endif + , visibility + @if($unit_dist === 'km') + {{intval(str_replace(',', '', $data->visibility->meters)) / 1000}} + @else + {{$data->visibility->miles}} + @endif + + {{$data->humidity_percent}}% humidity + | +
| Barometer | +{{ $data->barometer->hg }}hg/{{ $data->barometer->mb }}mb | +
| Clouds | +
+ @foreach($data->clouds as $cloud)
+ + {{$cloud->text}} @ + @if($unit_alt === 'ft') + {{$cloud->base_feet_agl}} + @else + {{$cloud->base_meters_agl}} + @endif + {{$unit_alt}} + + @endforeach + |
+
| Wind | ++ {{$data->wind->speed_kts}}kts @ {{$data->wind->degrees}}, + @if(property_exists($data->wind, 'gusts_kts')) + gusts to {{$data->wind->gusts_kts}} + @endif + | +