From 0bed38c78b4a2ec040df46263ac939d1d2d64a5f Mon Sep 17 00:00:00 2001 From: Nabeel Shahzad Date: Sat, 31 Mar 2018 15:57:30 -0500 Subject: [PATCH] Add airport overview page and links to it #225 --- ...017_06_07_014930_create_settings_table.php | 9 +++ app/Support/Http.php | 32 +++++++++ app/Widgets/CheckWx.php | 52 ++++++++++++++ app/helpers.php | 26 +++++++ config/checkwx.php | 10 +++ config/map.php | 16 +++++ config/phpvms.php | 6 -- public/assets/admin/js/app.js | 14 +++- public/assets/frontend/js/app.js | 14 +++- public/assets/global/css/images/layers-2x.png | Bin 0 -> 1259 bytes public/assets/global/css/images/layers.png | Bin 0 -> 696 bytes .../global/css/images/marker-icon-2x.png | Bin 0 -> 2464 bytes .../assets/global/css/images/marker-icon.png | Bin 0 -> 1466 bytes .../global/css/images/marker-shadow.png | Bin 0 -> 618 bytes public/mix-manifest.json | 4 +- resources/js/maps/airspace_map.js | 24 +++++-- resources/js/maps/base_map.js | 4 +- resources/js/maps/helpers.js | 47 +++++++++++++ resources/js/maps/route_map.js | 13 +++- resources/stubs/installer/config.stub | 7 ++ .../layouts/default/airports/show.blade.php | 16 +++-- .../layouts/default/flights/map.blade.php | 1 + .../layouts/default/flights/show.blade.php | 42 ++++++++---- .../layouts/default/flights/table.blade.php | 6 +- .../default/pireps/pirep_card.blade.php | 20 +++--- .../layouts/default/pireps/show.blade.php | 6 +- .../default/widgets/airspace_map.blade.php | 1 + .../default/widgets/check_wx.blade.php | 64 ++++++++++++++++++ webpack.mix.js | 2 + 29 files changed, 380 insertions(+), 56 deletions(-) create mode 100644 app/Support/Http.php create mode 100644 app/Widgets/CheckWx.php create mode 100644 config/checkwx.php create mode 100644 config/map.php create mode 100644 public/assets/global/css/images/layers-2x.png create mode 100644 public/assets/global/css/images/layers.png create mode 100644 public/assets/global/css/images/marker-icon-2x.png create mode 100644 public/assets/global/css/images/marker-icon.png create mode 100644 public/assets/global/css/images/marker-shadow.png create mode 100644 resources/js/maps/helpers.js create mode 100644 resources/views/layouts/default/widgets/check_wx.blade.php 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 0000000000000000000000000000000000000000..200c333dca9652ac4cba004d609e5af4eee168c1 GIT binary patch literal 1259 zcmVFhCYNy;#0irRPomHqW|G1C*;4?@4#E?jH>?v@U%cy?3dQAc-DchXVErpOh~ z-jbon+tNbnl6hoEb;)TVk+%hTDDi_G%i3*RZ&15!$Fjr^f;Ke&A@|?=`2&+{zr+3a z{D*=t(`AXyS%X7N z%a#RZw6vD^t_rnM`L4E>m=U&R!A-&}nZIi$BOPvkhrCuUe@BN~-lRD)f44;J%TwgE zcze8u!PQ_NR7?o(NylLXVTfDO zxs5=@|GsYEsNo4M#nT%N!UE(?dnS)t2+{ELYAFp*3=iF=|EQnTp`#vlSXuGVraYo? z+RCzXo6h3qA8{KG?S4nE(lM+;Eb4nT3XV;7gcAxUi5m)`k5tv}cPy()8ZR3TLW3I- zAS^}cq-IJvL7a4RgR!yk@~RT%$lA7{L5ES*hyx)M4(yxI$Ub(4f)K|^v1>zvwQY!_ zIrWw8q9GS^!Dp~}+?mbnB6jDF8mVlbQ!jFKDY;w=7;XO{9bq7>LXGK24WA`;rL)_Z z)&j}pbV(;6gY;VMhbxgvn`X;6x}VUEE-7 z%)7j-%t8S=ZL3yc)HbXDAqJZvBTPoiW_A-+a8m3_Z?v{DN7Tnr#O_VUMT0UBt$;p` zDh6JbGHN8JJ*JN%y2%msb97@_S>9!%Egwk;?PEkU9ntz&3uR}%Fj5d$JHQbQb3}a{ zSzFT^#n=VInPpcAS}CNxj?_ zVscANk5Cfz(51EI1pz};AWWb|kgbYNb4wCEGUn3+eMUMV?1-{=I4TlmLJMot@rd07 zZuo2hk1ccu{YmGkcYdWAVdk{Z4Nm?^cTD&}jGm+Q1SYIXMwmG*oO*83&#>l%nbR`G zhh=lZ%xIb7kU3#;TBbfECrnC9P=-XpL|TG2BoZdj61*XiFbW8?1Z_wp%#;>${SUIy V$8qr;L*)Pf002ovPDHLkV1hYLS~36t literal 0 HcmV?d00001 diff --git a/public/assets/global/css/images/layers.png b/public/assets/global/css/images/layers.png new file mode 100644 index 0000000000000000000000000000000000000000..1a72e5784b2b456eac5d7670738db80697af3377 GIT binary patch literal 696 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 e-I|>x8~*?ZhF3snGbtJX0000cOl4 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..950edf24677ded147df13b26f91baa2b0fa70513 GIT binary patch literal 1466 zcmV;r1x5OaP)P001cn1^@s6z>|W`000GnNklGNuHDcIX17Zdjl&3`L?0sTjIws<{((Dh&g-s0<@jYQyl?D*X^?%13;ml^gy> ziMrY_^1WI=(g@LMizu=zCoA>C`6|QEq1eV92k*7m>G65*&@&6)aC&e}G zI)pf-Za|N`DT&Cn1J|o`19mumxW~hiKiKyc-P`S@q)rdTo84@QI@;0yXrG%9uhI>A zG5QHb6s4=<6xy{1 z@NMxEkryp{LS44%z$3lP^cX!9+2-;CTt3wM4(k*#C{aiIiLuB>jJj;KPhPzIC00bL zU3a#;aJld94lCW=`4&aAy8M7PY=HQ>O%$YEP4c4UY#CRxfgbE~(|uiI=YS8q;O9y6 zmIkXzR`}p7ti|PrM3a}WMnR=3NVnWdAAR>b9X@)DKL6=YsvmH%?I24wdq?Gh54_;# z$?_LvgjEdspdQlft#4CQ z`2Zyvy?*)N1Ftw|{_hakhG9WjS?Az@I@+IZ8JbWewR!XUK4&6346+d#~gsE0SY(LX8&JfY>Aj)RxGy96nwhs2rv zzW6pTnMpFkDSkT*a*6Dx|u@ds6ISVn0@^RmIsKZ5Y;bazbc;tTSq(kg(=481ODrPyNB6n z-$+U}(w$m6U6H$w17Bw+wDaFIe~GvNMYvnw31MpY0eQKT9l>SU``8k7w4)z!GZKMI z#_cEKq7k~i%nlK@6c-K?+R;B#5$?T#YpKD`t_4bAs^#E+@5QW$@OX3*`;(#{U^d-vY)&xEE>n5lYl&T?Amke9$Lam@{1K@O ze*LXqlKQHiv=gx+V^Cbb2?z@ISBQ*3amF;9UJ3SBg(N|710TLamQmYZ&Qjn2LuO<* zCZlB4n%@pc&7NNnY1}x+NWpHlq`OJEo|`aYN9<`RBUB+79g;>dgb6YlfN#kGL?lO_ z!6~M^7sOnbsUkKk<@Ysie&`G>ruxH&Mgy&8;i=A zB9OO!xR{AyODw>DS-q5YM{0ExFEAzt zm>RdS+ssW(-8|?xr0(?$vBVB*%(xDLtq3Hf0I5yFm<_g=W2`QWAax{1rWVH=I!VrP zs(rTFX@W#t$hXNvbgX`gK&^w_YD;CQ!B@e0QbLIWaKAXQe2-kkloo;{iF#6}z!4=W zi$giRj1{ zt;2w`VSCF#WE&*ev7jpsC=6175@(~nTE2;7M-L((0bH@yG}-TB$R~WXd?tA$s3|%y zA`9$sA(>F%J3ioz<-LJl*^o1|w84l>HBR`>3l9c8$5Xr@xCiIQ7{x$fMCzOk_-M=% z+{a_Q#;42`#KfUte@$NT77uaTz?b-fBe)1s5XE$yA79fm?KqM^VgLXD07*qoM6N<$ Ef<_J(9smFU literal 0 HcmV?d00001 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')
-
+

{{ $airport->full_name }}

-
+
+ + {{ Widget::checkWx([ + 'icao' => $airport->icao, + ]) }} + +
+
{{ Widget::airspaceMap([ 'width' => '100%', - 'height' => '250px', + 'height' => '400px', 'lat' => $airport->lat, 'lon' => $airport->lon, ]) }}
+
+

Inbound Flights

@@ -26,7 +35,6 @@ @else @each('airports.table', $inbound_flights, 'flight') @endif -

Outbound Flights

@each('airports.table', $outbound_flights, 'flight')
diff --git a/resources/views/layouts/default/flights/map.blade.php b/resources/views/layouts/default/flights/map.blade.php index 8fdc7a4c..3d803138 100644 --- a/resources/views/layouts/default/flights/map.blade.php +++ b/resources/views/layouts/default/flights/map.blade.php @@ -14,6 +14,7 @@ phpvms.map.render_route_map({ route_points: {!! json_encode($map_features['route_points']) !!}, planned_route_line: {!! json_encode($map_features['planned_route_line']) !!}, + metar_wms: {!! json_encode(config('map.metar_wms')) !!}, }); @endsection diff --git a/resources/views/layouts/default/flights/show.blade.php b/resources/views/layouts/default/flights/show.blade.php index d9fc22f0..9d2318ad 100644 --- a/resources/views/layouts/default/flights/show.blade.php +++ b/resources/views/layouts/default/flights/show.blade.php @@ -4,7 +4,7 @@ @section('content')
-

{{ $flight->ident }} - {{ $flight->dpt_airport->full_name }} to {{ $flight->arr_airport->full_name }}

+

{{ $flight->ident }}

@@ -13,29 +13,26 @@ - + - + - - - - - - + @if($flight->alt_airport_id) + @endif @@ -49,5 +46,20 @@
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
-@include("flights.map") +
+
+
+
{{$flight->dpt_airport_id}} METAR
+ {{ Widget::checkWx([ + 'icao' => $flight->dpt_airport_id, + ]) }} +
+
+
{{$flight->arr_airport_id}} METAR
+ {{ Widget::checkWx([ + 'icao' => $flight->arr_airport_id, + ]) }} +
+
+@include('flights.map') @endsection diff --git a/resources/views/layouts/default/flights/table.blade.php b/resources/views/layouts/default/flights/table.blade.php index 509c5c58..57206fba 100644 --- a/resources/views/layouts/default/flights/table.blade.php +++ b/resources/views/layouts/default/flights/table.blade.php @@ -32,10 +32,12 @@
DEP  - {{ $flight->dpt_airport->icao }}@if($flight->dpt_time), {{ $flight->dpt_time }}@endif + + {{ $flight->dpt_airport->icao }}@if($flight->dpt_time), {{ $flight->dpt_time }}@endif
ARR  - {{ $flight->arr_airport->icao }}@if($flight->arr_time), {{ $flight->arr_time }}@endif + + {{ $flight->arr_airport->icao }}@if($flight->arr_time), {{ $flight->arr_time }}@endif
@if($flight->distance) DISTANCE  diff --git a/resources/views/layouts/default/pireps/pirep_card.blade.php b/resources/views/layouts/default/pireps/pirep_card.blade.php index 3c055ed4..271fe320 100644 --- a/resources/views/layouts/default/pireps/pirep_card.blade.php +++ b/resources/views/layouts/default/pireps/pirep_card.blade.php @@ -1,12 +1,22 @@
-
+ +
@if($pirep->state === PirepState::PENDING)
@@ -24,14 +34,6 @@
- - - - - - - - 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 @@ diff --git a/resources/views/layouts/default/widgets/airspace_map.blade.php b/resources/views/layouts/default/widgets/airspace_map.blade.php index 9506b8d6..563925ba 100644 --- a/resources/views/layouts/default/widgets/airspace_map.blade.php +++ b/resources/views/layouts/default/widgets/airspace_map.blade.php @@ -5,6 +5,7 @@ phpvms.map.render_airspace_map({ lat: "{{$config['lat']}}", lon: "{{$config['lon']}}", + metar_wms: {!! json_encode(config('map.metar_wms')) !!}, }); @endsection diff --git a/resources/views/layouts/default/widgets/check_wx.blade.php b/resources/views/layouts/default/widgets/check_wx.blade.php new file mode 100644 index 00000000..794e5bec --- /dev/null +++ b/resources/views/layouts/default/widgets/check_wx.blade.php @@ -0,0 +1,64 @@ +@if(!$data) +

METAR/TAF data could not be retrieved

+@else +
DEP {{ $pirep->dpt_airport_id }}
ARR {{ $pirep->arr_airport_id }} 
Flight Time  {{ Utils::minutesToTimeString($pirep->flight_time) }}
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 +
+@endif diff --git a/webpack.mix.js b/webpack.mix.js index 2c763db7..414f8560 100644 --- a/webpack.mix.js +++ b/webpack.mix.js @@ -12,6 +12,7 @@ mix.copy('node_modules/bootstrap3/fonts/*.woff2', 'public/assets/admin/fonts/'); mix.copy('node_modules/x-editable/dist/bootstrap3-editable/img/*', 'public/assets/admin/img/'); mix.copy('node_modules/jquery/dist/jquery.js', 'public/assets/global/js/'); mix.copy('node_modules/flag-icon-css/flags/', 'public/assets/global/flags/'); +mix.copy('node_modules/leaflet/dist/images/', 'public/assets/global/css/images/'); /** * DEFAULT SKIN FRONTEND FILES @@ -89,6 +90,7 @@ mix.styles([ 'node_modules/flag-icon-css/css/flag-icon.css', ], 'public/assets/global/css/vendor.css') .options({ + //processCssUrls: true, compressed: true }) .sourceMaps();