diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 7ac2c54..0000000 --- a/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": [ "es2015" ] -} \ No newline at end of file diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..14fb4e2 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,24 @@ +version: 2 # use CircleCI 2.0 + +jobs: # a collection of steps + build: # runs not using Workflows must have a `build` job as entry point + working_directory: ~/worldmap-panel # directory where steps will run + docker: # run the steps with Docker + - image: circleci/node:latest + steps: + - checkout + - restore_cache: + name: Restore Yarn Package Cache + keys: + - yarn-packages-{{ checksum "yarn.lock" }} + - run: + name: Install Dependencies + command: yarn install --frozen-lockfile + - save_cache: + name: Save Yarn Package Cache + key: yarn-packages-{{ checksum "yarn.lock" }} + paths: + - ~/.cache/yarn + - run: # run tests + name: test + command: yarn test diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index e61de8a..0000000 --- a/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -dist/* -src/libs/leaflet.js diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index fa85789..0000000 --- a/.eslintrc +++ /dev/null @@ -1,48 +0,0 @@ -{ - "root": true, - "extends": "airbnb/base", - "env": { - "browser": true - }, - "parser": "babel-eslint", - "ecmaVersion": 6, - "rules": { - "array-bracket-spacing": 0, - "arrow-body-style": 0, - "comma-dangle": 0, // not sure why airbnb turned this on. gross! - "computed-property-spacing": 0, - "consistent-return": 0, - "global-require": 0, - "id-length": [2, {"min": 2, "max": 30, "properties": "never", "exceptions": ["_", "t", "a", "b"]}], - "import/default": 0, - "import/named": 0, - "import/namespace": 0, - "import/no-duplicates": 0, - "import/no-named-as-default": 2, - "import/no-unresolved": 0, - "import/extensions": 0, - "indent": [2, 2, {"SwitchCase": 1}], - "max-len": [0, 120, 2], - "no-alert": 0, - "no-console": 0, - "no-param-reassign": [2, {"props": false}], - "no-use-before-define": 0, // disabled until https://github.com/babel/babel-eslint/issues/249 is fixed - "no-underscore-dangle": 0, - "object-curly-spacing": 0, - "object-shorthand": 0, - "prefer-arrow-callback": 0, - "prefer-template": 0, - "quote-props": [2, "consistent"] - }, - "plugins": [ - "import" - ], - "settings": { - "import/parser": "babel-eslint", - "import/resolve": { - "moduleDirectory": ["node_modules", "src"] - } - }, - "globals": { - } -} diff --git a/.gitignore b/.gitignore index 2f6141d..5f2e26b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules npm-debug.log -.DS_Store \ No newline at end of file +.DS_Store +.vscode diff --git a/CHANGELOG.md b/CHANGELOG.md index e3ffa31..8a87a15 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,95 +1,110 @@ # Changelog -## v0.0.2 +## v0.1.2 -- Fixes bug where time series with a country code not found in the country data crashes the panel. -- Adds some extra country codes to the country data to be more similar to the MaxMind Country database. +- Map centering ignores configured location [#149](https://github.com/grafana/worldmap-panel/issues/149) Thanks [@clompsy](https://github.com/clompsy) -## v0.0.3 +## v0.1.1 -- Support for lowercase country codes for non-elasticsearch datasources. +- New mapping option for table data that contains latitude and longitude columns. [#144](https://github.com/grafana/worldmap-panel/pull/144) Thanks [@kylios](https://github.com/kylios) +- More mapping options for table data for datasources that cannot alias/rename the columns to the names that the Worldmap panel expects (e.g. `metric` for the metric column) +- Readme update -## v0.0.4 +## v0.1.0 -- Fixes snapshotting. +- Configuration option for turning mouse wheel zoom on or off. [#140](https://github.com/grafana/worldmap-panel/issues/140) Thanks [@Perlovka](https://github.com/Perlovka) +- Upgrade to Leaflet JS [#132](https://github.com/grafana/worldmap-panel/pull/132) Thanks [@cbarbier](https://github.com/cbarbier) -## v.0.0.5 +## v0.0.21 -- Adds support for json and jsonp endpoints for location data. +- Support for new data source integration, the Dynamic JSON endpoint [#103](https://github.com/grafana/worldmap-panel/issues/103), thanks [@LostInBrittany](https://github.com/LostInBrittany) +- Fix for using floats in thresholds [#79](https://github.com/grafana/worldmap-panel/issues/79), thanks [@fabienpomerol](https://github.com/fabienpomerol) +- Fix for newly created Worldmap panels overflowing their boundaries. +- Fix for legend css +- Turned off mouse wheel zoom -## v.0.0.6 +## v0.0.20 -- Adds decimal places option for data values in circle popovers. +Small fixes. -## v.0.0.7 +## v0.0.19 -- Updates tile map urls to https to avoid mixed content warnings on https sites. +Fix for Elasticsearch geohash maps after breaking change in Grafana 4.5. -## v.0.0.8 +## v0.0.18 -- Saves location data in the dashboard json when snapshotting. This means snapshots should work even when using a custom endpoint for returning a location data json file. +- Fixes some coordinates in the country location data. +- Last Geohash as center for the map - it centers the map on the last geohash position received. Useful for real time tracking (with auto refresh on in Grafana). -## v.0.0.9 +## v.0.0.17 -- Fixes bug that meant location data did not refresh after being changed in the editor. It required the page to be refreshed to reload it. +- Adds Country data with 3-letter country codes. -## v.0.0.10 +## v.0.0.16 -- Performance fix for snapshotting. Sets maxdatapoints to 1 to minimize data that needs to be saved in the snapshot. +- Option for sticky labels. Fix for https://github.com/grafana/worldmap-panel/issues/27 -## v.0.0.11 +- Ability to hide null or 0 values. Fix for https://github.com/grafana/worldmap-panel/issues/13 -- Zoom issue fix and adds a states options for USA states location data. +- Background color change. Fixes https://github.com/grafana/worldmap-panel/issues/36 -## v.0.0.12 +- Dynamic thresholds implemented by [Sam Hatchett](https://github.com/samhatchett). Can now have more than 2 threshold values. Thanks! Fixes https://github.com/grafana/worldmap-panel/issues/25 -- Fixes [issue with the JSON endpoint not working](https://github.com/grafana/worldmap-panel/issues/22) +- Validation and default values for option fields. Fixes https://github.com/grafana/worldmap-panel/issues/29 -## v.0.0.13 +## v.0.0.15 -- New location data option -> table data. Location data can now come from data sources other than graphite and Elasticsearch (InfluxDb for example). See table data instructions above on how to use it. +- Fix for change in Grafana that [breaks Worldmap panels using Geohash or Table Data](https://github.com/grafana/worldmap-panel/issues/45). ## v.0.0.14 - Various [bug](https://github.com/grafana/worldmap-panel/pull/31) [fixes](https://github.com/grafana/worldmap-panel/pull/32) provided by [linkslice](https://github.com/linkslice) (Thank you!) -## v.0.0.15 +## v.0.0.13 -- Fix for change in Grafana that [breaks Worldmap panels using Geohash or Table Data](https://github.com/grafana/worldmap-panel/issues/45). +- New location data option -> table data. Location data can now come from data sources other than graphite and Elasticsearch (InfluxDb for example). See table data instructions above on how to use it. -## v.0.0.16 +## v.0.0.12 -- Option for sticky labels. Fix for https://github.com/grafana/worldmap-panel/issues/27 +- Fixes [issue with the JSON endpoint not working](https://github.com/grafana/worldmap-panel/issues/22) -- Ability to hide null or 0 values. Fix for https://github.com/grafana/worldmap-panel/issues/13 +## v.0.0.11 -- Background color change. Fixes https://github.com/grafana/worldmap-panel/issues/36 +- Zoom issue fix and adds a states options for USA states location data. -- Dynamic thresholds implemented by [Sam Hatchett](https://github.com/samhatchett). Can now have more than 2 threshold values. Thanks! Fixes https://github.com/grafana/worldmap-panel/issues/25 +## v.0.0.10 -- Validation and default values for option fields. Fixes https://github.com/grafana/worldmap-panel/issues/29 +- Performance fix for snapshotting. Sets maxdatapoints to 1 to minimize data that needs to be saved in the snapshot. -## v.0.0.17 +## v.0.0.9 -- Adds Country data with 3-letter country codes. +- Fixes bug that meant location data did not refresh after being changed in the editor. It required the page to be refreshed to reload it. -## v0.0.18 +## v.0.0.8 -- Fixes some coordinates in the country location data. -- Last Geohash as center for the map - it centers the map on the last geohash position received. Useful for real time tracking (with auto refresh on in Grafana). +- Saves location data in the dashboard json when snapshotting. This means snapshots should work even when using a custom endpoint for returning a location data json file. -## v0.0.19 +## v.0.0.7 -Fix for Elasticsearch geohash maps after breaking change in Grafana 4.5. +- Updates tile map urls to https to avoid mixed content warnings on https sites. -## v0.0.20 +## v.0.0.6 -Small fixes. +- Adds decimal places option for data values in circle popovers. -## v0.0.21 +## v.0.0.5 - - Support for new data source integration, the Dynamic JSON endpoint [#103](https://github.com/grafana/worldmap-panel/issues/103), thanks [@LostInBrittany](https://github.com/LostInBrittany) - - Fix for using floats in thresholds [#79](https://github.com/grafana/worldmap-panel/issues/79), thanks [@fabienpomerol](https://github.com/fabienpomerol) - - Fix for newly created Worldmap panels overflowing their boundaries. - - Fix for legend css - - Turned off mouse wheel zoom +- Adds support for json and jsonp endpoints for location data. + +## v0.0.4 + +- Fixes snapshotting. + +## v0.0.3 + +- Support for lowercase country codes for non-elasticsearch datasources. + +## v0.0.2 + +- Fixes bug where time series with a country code not found in the country data crashes the panel. +- Adds some extra country codes to the country data to be more similar to the MaxMind Country database. diff --git a/Gruntfile.js b/Gruntfile.js deleted file mode 100644 index 075326a..0000000 --- a/Gruntfile.js +++ /dev/null @@ -1,52 +0,0 @@ -/* eslint import/no-extraneous-dependencies: 0 */ - -module.exports = (grunt) => { - require('load-grunt-tasks')(grunt); - - grunt.loadNpmTasks('grunt-execute'); - grunt.loadNpmTasks('grunt-contrib-clean'); - - grunt.initConfig({ - - copy: { - src_to_dist: { - cwd: 'src', - expand: true, - src: ['**/*.css', '**/*.html', '**/*.json', '!**/*.js', '!**/*.scss'], - dest: 'dist' - }, - pluginDef: { - expand: true, - src: [ 'README.md', 'CHANGELOG.md' ], - dest: 'dist', - }, - img_to_dist: { - cwd: 'src/images', - expand: true, - flatten: true, - src: ['*.*'], - dest: 'dist/images/' - }, - }, - - babel: { - options: { - sourceMap: true, - presets: ['es2015'], - plugins: ['transform-es2015-modules-systemjs', 'transform-es2015-for-of'], - }, - dist: { - files: [{ - cwd: 'src', - expand: true, - src: ['**/*.js'], - dest: 'dist', - ext: '.js' - }] - }, - }, - - }); - - grunt.registerTask('default', ['copy:src_to_dist', 'copy:pluginDef', 'copy:img_to_dist', 'babel']); -}; diff --git a/README.md b/README.md index 5b16797..8a0a44a 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,85 @@ -## Worldmap Panel Plugin for Grafana +# Worldmap Panel Plugin for Grafana -The Worldmap Panel is a tile map of the world that can be overlaid with circles representing data points from a query. It can be used with time series metrics, with geohash data from Elasticsearch or Table Data. +The Worldmap Panel is a tile map of the world that can be overlaid with circles representing data points from a query. It can be used with time series metrics, with geohash data from Elasticsearch or data in the Table format. ![Worldmap](https://raw.githubusercontent.com/grafana/worldmap-panel/54f83cfdc7339fee02df00933422c35630677330/src/images/worldmap-world.png) -There are currently two ways to connect data with points on a map. Either by matching a tag or series name to a country code/state code (e.g. SE for Sweden, TX for Texas) or by using geohashes to map against geographic coordinates. +## How The Worldmap Works (Theory and Examples) + +The Worldmap panel needs two sources of data: + +- a location (latitude and longitude) +- data that has a link to a location + +The data comes from a database query: Prometheus, InfluxDB, Graphite, Elasticsearch, MySQL etc. It can be in the Time Series format or in the Table format. + +### Time Series Format + +If it is in the **Time Series format** then the metric name needs to match a key from a list of locations. That key is usually a country code or city name. The list of locations can come from a file or an HTTP endpoint. + +The list of locations can be provided in several ways: + +- json files with locations and their coordinates (the plugin includes list for countries and US states) +- json endpoints that return a list of locations and their coordinates + +Time Series data contains a timestamp, a metric name and a numeric value. In other words, a typical query for a time series database. Here is some time series data from Graphite: + +```json +[ + {"target": "SE", "datapoints": [[183255.0, 1529755200]]}, + {"target": "US", "datapoints": [[192224.0, 1529755200]]} +] +``` + +Location data should be in the JSON format and should be an array of JSON objects with four properties: + +```json +[ + { + "key": "SE", + "latitude": 60.128161, + "longitude": 18.643501, + "name": "Sweden" + }, + { + "key": "US", + "latitude": 37.09024, + "longitude": -95.712891, + "name": "United States" + } +] +``` + +The Worldmap will then match the metric name (target in the example data) with a key field from the location data. With this example data there will be two circles drawn on the map, one for Sweden and one for the United States with values 183255 and 192224. + +### Table Format + +If the data is in the **Table format** then it should have a column that is a geohash or two columns that contain the latitude and longitude (together with the columns for the data). + +Table data is tabular data with columns and rows. Here is an example of Table data from InfluxDB: + +```json +"series": [ + { + "name": "logins.count", + "tags": { + "geohash": "9wvfgzurfzb" + }, + "columns": [ + "time", + "metric" + ], + "values": [ + [ + 1529762933815, + 75.654324173059 + ] + ] + } +] +``` + +This query contains both data (the value `75.654324173059`) and a location (the geohash `9wvfgzurfzb` which is in Colorado). So using these, the Worldmap panel will draw one circle in Colorado, USA with the value 75.654324173059. ## Time Series Data as the Data Source @@ -14,33 +89,52 @@ Supported Databases: - InfluxDB - OpenTSDB - Prometheus +- MySQL +- Postgres +- MSSQL +- Elasticsearch -Included location data: +The following location files are included in the plugin: - Countries (2 letter codes) - Countries (3 letter codes) - US states -This works by matching country codes (like US or GB or FR) or US state codes (TX or NY) to a node or a wildcard in a metric namespace. If there is a match in the list of countries or states then a circle will be drawn at the location. +Alternatively, you can provide your own location lists by using: + +- A JSON endpoint that returns a list of locations +- A JSONP endpoint that returns a list of locations + +This works by matching country codes (like US or GB or FR) or US state codes (TX or NY) to a metric name. If a metric name matches a country in the list of countries then a circle will be drawn at that location. If you want to match to other data than countries or states, then you will have to provide custom location data. The current way to do that is via a JSON endpoint that returns a json file with location data (See Map Data Options) The size of the circle depends on the value of the matched metric. Circle size is relative e.g. if you have 3 countries with values 1, 2 and 3 or 100, 200 and 300 then you will get one small circle, one medium circle and one large circle. -#### Query Examples +### Time Series - Graphite and InfluxDB + +Here are some examples of Time Series Queries -#### Graphite Query for Countries +#### Graphite Query Use the aliasByNode function to point to the field containing the country code. See the image below for an example of a graphite query. ![Graphite Query for Countries](https://raw.githubusercontent.com/grafana/worldmap-panel/master/src/images/worldmap-timeseries-query.png) -#### Influx Query for Countries +Example dashboard for Worldmap with Graphite queries on [the Grafana play site](http://localhost:3000/d/000000003/worldmap-panels?panelId=8&fullscreen&edit&orgId=1). + +#### InfluxDB Query The Group By clause should be the country code and an alias is needed too. The alias should be in the form `$tag_`. ![Influx Query for Countries](https://raw.githubusercontent.com/grafana/worldmap-panel/master/src/images/influx-query.png) +#### Elasticsearch Query for Countries + +Use a Group By clause on the field containing the country code and a Then by clause with Date Histogram by `@timestamp` (or corresponding date field). + +![Elasticsearch Query for Countries](https://raw.githubusercontent.com/grafana/worldmap-panel/master/src/images/elasticsearch-query.png) + #### Map Data Options for Time Series Data Under the Worldmap tab, choose either the `countries` or `states` option. @@ -51,12 +145,14 @@ Using a JSON endpoint to return a custom list of locations: ![Worldmap Options for JSON](https://raw.githubusercontent.com/grafana/worldmap-panel/master/src/images/json-endpoint.png) -The endpoint used here is for the demo version of worldPing - [https://worldpingdemo.grafana.net/api/plugin-proxy/raintank-worldping-app/api/v2/probes/locations](https://worldpingdemo.grafana.net/api/plugin-proxy/raintank-worldping-app/api/v2/probes/locations) +The endpoint used here is for the demo version of worldPing - [https://worldpingdemo.grafana.net/api/plugin-proxy/raintank-worldping-app/api/v2/probes/locations](https://worldpingdemo.grafana.net/api/plugin-proxy/raintank-worldping-app/api/v2/probes/locations). If you have your own endpoint defined it must be reachable from the client side, as it is approached by client's browser. Using a JSONP endpoint (if you need to wrap the JSON to get around CORS problems): ![Worldmap Options for JSONP](https://raw.githubusercontent.com/grafana/worldmap-panel/master/src/images/jsonp-endpoint.png) +For some details on troubleshooting JSON/JSONP check [#47](https://github.com/grafana/worldmap-panel/issues/47). + ## Geohashes as the Data Source Supported Databases: @@ -75,72 +171,59 @@ Three fields need to be provided by the ElasticSearch query: ![Elasticsearch Query for Worldmap](https://raw.githubusercontent.com/grafana/worldmap-panel/master/src/images/es-options.png) - ## Table Data as the Data Source Supported Databases: - InfluxDB +- Elasticsearch +- MySQL, Postgres, MSSQL +- Any database that can return data in Table Format -An example of Table Data would using InfluxDB and then formatting the data returned from the metric query as Table. - -Similar to the Elasticsearch query above, 3 fields are expected (2 of them are mandatory) - -- a field named *metric* -- a geohash tag named *geohash* -- an optional location name (shown in the mouse over). This location name has to be specified in the Worldmap settings tab too. - -![Example influxdb query](https://cloud.githubusercontent.com/assets/434655/16535977/8cd520be-3fec-11e6-8dc9-2ecf7b16ad5f.png) - -## JSON result as the Data Source - - -Supported Databases: - -- Warp 10 via [grafana-warp10-datasource](https://github.com/cityzendata/grafana-warp10) plugin - -It supports any datasource capable of generating a JSON response with a a custom list of locations (the same format that for the JSON enpoint). +If a datasource can return Table Data then on the Metrics tab in Grafana choose the `FORMAT AS` Table option. -### Map Visual Option Settings - -**Center** - -This settings configures the default center of the map. There are 5 centers to choose from or you can choose a custom center or last GeoHash center..For a custom center there are two fields: latitude and longitude. Examples of values are 37.09024, -95.712891 for the center of the US or 55.378051, -3.435973 for Great Britain. Last GeoHash center will centered the map on the last GeoHash received from the data. +### Table Data with a Geohash Column +Similar to the Elasticsearch query above, 3 fields are expected (2 of them are mandatory) -**Initial Zoom** +- A *metric* field. This is used to give the circle a value and determines how large the circle is. +- A *geohash* field. This is used to calculate where the circle should be drawn. +- an optional location name field (shown in the mouse over). Used to label each circle on the map. If it is empty then the geohash value is used as the label. -The initial zoom factor for the map. This is a value between 1 and 18 where 1 is the most zoomed out. +The field mappings have to be specified on the Worldmap settings tab. -**Min Circle Size** +![Example influxdb query](https://cloud.githubusercontent.com/assets/434655/16535977/8cd520be-3fec-11e6-8dc9-2ecf7b16ad5f.png) -This is minimum size for a circle in pixels. +### Table Data with Latitude and Longitude Columns -**Max Circle Size** +The Table Data format also works with two columns for latitude and longitude instead of a geohash column. -This is the maximum size for a circle in pixels. Depending on the zoom level you might want a larger or smaller max circle size to avoid overlapping. +- A *metric* field. This is used to give the circle a value and determines how large the circle is. +- Latitude/Longitude Fields. These are used to calculate where the circle should be drawn. +- an optional location name field (shown in the mouse over). Used to label each circle on the map. If it is empty then the geohash value is used as the label. -**Unit** +## JSON result as the Data Source -The Unit is shown in the popover when you hover over a circle. There are two fields the singular form and the plural form. E.g. visit/visits or error/errors +Supported Databases: -**Show Legend** +- Warp 10 via [grafana-warp10-datasource](https://github.com/cityzendata/grafana-warp10) plugin -Shows/hide the legend on the bottom left that shows the threshold ranges and their associated colors. +It supports any datasource capable of generating a JSON response with a a custom list of locations (the same format that for the JSON enpoint). ### Map Data Options -**Location Data** +#### Location Data There are four ways to provide data for the worldmap panel: + - *countries*: This is a list of all the countries in the world. It works by matching a country code (US, FR, AU) to a node alias in a time series query. - *states*: Similar to countries but for the states in USA e.g. CA for California - *geohash*: An ElasticSearch query that returns geohashes. - *json*: A json endpoint that returns custom json. Examples of the format are the [countries data used in first option](https://github.com/grafana/worldmap-panel/blob/master/src/data/countries.json) or [this list of cities](https://github.com/grafana/worldmap-panel/blob/master/src/data/probes.json). - *jsonp*: A jsonp endpoint that returns custom json wrapped as jsonp. Use this if you are having problems with CORS. - - *table*: This expects the metric query to return data points with a field named geohash. This field should contain a string in the [geohash form](https://www.elastic.co/guide/en/elasticsearch/guide/current/geohashes.html). For example: London -> "gcpvh3zgu992". + - *table*: This expects the metric query to return data points with a field named geohash or two fields/columns named `latitude` and `longitude`. This field should contain a string in the [geohash form](https://www.elastic.co/guide/en/elasticsearch/guide/current/geohashes.html). For example: London -> "gcpvh3zgu992". -**Aggregation** +#### Aggregation If you chose *countries* or *table* as the source of the location data then you can choose an aggregation here: avg, total etc. @@ -152,13 +235,40 @@ Or just remove the 1 from the Max Data Point field and use the consolidation fun ![Graphite Max Data Points](https://raw.githubusercontent.com/grafana/worldmap-panel/master/src/images/graphite-maxdatapoints.png) -**ES Metric/Location Name/geo_point Field** +#### ES Metric/Location Name/geo_point Field Three fields need to be provided by the ElasticSearch query. They are text fields and should be the field names from the query under the Metrics tab. -- Metric is one of Count, Average, Sum etc. + +- The Metric in Elasticsearch is one of `Count`, `Average`, `Sum` etc. - Location Name is the field that gives the circle a name. If it is blank, then the geohash value is shown in the popover instead of the location. - geo_point is the GeoHashGrid field that provides the geohash value. +### Map Visual Option Settings + +**Center** + +This settings configures the default center of the map. There are 5 centers to choose from or you can choose a custom center or last GeoHash center..For a custom center there are two fields: latitude and longitude. Examples of values are 37.09024, -95.712891 for the center of the US or 55.378051, -3.435973 for Great Britain. Last GeoHash center will centered the map on the last GeoHash received from the data. + +**Initial Zoom** + +The initial zoom factor for the map. This is a value between 1 and 18 where 1 is the most zoomed out. + +**Min Circle Size** + +This is minimum size for a circle in pixels. + +**Max Circle Size** + +This is the maximum size for a circle in pixels. Depending on the zoom level you might want a larger or smaller max circle size to avoid overlapping. + +**Unit** + +The Unit is shown in the popover when you hover over a circle. There are two fields the singular form and the plural form. E.g. visit/visits or error/errors + +**Show Legend** + +Shows/hide the legend on the bottom left that shows the threshold ranges and their associated colors. + ### Threshold Options Thresholds control the color of the circles. diff --git a/circle.yml b/circle.yml deleted file mode 100644 index 47283e9..0000000 --- a/circle.yml +++ /dev/null @@ -1,12 +0,0 @@ -machine: - node: - version: 6.4.0 - -dependencies: - override: - - npm install - - npm run build - -test: - override: - - npm run test diff --git a/dist/CHANGELOG.md b/dist/CHANGELOG.md index e3ffa31..8a87a15 100644 --- a/dist/CHANGELOG.md +++ b/dist/CHANGELOG.md @@ -1,95 +1,110 @@ # Changelog -## v0.0.2 +## v0.1.2 -- Fixes bug where time series with a country code not found in the country data crashes the panel. -- Adds some extra country codes to the country data to be more similar to the MaxMind Country database. +- Map centering ignores configured location [#149](https://github.com/grafana/worldmap-panel/issues/149) Thanks [@clompsy](https://github.com/clompsy) -## v0.0.3 +## v0.1.1 -- Support for lowercase country codes for non-elasticsearch datasources. +- New mapping option for table data that contains latitude and longitude columns. [#144](https://github.com/grafana/worldmap-panel/pull/144) Thanks [@kylios](https://github.com/kylios) +- More mapping options for table data for datasources that cannot alias/rename the columns to the names that the Worldmap panel expects (e.g. `metric` for the metric column) +- Readme update -## v0.0.4 +## v0.1.0 -- Fixes snapshotting. +- Configuration option for turning mouse wheel zoom on or off. [#140](https://github.com/grafana/worldmap-panel/issues/140) Thanks [@Perlovka](https://github.com/Perlovka) +- Upgrade to Leaflet JS [#132](https://github.com/grafana/worldmap-panel/pull/132) Thanks [@cbarbier](https://github.com/cbarbier) -## v.0.0.5 +## v0.0.21 -- Adds support for json and jsonp endpoints for location data. +- Support for new data source integration, the Dynamic JSON endpoint [#103](https://github.com/grafana/worldmap-panel/issues/103), thanks [@LostInBrittany](https://github.com/LostInBrittany) +- Fix for using floats in thresholds [#79](https://github.com/grafana/worldmap-panel/issues/79), thanks [@fabienpomerol](https://github.com/fabienpomerol) +- Fix for newly created Worldmap panels overflowing their boundaries. +- Fix for legend css +- Turned off mouse wheel zoom -## v.0.0.6 +## v0.0.20 -- Adds decimal places option for data values in circle popovers. +Small fixes. -## v.0.0.7 +## v0.0.19 -- Updates tile map urls to https to avoid mixed content warnings on https sites. +Fix for Elasticsearch geohash maps after breaking change in Grafana 4.5. -## v.0.0.8 +## v0.0.18 -- Saves location data in the dashboard json when snapshotting. This means snapshots should work even when using a custom endpoint for returning a location data json file. +- Fixes some coordinates in the country location data. +- Last Geohash as center for the map - it centers the map on the last geohash position received. Useful for real time tracking (with auto refresh on in Grafana). -## v.0.0.9 +## v.0.0.17 -- Fixes bug that meant location data did not refresh after being changed in the editor. It required the page to be refreshed to reload it. +- Adds Country data with 3-letter country codes. -## v.0.0.10 +## v.0.0.16 -- Performance fix for snapshotting. Sets maxdatapoints to 1 to minimize data that needs to be saved in the snapshot. +- Option for sticky labels. Fix for https://github.com/grafana/worldmap-panel/issues/27 -## v.0.0.11 +- Ability to hide null or 0 values. Fix for https://github.com/grafana/worldmap-panel/issues/13 -- Zoom issue fix and adds a states options for USA states location data. +- Background color change. Fixes https://github.com/grafana/worldmap-panel/issues/36 -## v.0.0.12 +- Dynamic thresholds implemented by [Sam Hatchett](https://github.com/samhatchett). Can now have more than 2 threshold values. Thanks! Fixes https://github.com/grafana/worldmap-panel/issues/25 -- Fixes [issue with the JSON endpoint not working](https://github.com/grafana/worldmap-panel/issues/22) +- Validation and default values for option fields. Fixes https://github.com/grafana/worldmap-panel/issues/29 -## v.0.0.13 +## v.0.0.15 -- New location data option -> table data. Location data can now come from data sources other than graphite and Elasticsearch (InfluxDb for example). See table data instructions above on how to use it. +- Fix for change in Grafana that [breaks Worldmap panels using Geohash or Table Data](https://github.com/grafana/worldmap-panel/issues/45). ## v.0.0.14 - Various [bug](https://github.com/grafana/worldmap-panel/pull/31) [fixes](https://github.com/grafana/worldmap-panel/pull/32) provided by [linkslice](https://github.com/linkslice) (Thank you!) -## v.0.0.15 +## v.0.0.13 -- Fix for change in Grafana that [breaks Worldmap panels using Geohash or Table Data](https://github.com/grafana/worldmap-panel/issues/45). +- New location data option -> table data. Location data can now come from data sources other than graphite and Elasticsearch (InfluxDb for example). See table data instructions above on how to use it. -## v.0.0.16 +## v.0.0.12 -- Option for sticky labels. Fix for https://github.com/grafana/worldmap-panel/issues/27 +- Fixes [issue with the JSON endpoint not working](https://github.com/grafana/worldmap-panel/issues/22) -- Ability to hide null or 0 values. Fix for https://github.com/grafana/worldmap-panel/issues/13 +## v.0.0.11 -- Background color change. Fixes https://github.com/grafana/worldmap-panel/issues/36 +- Zoom issue fix and adds a states options for USA states location data. -- Dynamic thresholds implemented by [Sam Hatchett](https://github.com/samhatchett). Can now have more than 2 threshold values. Thanks! Fixes https://github.com/grafana/worldmap-panel/issues/25 +## v.0.0.10 -- Validation and default values for option fields. Fixes https://github.com/grafana/worldmap-panel/issues/29 +- Performance fix for snapshotting. Sets maxdatapoints to 1 to minimize data that needs to be saved in the snapshot. -## v.0.0.17 +## v.0.0.9 -- Adds Country data with 3-letter country codes. +- Fixes bug that meant location data did not refresh after being changed in the editor. It required the page to be refreshed to reload it. -## v0.0.18 +## v.0.0.8 -- Fixes some coordinates in the country location data. -- Last Geohash as center for the map - it centers the map on the last geohash position received. Useful for real time tracking (with auto refresh on in Grafana). +- Saves location data in the dashboard json when snapshotting. This means snapshots should work even when using a custom endpoint for returning a location data json file. -## v0.0.19 +## v.0.0.7 -Fix for Elasticsearch geohash maps after breaking change in Grafana 4.5. +- Updates tile map urls to https to avoid mixed content warnings on https sites. -## v0.0.20 +## v.0.0.6 -Small fixes. +- Adds decimal places option for data values in circle popovers. -## v0.0.21 +## v.0.0.5 - - Support for new data source integration, the Dynamic JSON endpoint [#103](https://github.com/grafana/worldmap-panel/issues/103), thanks [@LostInBrittany](https://github.com/LostInBrittany) - - Fix for using floats in thresholds [#79](https://github.com/grafana/worldmap-panel/issues/79), thanks [@fabienpomerol](https://github.com/fabienpomerol) - - Fix for newly created Worldmap panels overflowing their boundaries. - - Fix for legend css - - Turned off mouse wheel zoom +- Adds support for json and jsonp endpoints for location data. + +## v0.0.4 + +- Fixes snapshotting. + +## v0.0.3 + +- Support for lowercase country codes for non-elasticsearch datasources. + +## v0.0.2 + +- Fixes bug where time series with a country code not found in the country data crashes the panel. +- Adds some extra country codes to the country data to be more similar to the MaxMind Country database. diff --git a/dist/LICENSE b/dist/LICENSE new file mode 100644 index 0000000..4644c8c --- /dev/null +++ b/dist/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Grafana + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/dist/README.md b/dist/README.md index 5b16797..8a0a44a 100644 --- a/dist/README.md +++ b/dist/README.md @@ -1,10 +1,85 @@ -## Worldmap Panel Plugin for Grafana +# Worldmap Panel Plugin for Grafana -The Worldmap Panel is a tile map of the world that can be overlaid with circles representing data points from a query. It can be used with time series metrics, with geohash data from Elasticsearch or Table Data. +The Worldmap Panel is a tile map of the world that can be overlaid with circles representing data points from a query. It can be used with time series metrics, with geohash data from Elasticsearch or data in the Table format. ![Worldmap](https://raw.githubusercontent.com/grafana/worldmap-panel/54f83cfdc7339fee02df00933422c35630677330/src/images/worldmap-world.png) -There are currently two ways to connect data with points on a map. Either by matching a tag or series name to a country code/state code (e.g. SE for Sweden, TX for Texas) or by using geohashes to map against geographic coordinates. +## How The Worldmap Works (Theory and Examples) + +The Worldmap panel needs two sources of data: + +- a location (latitude and longitude) +- data that has a link to a location + +The data comes from a database query: Prometheus, InfluxDB, Graphite, Elasticsearch, MySQL etc. It can be in the Time Series format or in the Table format. + +### Time Series Format + +If it is in the **Time Series format** then the metric name needs to match a key from a list of locations. That key is usually a country code or city name. The list of locations can come from a file or an HTTP endpoint. + +The list of locations can be provided in several ways: + +- json files with locations and their coordinates (the plugin includes list for countries and US states) +- json endpoints that return a list of locations and their coordinates + +Time Series data contains a timestamp, a metric name and a numeric value. In other words, a typical query for a time series database. Here is some time series data from Graphite: + +```json +[ + {"target": "SE", "datapoints": [[183255.0, 1529755200]]}, + {"target": "US", "datapoints": [[192224.0, 1529755200]]} +] +``` + +Location data should be in the JSON format and should be an array of JSON objects with four properties: + +```json +[ + { + "key": "SE", + "latitude": 60.128161, + "longitude": 18.643501, + "name": "Sweden" + }, + { + "key": "US", + "latitude": 37.09024, + "longitude": -95.712891, + "name": "United States" + } +] +``` + +The Worldmap will then match the metric name (target in the example data) with a key field from the location data. With this example data there will be two circles drawn on the map, one for Sweden and one for the United States with values 183255 and 192224. + +### Table Format + +If the data is in the **Table format** then it should have a column that is a geohash or two columns that contain the latitude and longitude (together with the columns for the data). + +Table data is tabular data with columns and rows. Here is an example of Table data from InfluxDB: + +```json +"series": [ + { + "name": "logins.count", + "tags": { + "geohash": "9wvfgzurfzb" + }, + "columns": [ + "time", + "metric" + ], + "values": [ + [ + 1529762933815, + 75.654324173059 + ] + ] + } +] +``` + +This query contains both data (the value `75.654324173059`) and a location (the geohash `9wvfgzurfzb` which is in Colorado). So using these, the Worldmap panel will draw one circle in Colorado, USA with the value 75.654324173059. ## Time Series Data as the Data Source @@ -14,33 +89,52 @@ Supported Databases: - InfluxDB - OpenTSDB - Prometheus +- MySQL +- Postgres +- MSSQL +- Elasticsearch -Included location data: +The following location files are included in the plugin: - Countries (2 letter codes) - Countries (3 letter codes) - US states -This works by matching country codes (like US or GB or FR) or US state codes (TX or NY) to a node or a wildcard in a metric namespace. If there is a match in the list of countries or states then a circle will be drawn at the location. +Alternatively, you can provide your own location lists by using: + +- A JSON endpoint that returns a list of locations +- A JSONP endpoint that returns a list of locations + +This works by matching country codes (like US or GB or FR) or US state codes (TX or NY) to a metric name. If a metric name matches a country in the list of countries then a circle will be drawn at that location. If you want to match to other data than countries or states, then you will have to provide custom location data. The current way to do that is via a JSON endpoint that returns a json file with location data (See Map Data Options) The size of the circle depends on the value of the matched metric. Circle size is relative e.g. if you have 3 countries with values 1, 2 and 3 or 100, 200 and 300 then you will get one small circle, one medium circle and one large circle. -#### Query Examples +### Time Series - Graphite and InfluxDB + +Here are some examples of Time Series Queries -#### Graphite Query for Countries +#### Graphite Query Use the aliasByNode function to point to the field containing the country code. See the image below for an example of a graphite query. ![Graphite Query for Countries](https://raw.githubusercontent.com/grafana/worldmap-panel/master/src/images/worldmap-timeseries-query.png) -#### Influx Query for Countries +Example dashboard for Worldmap with Graphite queries on [the Grafana play site](http://localhost:3000/d/000000003/worldmap-panels?panelId=8&fullscreen&edit&orgId=1). + +#### InfluxDB Query The Group By clause should be the country code and an alias is needed too. The alias should be in the form `$tag_`. ![Influx Query for Countries](https://raw.githubusercontent.com/grafana/worldmap-panel/master/src/images/influx-query.png) +#### Elasticsearch Query for Countries + +Use a Group By clause on the field containing the country code and a Then by clause with Date Histogram by `@timestamp` (or corresponding date field). + +![Elasticsearch Query for Countries](https://raw.githubusercontent.com/grafana/worldmap-panel/master/src/images/elasticsearch-query.png) + #### Map Data Options for Time Series Data Under the Worldmap tab, choose either the `countries` or `states` option. @@ -51,12 +145,14 @@ Using a JSON endpoint to return a custom list of locations: ![Worldmap Options for JSON](https://raw.githubusercontent.com/grafana/worldmap-panel/master/src/images/json-endpoint.png) -The endpoint used here is for the demo version of worldPing - [https://worldpingdemo.grafana.net/api/plugin-proxy/raintank-worldping-app/api/v2/probes/locations](https://worldpingdemo.grafana.net/api/plugin-proxy/raintank-worldping-app/api/v2/probes/locations) +The endpoint used here is for the demo version of worldPing - [https://worldpingdemo.grafana.net/api/plugin-proxy/raintank-worldping-app/api/v2/probes/locations](https://worldpingdemo.grafana.net/api/plugin-proxy/raintank-worldping-app/api/v2/probes/locations). If you have your own endpoint defined it must be reachable from the client side, as it is approached by client's browser. Using a JSONP endpoint (if you need to wrap the JSON to get around CORS problems): ![Worldmap Options for JSONP](https://raw.githubusercontent.com/grafana/worldmap-panel/master/src/images/jsonp-endpoint.png) +For some details on troubleshooting JSON/JSONP check [#47](https://github.com/grafana/worldmap-panel/issues/47). + ## Geohashes as the Data Source Supported Databases: @@ -75,72 +171,59 @@ Three fields need to be provided by the ElasticSearch query: ![Elasticsearch Query for Worldmap](https://raw.githubusercontent.com/grafana/worldmap-panel/master/src/images/es-options.png) - ## Table Data as the Data Source Supported Databases: - InfluxDB +- Elasticsearch +- MySQL, Postgres, MSSQL +- Any database that can return data in Table Format -An example of Table Data would using InfluxDB and then formatting the data returned from the metric query as Table. - -Similar to the Elasticsearch query above, 3 fields are expected (2 of them are mandatory) - -- a field named *metric* -- a geohash tag named *geohash* -- an optional location name (shown in the mouse over). This location name has to be specified in the Worldmap settings tab too. - -![Example influxdb query](https://cloud.githubusercontent.com/assets/434655/16535977/8cd520be-3fec-11e6-8dc9-2ecf7b16ad5f.png) - -## JSON result as the Data Source - - -Supported Databases: - -- Warp 10 via [grafana-warp10-datasource](https://github.com/cityzendata/grafana-warp10) plugin - -It supports any datasource capable of generating a JSON response with a a custom list of locations (the same format that for the JSON enpoint). +If a datasource can return Table Data then on the Metrics tab in Grafana choose the `FORMAT AS` Table option. -### Map Visual Option Settings - -**Center** - -This settings configures the default center of the map. There are 5 centers to choose from or you can choose a custom center or last GeoHash center..For a custom center there are two fields: latitude and longitude. Examples of values are 37.09024, -95.712891 for the center of the US or 55.378051, -3.435973 for Great Britain. Last GeoHash center will centered the map on the last GeoHash received from the data. +### Table Data with a Geohash Column +Similar to the Elasticsearch query above, 3 fields are expected (2 of them are mandatory) -**Initial Zoom** +- A *metric* field. This is used to give the circle a value and determines how large the circle is. +- A *geohash* field. This is used to calculate where the circle should be drawn. +- an optional location name field (shown in the mouse over). Used to label each circle on the map. If it is empty then the geohash value is used as the label. -The initial zoom factor for the map. This is a value between 1 and 18 where 1 is the most zoomed out. +The field mappings have to be specified on the Worldmap settings tab. -**Min Circle Size** +![Example influxdb query](https://cloud.githubusercontent.com/assets/434655/16535977/8cd520be-3fec-11e6-8dc9-2ecf7b16ad5f.png) -This is minimum size for a circle in pixels. +### Table Data with Latitude and Longitude Columns -**Max Circle Size** +The Table Data format also works with two columns for latitude and longitude instead of a geohash column. -This is the maximum size for a circle in pixels. Depending on the zoom level you might want a larger or smaller max circle size to avoid overlapping. +- A *metric* field. This is used to give the circle a value and determines how large the circle is. +- Latitude/Longitude Fields. These are used to calculate where the circle should be drawn. +- an optional location name field (shown in the mouse over). Used to label each circle on the map. If it is empty then the geohash value is used as the label. -**Unit** +## JSON result as the Data Source -The Unit is shown in the popover when you hover over a circle. There are two fields the singular form and the plural form. E.g. visit/visits or error/errors +Supported Databases: -**Show Legend** +- Warp 10 via [grafana-warp10-datasource](https://github.com/cityzendata/grafana-warp10) plugin -Shows/hide the legend on the bottom left that shows the threshold ranges and their associated colors. +It supports any datasource capable of generating a JSON response with a a custom list of locations (the same format that for the JSON enpoint). ### Map Data Options -**Location Data** +#### Location Data There are four ways to provide data for the worldmap panel: + - *countries*: This is a list of all the countries in the world. It works by matching a country code (US, FR, AU) to a node alias in a time series query. - *states*: Similar to countries but for the states in USA e.g. CA for California - *geohash*: An ElasticSearch query that returns geohashes. - *json*: A json endpoint that returns custom json. Examples of the format are the [countries data used in first option](https://github.com/grafana/worldmap-panel/blob/master/src/data/countries.json) or [this list of cities](https://github.com/grafana/worldmap-panel/blob/master/src/data/probes.json). - *jsonp*: A jsonp endpoint that returns custom json wrapped as jsonp. Use this if you are having problems with CORS. - - *table*: This expects the metric query to return data points with a field named geohash. This field should contain a string in the [geohash form](https://www.elastic.co/guide/en/elasticsearch/guide/current/geohashes.html). For example: London -> "gcpvh3zgu992". + - *table*: This expects the metric query to return data points with a field named geohash or two fields/columns named `latitude` and `longitude`. This field should contain a string in the [geohash form](https://www.elastic.co/guide/en/elasticsearch/guide/current/geohashes.html). For example: London -> "gcpvh3zgu992". -**Aggregation** +#### Aggregation If you chose *countries* or *table* as the source of the location data then you can choose an aggregation here: avg, total etc. @@ -152,13 +235,40 @@ Or just remove the 1 from the Max Data Point field and use the consolidation fun ![Graphite Max Data Points](https://raw.githubusercontent.com/grafana/worldmap-panel/master/src/images/graphite-maxdatapoints.png) -**ES Metric/Location Name/geo_point Field** +#### ES Metric/Location Name/geo_point Field Three fields need to be provided by the ElasticSearch query. They are text fields and should be the field names from the query under the Metrics tab. -- Metric is one of Count, Average, Sum etc. + +- The Metric in Elasticsearch is one of `Count`, `Average`, `Sum` etc. - Location Name is the field that gives the circle a name. If it is blank, then the geohash value is shown in the popover instead of the location. - geo_point is the GeoHashGrid field that provides the geohash value. +### Map Visual Option Settings + +**Center** + +This settings configures the default center of the map. There are 5 centers to choose from or you can choose a custom center or last GeoHash center..For a custom center there are two fields: latitude and longitude. Examples of values are 37.09024, -95.712891 for the center of the US or 55.378051, -3.435973 for Great Britain. Last GeoHash center will centered the map on the last GeoHash received from the data. + +**Initial Zoom** + +The initial zoom factor for the map. This is a value between 1 and 18 where 1 is the most zoomed out. + +**Min Circle Size** + +This is minimum size for a circle in pixels. + +**Max Circle Size** + +This is the maximum size for a circle in pixels. Depending on the zoom level you might want a larger or smaller max circle size to avoid overlapping. + +**Unit** + +The Unit is shown in the popover when you hover over a circle. There are two fields the singular form and the plural form. E.g. visit/visits or error/errors + +**Show Legend** + +Shows/hide the legend on the bottom left that shows the threshold ranges and their associated colors. + ### Threshold Options Thresholds control the color of the circles. diff --git a/dist/css/leaflet.css b/dist/css/leaflet.css index b0edef4..f68b2ee 100644 --- a/dist/css/leaflet.css +++ b/dist/css/leaflet.css @@ -1,16 +1,12 @@ /* required styles */ -.leaflet-map-pane, +.leaflet-pane, .leaflet-tile, .leaflet-marker-icon, .leaflet-marker-shadow, -.leaflet-tile-pane, .leaflet-tile-container, -.leaflet-overlay-pane, -.leaflet-shadow-pane, -.leaflet-marker-pane, -.leaflet-popup-pane, -.leaflet-overlay-pane svg, +.leaflet-pane > svg, +.leaflet-pane > canvas, .leaflet-zoom-box, .leaflet-image-layer, .leaflet-layer { @@ -20,8 +16,6 @@ } .leaflet-container { overflow: hidden; - -ms-touch-action: none; - touch-action: none; } .leaflet-tile, .leaflet-marker-icon, @@ -29,20 +23,53 @@ -webkit-user-select: none; -moz-user-select: none; user-select: none; - -webkit-user-drag: none; + -webkit-user-drag: none; + } +/* Safari renders non-retina tile on retina better with this, but Chrome is worse */ +.leaflet-safari .leaflet-tile { + image-rendering: -webkit-optimize-contrast; + } +/* hack that prevents hw layers "stretching" when loading new tiles */ +.leaflet-safari .leaflet-tile-container { + width: 1600px; + height: 1600px; + -webkit-transform-origin: 0 0; } .leaflet-marker-icon, .leaflet-marker-shadow { display: block; } -/* map is broken in FF if you have max-width: 100% on tiles */ -.leaflet-container img { +/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */ +/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */ +.leaflet-container .leaflet-overlay-pane svg, +.leaflet-container .leaflet-marker-pane img, +.leaflet-container .leaflet-shadow-pane img, +.leaflet-container .leaflet-tile-pane img, +.leaflet-container img.leaflet-image-layer { max-width: none !important; + max-height: none !important; } -/* stupid Android 2 doesn't understand "max-width: none" properly */ -.leaflet-container img.leaflet-image-layer { - max-width: 15000px !important; + +.leaflet-container.leaflet-touch-zoom { + -ms-touch-action: pan-x pan-y; + touch-action: pan-x pan-y; } +.leaflet-container.leaflet-touch-drag { + -ms-touch-action: pinch-zoom; + /* Fallback for FF which doesn't support pinch-zoom */ + touch-action: none; + touch-action: pinch-zoom; +} +.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom { + -ms-touch-action: none; + touch-action: none; +} +.leaflet-container { + -webkit-tap-highlight-color: transparent; +} +.leaflet-container a { + -webkit-tap-highlight-color: rgba(51, 181, 229, 0.4); +} .leaflet-tile { filter: inherit; visibility: hidden; @@ -53,18 +80,26 @@ .leaflet-zoom-box { width: 0; height: 0; + -moz-box-sizing: border-box; + box-sizing: border-box; + z-index: 800; } /* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */ .leaflet-overlay-pane svg { -moz-user-select: none; } -.leaflet-tile-pane { z-index: 2; } -.leaflet-objects-pane { z-index: 3; } -.leaflet-overlay-pane { z-index: 4; } -.leaflet-shadow-pane { z-index: 5; } -.leaflet-marker-pane { z-index: 6; } -.leaflet-popup-pane { z-index: 7; } +.leaflet-pane { z-index: 400; } + +.leaflet-tile-pane { z-index: 200; } +.leaflet-overlay-pane { z-index: 400; } +.leaflet-shadow-pane { z-index: 500; } +.leaflet-marker-pane { z-index: 600; } +.leaflet-tooltip-pane { z-index: 650; } +.leaflet-popup-pane { z-index: 700; } + +.leaflet-map-pane canvas { z-index: 100; } +.leaflet-map-pane svg { z-index: 200; } .leaflet-vml-shape { width: 1px; @@ -81,7 +116,8 @@ .leaflet-control { position: relative; - z-index: 7; + z-index: 800; + pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ pointer-events: auto; } .leaflet-top, @@ -125,7 +161,9 @@ /* zoom and fade animations */ -.leaflet-fade-anim .leaflet-tile, +.leaflet-fade-anim .leaflet-tile { + will-change: opacity; + } .leaflet-fade-anim .leaflet-popup { opacity: 0; -webkit-transition: opacity 0.2s linear; @@ -133,11 +171,17 @@ -o-transition: opacity 0.2s linear; transition: opacity 0.2s linear; } -.leaflet-fade-anim .leaflet-tile-loaded, .leaflet-fade-anim .leaflet-map-pane .leaflet-popup { opacity: 1; } - +.leaflet-zoom-animated { + -webkit-transform-origin: 0 0; + -ms-transform-origin: 0 0; + transform-origin: 0 0; + } +.leaflet-zoom-anim .leaflet-zoom-animated { + will-change: transform; + } .leaflet-zoom-anim .leaflet-zoom-animated { -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1); -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1); @@ -145,8 +189,7 @@ transition: transform 0.25s cubic-bezier(0,0,0.25,1); } .leaflet-zoom-anim .leaflet-tile, -.leaflet-pan-anim .leaflet-tile, -.leaflet-touching .leaflet-zoom-animated { +.leaflet-pan-anim .leaflet-tile { -webkit-transition: none; -moz-transition: none; -o-transition: none; @@ -160,28 +203,49 @@ /* cursors */ -.leaflet-clickable { +.leaflet-interactive { cursor: pointer; } -.leaflet-container { +.leaflet-grab { cursor: -webkit-grab; cursor: -moz-grab; } +.leaflet-crosshair, +.leaflet-crosshair .leaflet-interactive { + cursor: crosshair; + } .leaflet-popup-pane, .leaflet-control { cursor: auto; } -.leaflet-dragging .leaflet-container, -.leaflet-dragging .leaflet-clickable { +.leaflet-dragging .leaflet-grab, +.leaflet-dragging .leaflet-grab .leaflet-interactive, +.leaflet-dragging .leaflet-marker-draggable { cursor: move; cursor: -webkit-grabbing; cursor: -moz-grabbing; } +/* marker & overlays interactivity */ +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-image-layer, +.leaflet-pane > svg path, +.leaflet-tile-container { + pointer-events: none; + } + +.leaflet-marker-icon.leaflet-interactive, +.leaflet-image-layer.leaflet-interactive, +.leaflet-pane > svg path.leaflet-interactive { + pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ + pointer-events: auto; + } /* visual tweaks */ .leaflet-container { + background: #ddd; outline: 0; } .leaflet-container a { @@ -249,7 +313,14 @@ height: 30px; line-height: 30px; } - +.leaflet-touch .leaflet-bar a:first-child { + border-top-left-radius: 2px; + border-top-right-radius: 2px; + } +.leaflet-touch .leaflet-bar a:last-child { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; + } /* zoom control */ @@ -258,16 +329,10 @@ font: bold 18px 'Lucida Console', Monaco, monospace; text-indent: 1px; } -.leaflet-control-zoom-out { - font-size: 20px; - } -.leaflet-touch .leaflet-control-zoom-in { +.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out { font-size: 22px; } -.leaflet-touch .leaflet-control-zoom-out { - font-size: 24px; - } /* layers control */ @@ -278,12 +343,12 @@ border-radius: 5px; } .leaflet-control-layers-toggle { - background-image: url(images/layers.png); + background-image: url(../images/layers.png); width: 36px; height: 36px; } .leaflet-retina .leaflet-control-layers-toggle { - background-image: url(images/layers-2x.png); + background-image: url(../images/layers-2x.png); background-size: 26px 26px; } .leaflet-touch .leaflet-control-layers-toggle { @@ -303,6 +368,11 @@ color: #333; background: #fff; } +.leaflet-control-layers-scrollbar { + overflow-y: scroll; + overflow-x: hidden; + padding-right: 5px; + } .leaflet-control-layers-selector { margin-top: 2px; position: relative; @@ -317,6 +387,11 @@ margin: 5px -10px 5px -6px; } +/* Default icon URLs */ +.leaflet-default-icon-path { + background-image: url(../images/marker-icon.png); + } + /* attribution and scale controls */ @@ -354,8 +429,8 @@ font-size: 11px; white-space: nowrap; overflow: hidden; - -moz-box-sizing: content-box; - box-sizing: content-box; + -moz-box-sizing: border-box; + box-sizing: border-box; background: #fff; background: rgba(255, 255, 255, 0.5); @@ -386,6 +461,7 @@ .leaflet-popup { position: absolute; text-align: center; + margin-bottom: 20px; } .leaflet-popup-content-wrapper { padding: 1px; @@ -400,11 +476,13 @@ margin: 18px 0; } .leaflet-popup-tip-container { - margin: 0 auto; width: 40px; height: 20px; - position: relative; + position: absolute; + left: 50%; + margin-left: -20px; overflow: hidden; + pointer-events: none; } .leaflet-popup-tip { width: 17px; @@ -422,7 +500,7 @@ .leaflet-popup-content-wrapper, .leaflet-popup-tip { background: white; - + color: #333; box-shadow: 0 3px 14px rgba(0,0,0,0.4); } .leaflet-container a.leaflet-popup-close-button { @@ -430,6 +508,7 @@ top: 0; right: 0; padding: 4px 4px 0 0; + border: none; text-align: center; width: 18px; height: 14px; @@ -475,5 +554,83 @@ .leaflet-div-icon { background: #fff; border: 1px solid #666; - } + } + +/* Tooltip */ +/* Base styles for the element that has a tooltip */ +.leaflet-tooltip { + position: absolute; + padding: 6px; + background-color: #fff; + border: 1px solid #fff; + border-radius: 3px; + color: #222; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + pointer-events: none; + box-shadow: 0 1px 3px rgba(0,0,0,0.4); + } +.leaflet-tooltip.leaflet-clickable { + cursor: pointer; + pointer-events: auto; + } +.leaflet-tooltip-top:before, +.leaflet-tooltip-bottom:before, +.leaflet-tooltip-left:before, +.leaflet-tooltip-right:before { + position: absolute; + pointer-events: none; + border: 6px solid transparent; + background: transparent; + content: ""; + } + +/* Directions */ + +.leaflet-tooltip-bottom { + margin-top: 6px; +} +.leaflet-tooltip-top { + margin-top: -6px; +} +.leaflet-tooltip-bottom:before, +.leaflet-tooltip-top:before { + left: 50%; + margin-left: -6px; + } +.leaflet-tooltip-top:before { + bottom: 0; + margin-bottom: -12px; + border-top-color: #fff; + } +.leaflet-tooltip-bottom:before { + top: 0; + margin-top: -12px; + margin-left: -6px; + border-bottom-color: #fff; + } +.leaflet-tooltip-left { + margin-left: -6px; +} +.leaflet-tooltip-right { + margin-left: 6px; +} +.leaflet-tooltip-left:before, +.leaflet-tooltip-right:before { + top: 50%; + margin-top: -6px; + } +.leaflet-tooltip-left:before { + right: 0; + margin-right: -12px; + border-left-color: #fff; + } +.leaflet-tooltip-right:before { + left: 0; + margin-left: -12px; + border-right-color: #fff; + } diff --git a/dist/css/worldmap-panel.css b/dist/css/worldmap-panel.css index ebf955e..94cab8b 100644 --- a/dist/css/worldmap-panel.css +++ b/dist/css/worldmap-panel.css @@ -34,5 +34,9 @@ } .leaflet-top.leaflet-left, .leaflet-bottom.leaflet-left, .leaflet-bottom.leaflet-right { - z-index: 100; + z-index: 1000; +} + +.leaflet-popup-content-wrapper, .leaflet-popup-tip { + color: #d8d9da !important; } diff --git a/dist/data_formatter.js b/dist/data_formatter.js deleted file mode 100644 index 3607705..0000000 --- a/dist/data_formatter.js +++ /dev/null @@ -1,261 +0,0 @@ -'use strict'; - -System.register(['lodash', './geohash'], function (_export, _context) { - "use strict"; - - var _, decodeGeoHash, _createClass, DataFormatter; - - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - - return { - setters: [function (_lodash) { - _ = _lodash.default; - }, function (_geohash) { - decodeGeoHash = _geohash.default; - }], - execute: function () { - _createClass = function () { - function defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - - return function (Constructor, protoProps, staticProps) { - if (protoProps) defineProperties(Constructor.prototype, protoProps); - if (staticProps) defineProperties(Constructor, staticProps); - return Constructor; - }; - }(); - - DataFormatter = function () { - function DataFormatter(ctrl, kbn) { - _classCallCheck(this, DataFormatter); - - this.ctrl = ctrl; - this.kbn = kbn; - } - - _createClass(DataFormatter, [{ - key: 'setValues', - value: function setValues(data) { - var _this = this; - - if (this.ctrl.series && this.ctrl.series.length > 0) { - var highestValue = 0; - var lowestValue = Number.MAX_VALUE; - - this.ctrl.series.forEach(function (serie) { - var lastPoint = _.last(serie.datapoints); - var lastValue = _.isArray(lastPoint) ? lastPoint[0] : null; - var location = _.find(_this.ctrl.locations, function (loc) { - return loc.key.toUpperCase() === serie.alias.toUpperCase(); - }); - - if (!location) return; - - if (_.isString(lastValue)) { - data.push({ key: serie.alias, value: 0, valueFormatted: lastValue, valueRounded: 0 }); - } else { - var dataValue = { - key: serie.alias, - locationName: location.name, - locationLatitude: location.latitude, - locationLongitude: location.longitude, - value: serie.stats[_this.ctrl.panel.valueName], - valueFormatted: lastValue, - valueRounded: 0 - }; - - if (dataValue.value > highestValue) highestValue = dataValue.value; - if (dataValue.value < lowestValue) lowestValue = dataValue.value; - - dataValue.valueRounded = _this.kbn.roundValue(dataValue.value, parseInt(_this.ctrl.panel.decimals, 10) || 0); - data.push(dataValue); - } - }); - - data.highestValue = highestValue; - data.lowestValue = lowestValue; - data.valueRange = highestValue - lowestValue; - } - } - }, { - key: 'createDataValue', - value: function createDataValue(encodedGeohash, decodedGeohash, locationName, value) { - var dataValue = { - key: encodedGeohash, - locationName: locationName, - locationLatitude: decodedGeohash.latitude, - locationLongitude: decodedGeohash.longitude, - value: value, - valueFormatted: value, - valueRounded: 0 - }; - - dataValue.valueRounded = this.kbn.roundValue(dataValue.value, this.ctrl.panel.decimals || 0); - return dataValue; - } - }, { - key: 'setGeohashValues', - value: function setGeohashValues(dataList, data) { - var _this2 = this; - - if (!this.ctrl.panel.esGeoPoint || !this.ctrl.panel.esMetric) return; - - if (dataList && dataList.length > 0) { - var highestValue = 0; - var lowestValue = Number.MAX_VALUE; - - dataList.forEach(function (result) { - if (result.type === 'table') { - var columnNames = {}; - - result.columns.forEach(function (column, columnIndex) { - columnNames[column.text] = columnIndex; - }); - - result.rows.forEach(function (row) { - var encodedGeohash = row[columnNames[_this2.ctrl.panel.esGeoPoint]]; - var decodedGeohash = decodeGeoHash(encodedGeohash); - var locationName = _this2.ctrl.panel.esLocationName ? row[columnNames[_this2.ctrl.panel.esLocationName]] : encodedGeohash; - var value = row[columnNames[_this2.ctrl.panel.esMetric]]; - - var dataValue = _this2.createDataValue(encodedGeohash, decodedGeohash, locationName, value, highestValue, lowestValue); - if (dataValue.value > highestValue) highestValue = dataValue.value; - if (dataValue.value < lowestValue) lowestValue = dataValue.value; - data.push(dataValue); - }); - - data.highestValue = highestValue; - data.lowestValue = lowestValue; - data.valueRange = highestValue - lowestValue; - } else { - result.datapoints.forEach(function (datapoint) { - var encodedGeohash = datapoint[_this2.ctrl.panel.esGeoPoint]; - var decodedGeohash = decodeGeoHash(encodedGeohash); - var locationName = _this2.ctrl.panel.esLocationName ? datapoint[_this2.ctrl.panel.esLocationName] : encodedGeohash; - var value = datapoint[_this2.ctrl.panel.esMetric]; - - var dataValue = _this2.createDataValue(encodedGeohash, decodedGeohash, locationName, value, highestValue, lowestValue); - if (dataValue.value > highestValue) highestValue = dataValue.value; - if (dataValue.value < lowestValue) lowestValue = dataValue.value; - data.push(dataValue); - }); - - data.highestValue = highestValue; - data.lowestValue = lowestValue; - data.valueRange = highestValue - lowestValue; - } - }); - } - } - }, { - key: 'setTableValues', - value: function setTableValues(tableData, data) { - var _this3 = this; - - if (tableData && tableData.length > 0) { - var highestValue = 0; - var lowestValue = Number.MAX_VALUE; - - tableData[0].forEach(function (datapoint) { - if (!datapoint.geohash) { - return; - } - - var encodedGeohash = datapoint.geohash; - var decodedGeohash = decodeGeoHash(encodedGeohash); - - var dataValue = { - key: encodedGeohash, - locationName: datapoint[_this3.ctrl.panel.tableLabel] || 'n/a', - locationLatitude: decodedGeohash.latitude, - locationLongitude: decodedGeohash.longitude, - value: datapoint.metric, - valueFormatted: datapoint.metric, - valueRounded: 0 - }; - - if (dataValue.value > highestValue) highestValue = dataValue.value; - if (dataValue.value < lowestValue) lowestValue = dataValue.value; - - dataValue.valueRounded = _this3.kbn.roundValue(dataValue.value, _this3.ctrl.panel.decimals || 0); - data.push(dataValue); - }); - - data.highestValue = highestValue; - data.lowestValue = lowestValue; - data.valueRange = highestValue - lowestValue; - } - } - }, { - key: 'setJsonValues', - value: function setJsonValues(data) { - if (this.ctrl.series && this.ctrl.series.length > 0) { - var highestValue = 0; - var lowestValue = Number.MAX_VALUE; - - this.ctrl.series.forEach(function (point) { - var dataValue = { - key: point.key, - locationName: point.name, - locationLatitude: point.latitude, - locationLongitude: point.longitude, - value: point.value !== undefined ? point.value : 1, - valueRounded: 0 - }; - if (dataValue.value > highestValue) highestValue = dataValue.value; - if (dataValue.value < lowestValue) lowestValue = dataValue.value; - dataValue.valueRounded = Math.round(dataValue.value); - data.push(dataValue); - }); - data.highestValue = highestValue; - data.lowestValue = lowestValue; - data.valueRange = highestValue - lowestValue; - } - } - }], [{ - key: 'tableHandler', - value: function tableHandler(tableData) { - var datapoints = []; - - if (tableData.type === 'table') { - var columnNames = {}; - - tableData.columns.forEach(function (column, columnIndex) { - columnNames[columnIndex] = column.text; - }); - - tableData.rows.forEach(function (row) { - var datapoint = {}; - - row.forEach(function (value, columnIndex) { - var key = columnNames[columnIndex]; - datapoint[key] = value; - }); - - datapoints.push(datapoint); - }); - } - - return datapoints; - } - }]); - - return DataFormatter; - }(); - - _export('default', DataFormatter); - } - }; -}); -//# sourceMappingURL=data_formatter.js.map diff --git a/dist/data_formatter.js.map b/dist/data_formatter.js.map deleted file mode 100644 index e583fc9..0000000 --- a/dist/data_formatter.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/data_formatter.js"],"names":["_","decodeGeoHash","DataFormatter","ctrl","kbn","data","series","length","highestValue","lowestValue","Number","MAX_VALUE","forEach","serie","lastPoint","last","datapoints","lastValue","isArray","location","find","locations","loc","key","toUpperCase","alias","isString","push","value","valueFormatted","valueRounded","dataValue","locationName","name","locationLatitude","latitude","locationLongitude","longitude","stats","panel","valueName","roundValue","parseInt","decimals","valueRange","encodedGeohash","decodedGeohash","dataList","esGeoPoint","esMetric","result","type","columnNames","columns","column","columnIndex","text","rows","row","esLocationName","createDataValue","datapoint","tableData","geohash","tableLabel","metric","point","undefined","Math","round"],"mappings":"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","file":"data_formatter.js","sourcesContent":["import _ from 'lodash';\nimport decodeGeoHash from './geohash';\n\nexport default class DataFormatter {\n constructor(ctrl, kbn) {\n this.ctrl = ctrl;\n this.kbn = kbn;\n }\n\n setValues(data) {\n if (this.ctrl.series && this.ctrl.series.length > 0) {\n let highestValue = 0;\n let lowestValue = Number.MAX_VALUE;\n\n this.ctrl.series.forEach((serie) => {\n const lastPoint = _.last(serie.datapoints);\n const lastValue = _.isArray(lastPoint) ? lastPoint[0] : null;\n const location = _.find(this.ctrl.locations, (loc) => { return loc.key.toUpperCase() === serie.alias.toUpperCase(); });\n\n if (!location) return;\n\n if (_.isString(lastValue)) {\n data.push({key: serie.alias, value: 0, valueFormatted: lastValue, valueRounded: 0});\n } else {\n const dataValue = {\n key: serie.alias,\n locationName: location.name,\n locationLatitude: location.latitude,\n locationLongitude: location.longitude,\n value: serie.stats[this.ctrl.panel.valueName],\n valueFormatted: lastValue,\n valueRounded: 0\n };\n\n if (dataValue.value > highestValue) highestValue = dataValue.value;\n if (dataValue.value < lowestValue) lowestValue = dataValue.value;\n\n dataValue.valueRounded = this.kbn.roundValue(dataValue.value, parseInt(this.ctrl.panel.decimals, 10) || 0);\n data.push(dataValue);\n }\n });\n\n data.highestValue = highestValue;\n data.lowestValue = lowestValue;\n data.valueRange = highestValue - lowestValue;\n }\n }\n\n createDataValue(encodedGeohash, decodedGeohash, locationName, value) {\n const dataValue = {\n key: encodedGeohash,\n locationName: locationName,\n locationLatitude: decodedGeohash.latitude,\n locationLongitude: decodedGeohash.longitude,\n value: value,\n valueFormatted: value,\n valueRounded: 0\n };\n\n dataValue.valueRounded = this.kbn.roundValue(dataValue.value, this.ctrl.panel.decimals || 0);\n return dataValue;\n }\n\n setGeohashValues(dataList, data) {\n if (!this.ctrl.panel.esGeoPoint || !this.ctrl.panel.esMetric) return;\n\n if (dataList && dataList.length > 0) {\n let highestValue = 0;\n let lowestValue = Number.MAX_VALUE;\n\n dataList.forEach((result) => {\n if (result.type === 'table') {\n const columnNames = {};\n\n result.columns.forEach((column, columnIndex) => {\n columnNames[column.text] = columnIndex;\n });\n\n result.rows.forEach((row) => {\n const encodedGeohash = row[columnNames[this.ctrl.panel.esGeoPoint]];\n const decodedGeohash = decodeGeoHash(encodedGeohash);\n const locationName = this.ctrl.panel.esLocationName ? row[columnNames[this.ctrl.panel.esLocationName]] : encodedGeohash;\n const value = row[columnNames[this.ctrl.panel.esMetric]];\n\n const dataValue = this.createDataValue(encodedGeohash, decodedGeohash, locationName, value, highestValue, lowestValue);\n if (dataValue.value > highestValue) highestValue = dataValue.value;\n if (dataValue.value < lowestValue) lowestValue = dataValue.value;\n data.push(dataValue);\n });\n\n data.highestValue = highestValue;\n data.lowestValue = lowestValue;\n data.valueRange = highestValue - lowestValue;\n } else {\n result.datapoints.forEach((datapoint) => {\n const encodedGeohash = datapoint[this.ctrl.panel.esGeoPoint];\n const decodedGeohash = decodeGeoHash(encodedGeohash);\n const locationName = this.ctrl.panel.esLocationName ? datapoint[this.ctrl.panel.esLocationName] : encodedGeohash;\n const value = datapoint[this.ctrl.panel.esMetric];\n\n const dataValue = this.createDataValue(encodedGeohash, decodedGeohash, locationName, value, highestValue, lowestValue);\n if (dataValue.value > highestValue) highestValue = dataValue.value;\n if (dataValue.value < lowestValue) lowestValue = dataValue.value;\n data.push(dataValue);\n });\n\n data.highestValue = highestValue;\n data.lowestValue = lowestValue;\n data.valueRange = highestValue - lowestValue;\n }\n });\n }\n }\n\n static tableHandler(tableData) {\n const datapoints = [];\n\n if (tableData.type === 'table') {\n const columnNames = {};\n\n tableData.columns.forEach((column, columnIndex) => {\n columnNames[columnIndex] = column.text;\n });\n\n tableData.rows.forEach((row) => {\n const datapoint = {};\n\n row.forEach((value, columnIndex) => {\n const key = columnNames[columnIndex];\n datapoint[key] = value;\n });\n\n datapoints.push(datapoint);\n });\n }\n\n return datapoints;\n }\n\n setTableValues(tableData, data) {\n if (tableData && tableData.length > 0) {\n let highestValue = 0;\n let lowestValue = Number.MAX_VALUE;\n\n tableData[0].forEach((datapoint) => {\n if (!datapoint.geohash) {\n return;\n }\n\n const encodedGeohash = datapoint.geohash;\n const decodedGeohash = decodeGeoHash(encodedGeohash);\n\n const dataValue = {\n key: encodedGeohash,\n locationName: datapoint[this.ctrl.panel.tableLabel] || 'n/a',\n locationLatitude: decodedGeohash.latitude,\n locationLongitude: decodedGeohash.longitude,\n value: datapoint.metric,\n valueFormatted: datapoint.metric,\n valueRounded: 0\n };\n\n if (dataValue.value > highestValue) highestValue = dataValue.value;\n if (dataValue.value < lowestValue) lowestValue = dataValue.value;\n\n dataValue.valueRounded = this.kbn.roundValue(dataValue.value, this.ctrl.panel.decimals || 0);\n data.push(dataValue);\n });\n\n data.highestValue = highestValue;\n data.lowestValue = lowestValue;\n data.valueRange = highestValue - lowestValue;\n }\n }\n\n setJsonValues(data) {\n if (this.ctrl.series && this.ctrl.series.length > 0) {\n let highestValue = 0;\n let lowestValue = Number.MAX_VALUE;\n\n this.ctrl.series.forEach((point) => {\n const dataValue = {\n key: point.key,\n locationName: point.name,\n locationLatitude: point.latitude,\n locationLongitude: point.longitude,\n value: (point.value !== undefined) ? point.value : 1,\n valueRounded: 0\n };\n if (dataValue.value > highestValue) highestValue = dataValue.value;\n if (dataValue.value < lowestValue) lowestValue = dataValue.value;\n dataValue.valueRounded = Math.round(dataValue.value);\n data.push(dataValue);\n });\n data.highestValue = highestValue;\n data.lowestValue = lowestValue;\n data.valueRange = highestValue - lowestValue;\n }\n }\n}\n\n"]} \ No newline at end of file diff --git a/dist/geohash.js b/dist/geohash.js deleted file mode 100644 index f129348..0000000 --- a/dist/geohash.js +++ /dev/null @@ -1,52 +0,0 @@ -'use strict'; - -System.register([], function (_export, _context) { - "use strict"; - - function decodeGeoHash(geohash) { - if (!geohash || geohash.length === 0) throw new Error('Missing geohash value'); - - var BITS = [16, 8, 4, 2, 1]; - var BASE32 = '0123456789bcdefghjkmnpqrstuvwxyz'; - var isEven = 1; - var lat = []; - var lon = []; - lat[0] = -90.0; - lat[1] = 90.0; - lon[0] = -180.0; - lon[1] = 180.0; - var base32Decoded = void 0; - - geohash.split('').forEach(function (item) { - base32Decoded = BASE32.indexOf(item); - BITS.forEach(function (mask) { - if (isEven) { - refineInterval(lon, base32Decoded, mask); - } else { - refineInterval(lat, base32Decoded, mask); - } - isEven = !isEven; - }); - }); - var latCenter = (lat[0] + lat[1]) / 2; - var lonCenter = (lon[0] + lon[1]) / 2; - - return { latitude: latCenter, longitude: lonCenter }; - } - - _export('default', decodeGeoHash); - - function refineInterval(interval, base32Decoded, mask) { - /* eslint no-bitwise: 0 */ - if (base32Decoded & mask) { - interval[0] = (interval[0] + interval[1]) / 2; - } else { - interval[1] = (interval[0] + interval[1]) / 2; - } - } - return { - setters: [], - execute: function () {} - }; -}); -//# sourceMappingURL=geohash.js.map diff --git a/dist/geohash.js.map b/dist/geohash.js.map deleted file mode 100644 index 79173ae..0000000 --- a/dist/geohash.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/geohash.js"],"names":["decodeGeoHash","geohash","length","Error","BITS","BASE32","isEven","lat","lon","base32Decoded","split","forEach","item","indexOf","mask","refineInterval","latCenter","lonCenter","latitude","longitude","interval"],"mappings":";;;;;AAAe,WAASA,aAAT,CAAuBC,OAAvB,EAAgC;AAC7C,QAAI,CAACA,OAAD,IAAYA,QAAQC,MAAR,KAAmB,CAAnC,EAAsC,MAAM,IAAIC,KAAJ,CAAU,uBAAV,CAAN;;AAEtC,QAAMC,OAAO,CAAC,EAAD,EAAK,CAAL,EAAQ,CAAR,EAAW,CAAX,EAAc,CAAd,CAAb;AACA,QAAMC,SAAS,kCAAf;AACA,QAAIC,SAAS,CAAb;AACA,QAAMC,MAAM,EAAZ;AACA,QAAMC,MAAM,EAAZ;AACAD,QAAI,CAAJ,IAAS,CAAC,IAAV;AACAA,QAAI,CAAJ,IAAS,IAAT;AACAC,QAAI,CAAJ,IAAS,CAAC,KAAV;AACAA,QAAI,CAAJ,IAAS,KAAT;AACA,QAAIC,sBAAJ;;AAEAR,YAAQS,KAAR,CAAc,EAAd,EAAkBC,OAAlB,CAA0B,UAACC,IAAD,EAAU;AAClCH,sBAAgBJ,OAAOQ,OAAP,CAAeD,IAAf,CAAhB;AACAR,WAAKO,OAAL,CAAa,UAACG,IAAD,EAAU;AACrB,YAAIR,MAAJ,EAAY;AACVS,yBAAeP,GAAf,EAAoBC,aAApB,EAAmCK,IAAnC;AACD,SAFD,MAEO;AACLC,yBAAeR,GAAf,EAAoBE,aAApB,EAAmCK,IAAnC;AACD;AACDR,iBAAS,CAACA,MAAV;AACD,OAPD;AAQD,KAVD;AAWA,QAAMU,YAAY,CAACT,IAAI,CAAJ,IAASA,IAAI,CAAJ,CAAV,IAAoB,CAAtC;AACA,QAAMU,YAAY,CAACT,IAAI,CAAJ,IAASA,IAAI,CAAJ,CAAV,IAAoB,CAAtC;;AAEA,WAAO,EAAEU,UAAUF,SAAZ,EAAuBG,WAAWF,SAAlC,EAAP;AACD;;qBA7BuBjB,a;;AA+BxB,WAASe,cAAT,CAAwBK,QAAxB,EAAkCX,aAAlC,EAAiDK,IAAjD,EAAuD;AACrD;AACA,QAAIL,gBAAgBK,IAApB,EAA0B;AACxBM,eAAS,CAAT,IAAc,CAACA,SAAS,CAAT,IAAcA,SAAS,CAAT,CAAf,IAA8B,CAA5C;AACD,KAFD,MAEO;AACLA,eAAS,CAAT,IAAc,CAACA,SAAS,CAAT,IAAcA,SAAS,CAAT,CAAf,IAA8B,CAA5C;AACD;AACF","file":"geohash.js","sourcesContent":["export default function decodeGeoHash(geohash) {\n if (!geohash || geohash.length === 0) throw new Error('Missing geohash value');\n\n const BITS = [16, 8, 4, 2, 1];\n const BASE32 = '0123456789bcdefghjkmnpqrstuvwxyz';\n let isEven = 1;\n const lat = [];\n const lon = [];\n lat[0] = -90.0;\n lat[1] = 90.0;\n lon[0] = -180.0;\n lon[1] = 180.0;\n let base32Decoded;\n\n geohash.split('').forEach((item) => {\n base32Decoded = BASE32.indexOf(item);\n BITS.forEach((mask) => {\n if (isEven) {\n refineInterval(lon, base32Decoded, mask);\n } else {\n refineInterval(lat, base32Decoded, mask);\n }\n isEven = !isEven;\n });\n });\n const latCenter = (lat[0] + lat[1]) / 2;\n const lonCenter = (lon[0] + lon[1]) / 2;\n\n return { latitude: latCenter, longitude: lonCenter};\n}\n\nfunction refineInterval(interval, base32Decoded, mask) {\n /* eslint no-bitwise: 0 */\n if (base32Decoded & mask) {\n interval[0] = (interval[0] + interval[1]) / 2;\n } else {\n interval[1] = (interval[0] + interval[1]) / 2;\n }\n}\n"]} \ No newline at end of file diff --git a/dist/images/countries-option.png b/dist/images/countries-option.png index 36d0125..5ff68b0 100644 Binary files a/dist/images/countries-option.png and b/dist/images/countries-option.png differ diff --git a/dist/images/elasticsearch-query.png b/dist/images/elasticsearch-query.png new file mode 100644 index 0000000..2eef897 Binary files /dev/null and b/dist/images/elasticsearch-query.png differ diff --git a/dist/images/es-options.png b/dist/images/es-options.png index a36f4e8..1f6cebb 100644 Binary files a/dist/images/es-options.png and b/dist/images/es-options.png differ diff --git a/dist/images/influx-query.png b/dist/images/influx-query.png index d439155..57e7bad 100644 Binary files a/dist/images/influx-query.png and b/dist/images/influx-query.png differ diff --git a/dist/images/json-endpoint.png b/dist/images/json-endpoint.png index 57ded62..d84c42b 100644 Binary files a/dist/images/json-endpoint.png and b/dist/images/json-endpoint.png differ diff --git a/dist/images/jsonp-endpoint.png b/dist/images/jsonp-endpoint.png index 8c46718..15b84b3 100644 Binary files a/dist/images/jsonp-endpoint.png and b/dist/images/jsonp-endpoint.png differ diff --git a/dist/images/worldmap-timeseries-query.png b/dist/images/worldmap-timeseries-query.png index e20f326..98a142f 100644 Binary files a/dist/images/worldmap-timeseries-query.png and b/dist/images/worldmap-timeseries-query.png differ diff --git a/dist/libs/leaflet.js b/dist/libs/leaflet.js deleted file mode 100644 index c8f15aa..0000000 --- a/dist/libs/leaflet.js +++ /dev/null @@ -1,2294 +0,0 @@ -"use strict"; - -System.register([], function (_export, _context) { - "use strict"; - - var _typeof; - - return { - setters: [], - execute: function () { - _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { - return typeof obj; - } : function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - /* - Leaflet, a JavaScript library for mobile-friendly interactive maps. http://leafletjs.com - (c) 2010-2013, Vladimir Agafonkin - (c) 2010-2011, CloudMade - */ - !function (t, e, i) { - var n = t.L, - o = {};o.version = "0.7.7", "object" == (typeof module === "undefined" ? "undefined" : _typeof(module)) && "object" == _typeof(module.exports) ? module.exports = o : "function" == typeof define && define.amd && define(o), o.noConflict = function () { - return t.L = n, this; - }, t.L = o, o.Util = { extend: function extend(t) { - var e, - i, - n, - o, - s = Array.prototype.slice.call(arguments, 1);for (i = 0, n = s.length; n > i; i++) { - o = s[i] || {};for (e in o) { - o.hasOwnProperty(e) && (t[e] = o[e]); - } - }return t; - }, bind: function bind(t, e) { - var i = arguments.length > 2 ? Array.prototype.slice.call(arguments, 2) : null;return function () { - return t.apply(e, i || arguments); - }; - }, stamp: function () { - var t = 0, - e = "_leaflet_id";return function (i) { - return i[e] = i[e] || ++t, i[e]; - }; - }(), invokeEach: function invokeEach(t, e, i) { - var n, o;if ("object" == (typeof t === "undefined" ? "undefined" : _typeof(t))) { - o = Array.prototype.slice.call(arguments, 3);for (n in t) { - e.apply(i, [n, t[n]].concat(o)); - }return !0; - }return !1; - }, limitExecByInterval: function limitExecByInterval(t, e, i) { - var n, o;return function s() { - var a = arguments;return n ? void (o = !0) : (n = !0, setTimeout(function () { - n = !1, o && (s.apply(i, a), o = !1); - }, e), void t.apply(i, a)); - }; - }, falseFn: function falseFn() { - return !1; - }, formatNum: function formatNum(t, e) { - var i = Math.pow(10, e || 5);return Math.round(t * i) / i; - }, trim: function trim(t) { - return t.trim ? t.trim() : t.replace(/^\s+|\s+$/g, ""); - }, splitWords: function splitWords(t) { - return o.Util.trim(t).split(/\s+/); - }, setOptions: function setOptions(t, e) { - return t.options = o.extend({}, t.options, e), t.options; - }, getParamString: function getParamString(t, e, i) { - var n = [];for (var o in t) { - n.push(encodeURIComponent(i ? o.toUpperCase() : o) + "=" + encodeURIComponent(t[o])); - }return (e && -1 !== e.indexOf("?") ? "&" : "?") + n.join("&"); - }, template: function template(t, e) { - return t.replace(/\{ *([\w_]+) *\}/g, function (t, n) { - var o = e[n];if (o === i) throw new Error("No value provided for variable " + t);return "function" == typeof o && (o = o(e)), o; - }); - }, isArray: Array.isArray || function (t) { - return "[object Array]" === Object.prototype.toString.call(t); - }, emptyImageUrl: "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" }, function () { - function e(e) { - var i, - n, - o = ["webkit", "moz", "o", "ms"];for (i = 0; i < o.length && !n; i++) { - n = t[o[i] + e]; - }return n; - }function i(e) { - var i = +new Date(), - o = Math.max(0, 16 - (i - n));return n = i + o, t.setTimeout(e, o); - }var n = 0, - s = t.requestAnimationFrame || e("RequestAnimationFrame") || i, - a = t.cancelAnimationFrame || e("CancelAnimationFrame") || e("CancelRequestAnimationFrame") || function (e) { - t.clearTimeout(e); - };o.Util.requestAnimFrame = function (e, n, a, r) { - return e = o.bind(e, n), a && s === i ? void e() : s.call(t, e, r); - }, o.Util.cancelAnimFrame = function (e) { - e && a.call(t, e); - }; - }(), o.extend = o.Util.extend, o.bind = o.Util.bind, o.stamp = o.Util.stamp, o.setOptions = o.Util.setOptions, o.Class = function () {}, o.Class.extend = function (t) { - var e = function e() { - this.initialize && this.initialize.apply(this, arguments), this._initHooks && this.callInitHooks(); - }, - i = function i() {};i.prototype = this.prototype;var n = new i();n.constructor = e, e.prototype = n;for (var s in this) { - this.hasOwnProperty(s) && "prototype" !== s && (e[s] = this[s]); - }t.statics && (o.extend(e, t.statics), delete t.statics), t.includes && (o.Util.extend.apply(null, [n].concat(t.includes)), delete t.includes), t.options && n.options && (t.options = o.extend({}, n.options, t.options)), o.extend(n, t), n._initHooks = [];var a = this;return e.__super__ = a.prototype, n.callInitHooks = function () { - if (!this._initHooksCalled) { - a.prototype.callInitHooks && a.prototype.callInitHooks.call(this), this._initHooksCalled = !0;for (var t = 0, e = n._initHooks.length; e > t; t++) { - n._initHooks[t].call(this); - } - } - }, e; - }, o.Class.include = function (t) { - o.extend(this.prototype, t); - }, o.Class.mergeOptions = function (t) { - o.extend(this.prototype.options, t); - }, o.Class.addInitHook = function (t) { - var e = Array.prototype.slice.call(arguments, 1), - i = "function" == typeof t ? t : function () { - this[t].apply(this, e); - };this.prototype._initHooks = this.prototype._initHooks || [], this.prototype._initHooks.push(i); - };var s = "_leaflet_events";o.Mixin = {}, o.Mixin.Events = { addEventListener: function addEventListener(t, e, i) { - if (o.Util.invokeEach(t, this.addEventListener, this, e, i)) return this;var n, - a, - r, - h, - l, - u, - c, - d = this[s] = this[s] || {}, - p = i && i !== this && o.stamp(i);for (t = o.Util.splitWords(t), n = 0, a = t.length; a > n; n++) { - r = { action: e, context: i || this }, h = t[n], p ? (l = h + "_idx", u = l + "_len", c = d[l] = d[l] || {}, c[p] || (c[p] = [], d[u] = (d[u] || 0) + 1), c[p].push(r)) : (d[h] = d[h] || [], d[h].push(r)); - }return this; - }, hasEventListeners: function hasEventListeners(t) { - var e = this[s];return !!e && (t in e && e[t].length > 0 || t + "_idx" in e && e[t + "_idx_len"] > 0); - }, removeEventListener: function removeEventListener(t, e, i) { - if (!this[s]) return this;if (!t) return this.clearAllEventListeners();if (o.Util.invokeEach(t, this.removeEventListener, this, e, i)) return this;var n, - a, - r, - h, - l, - u, - c, - d, - p, - _ = this[s], - m = i && i !== this && o.stamp(i);for (t = o.Util.splitWords(t), n = 0, a = t.length; a > n; n++) { - if (r = t[n], u = r + "_idx", c = u + "_len", d = _[u], e) { - if (h = m && d ? d[m] : _[r]) { - for (l = h.length - 1; l >= 0; l--) { - h[l].action !== e || i && h[l].context !== i || (p = h.splice(l, 1), p[0].action = o.Util.falseFn); - }i && d && 0 === h.length && (delete d[m], _[c]--); - } - } else delete _[r], delete _[u], delete _[c]; - }return this; - }, clearAllEventListeners: function clearAllEventListeners() { - return delete this[s], this; - }, fireEvent: function fireEvent(t, e) { - if (!this.hasEventListeners(t)) return this;var i, - n, - a, - r, - h, - l = o.Util.extend({}, e, { type: t, target: this }), - u = this[s];if (u[t]) for (i = u[t].slice(), n = 0, a = i.length; a > n; n++) { - i[n].action.call(i[n].context, l); - }r = u[t + "_idx"];for (h in r) { - if (i = r[h].slice()) for (n = 0, a = i.length; a > n; n++) { - i[n].action.call(i[n].context, l); - } - }return this; - }, addOneTimeEventListener: function addOneTimeEventListener(t, e, i) { - if (o.Util.invokeEach(t, this.addOneTimeEventListener, this, e, i)) return this;var n = o.bind(function () { - this.removeEventListener(t, e, i).removeEventListener(t, n, i); - }, this);return this.addEventListener(t, e, i).addEventListener(t, n, i); - } }, o.Mixin.Events.on = o.Mixin.Events.addEventListener, o.Mixin.Events.off = o.Mixin.Events.removeEventListener, o.Mixin.Events.once = o.Mixin.Events.addOneTimeEventListener, o.Mixin.Events.fire = o.Mixin.Events.fireEvent, function () { - var n = "ActiveXObject" in t, - s = n && !e.addEventListener, - a = navigator.userAgent.toLowerCase(), - r = -1 !== a.indexOf("webkit"), - h = -1 !== a.indexOf("chrome"), - l = -1 !== a.indexOf("phantom"), - u = -1 !== a.indexOf("android"), - c = -1 !== a.search("android [23]"), - d = -1 !== a.indexOf("gecko"), - p = (typeof orientation === "undefined" ? "undefined" : _typeof(orientation)) != i + "", - _ = !t.PointerEvent && t.MSPointerEvent, - m = t.PointerEvent && t.navigator.pointerEnabled || _, - f = "devicePixelRatio" in t && t.devicePixelRatio > 1 || "matchMedia" in t && t.matchMedia("(min-resolution:144dpi)") && t.matchMedia("(min-resolution:144dpi)").matches, - g = e.documentElement, - v = n && "transition" in g.style, - y = "WebKitCSSMatrix" in t && "m11" in new t.WebKitCSSMatrix() && !c, - P = "MozPerspective" in g.style, - L = "OTransition" in g.style, - x = !t.L_DISABLE_3D && (v || y || P || L) && !l, - w = !t.L_NO_TOUCH && !l && (m || "ontouchstart" in t || t.DocumentTouch && e instanceof t.DocumentTouch);o.Browser = { ie: n, ielt9: s, webkit: r, gecko: d && !r && !t.opera && !n, android: u, android23: c, chrome: h, ie3d: v, webkit3d: y, gecko3d: P, opera3d: L, any3d: x, mobile: p, mobileWebkit: p && r, mobileWebkit3d: p && y, mobileOpera: p && t.opera, touch: w, msPointer: _, pointer: m, retina: f }; - }(), o.Point = function (t, e, i) { - this.x = i ? Math.round(t) : t, this.y = i ? Math.round(e) : e; - }, o.Point.prototype = { clone: function clone() { - return new o.Point(this.x, this.y); - }, add: function add(t) { - return this.clone()._add(o.point(t)); - }, _add: function _add(t) { - return this.x += t.x, this.y += t.y, this; - }, subtract: function subtract(t) { - return this.clone()._subtract(o.point(t)); - }, _subtract: function _subtract(t) { - return this.x -= t.x, this.y -= t.y, this; - }, divideBy: function divideBy(t) { - return this.clone()._divideBy(t); - }, _divideBy: function _divideBy(t) { - return this.x /= t, this.y /= t, this; - }, multiplyBy: function multiplyBy(t) { - return this.clone()._multiplyBy(t); - }, _multiplyBy: function _multiplyBy(t) { - return this.x *= t, this.y *= t, this; - }, round: function round() { - return this.clone()._round(); - }, _round: function _round() { - return this.x = Math.round(this.x), this.y = Math.round(this.y), this; - }, floor: function floor() { - return this.clone()._floor(); - }, _floor: function _floor() { - return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this; - }, distanceTo: function distanceTo(t) { - t = o.point(t);var e = t.x - this.x, - i = t.y - this.y;return Math.sqrt(e * e + i * i); - }, equals: function equals(t) { - return t = o.point(t), t.x === this.x && t.y === this.y; - }, contains: function contains(t) { - return t = o.point(t), Math.abs(t.x) <= Math.abs(this.x) && Math.abs(t.y) <= Math.abs(this.y); - }, toString: function toString() { - return "Point(" + o.Util.formatNum(this.x) + ", " + o.Util.formatNum(this.y) + ")"; - } }, o.point = function (t, e, n) { - return t instanceof o.Point ? t : o.Util.isArray(t) ? new o.Point(t[0], t[1]) : t === i || null === t ? t : new o.Point(t, e, n); - }, o.Bounds = function (t, e) { - if (t) for (var i = e ? [t, e] : t, n = 0, o = i.length; o > n; n++) { - this.extend(i[n]); - } - }, o.Bounds.prototype = { extend: function extend(t) { - return t = o.point(t), this.min || this.max ? (this.min.x = Math.min(t.x, this.min.x), this.max.x = Math.max(t.x, this.max.x), this.min.y = Math.min(t.y, this.min.y), this.max.y = Math.max(t.y, this.max.y)) : (this.min = t.clone(), this.max = t.clone()), this; - }, getCenter: function getCenter(t) { - return new o.Point((this.min.x + this.max.x) / 2, (this.min.y + this.max.y) / 2, t); - }, getBottomLeft: function getBottomLeft() { - return new o.Point(this.min.x, this.max.y); - }, getTopRight: function getTopRight() { - return new o.Point(this.max.x, this.min.y); - }, getSize: function getSize() { - return this.max.subtract(this.min); - }, contains: function contains(t) { - var e, i;return t = "number" == typeof t[0] || t instanceof o.Point ? o.point(t) : o.bounds(t), t instanceof o.Bounds ? (e = t.min, i = t.max) : e = i = t, e.x >= this.min.x && i.x <= this.max.x && e.y >= this.min.y && i.y <= this.max.y; - }, intersects: function intersects(t) { - t = o.bounds(t);var e = this.min, - i = this.max, - n = t.min, - s = t.max, - a = s.x >= e.x && n.x <= i.x, - r = s.y >= e.y && n.y <= i.y;return a && r; - }, isValid: function isValid() { - return !(!this.min || !this.max); - } }, o.bounds = function (t, e) { - return !t || t instanceof o.Bounds ? t : new o.Bounds(t, e); - }, o.Transformation = function (t, e, i, n) { - this._a = t, this._b = e, this._c = i, this._d = n; - }, o.Transformation.prototype = { transform: function transform(t, e) { - return this._transform(t.clone(), e); - }, _transform: function _transform(t, e) { - return e = e || 1, t.x = e * (this._a * t.x + this._b), t.y = e * (this._c * t.y + this._d), t; - }, untransform: function untransform(t, e) { - return e = e || 1, new o.Point((t.x / e - this._b) / this._a, (t.y / e - this._d) / this._c); - } }, o.DomUtil = { get: function get(t) { - return "string" == typeof t ? e.getElementById(t) : t; - }, getStyle: function getStyle(t, i) { - var n = t.style[i];if (!n && t.currentStyle && (n = t.currentStyle[i]), (!n || "auto" === n) && e.defaultView) { - var o = e.defaultView.getComputedStyle(t, null);n = o ? o[i] : null; - }return "auto" === n ? null : n; - }, getViewportOffset: function getViewportOffset(t) { - var i, - n = 0, - s = 0, - a = t, - r = e.body, - h = e.documentElement;do { - if (n += a.offsetTop || 0, s += a.offsetLeft || 0, n += parseInt(o.DomUtil.getStyle(a, "borderTopWidth"), 10) || 0, s += parseInt(o.DomUtil.getStyle(a, "borderLeftWidth"), 10) || 0, i = o.DomUtil.getStyle(a, "position"), a.offsetParent === r && "absolute" === i) break;if ("fixed" === i) { - n += r.scrollTop || h.scrollTop || 0, s += r.scrollLeft || h.scrollLeft || 0;break; - }if ("relative" === i && !a.offsetLeft) { - var l = o.DomUtil.getStyle(a, "width"), - u = o.DomUtil.getStyle(a, "max-width"), - c = a.getBoundingClientRect();("none" !== l || "none" !== u) && (s += c.left + a.clientLeft), n += c.top + (r.scrollTop || h.scrollTop || 0);break; - }a = a.offsetParent; - } while (a);a = t;do { - if (a === r) break;n -= a.scrollTop || 0, s -= a.scrollLeft || 0, a = a.parentNode; - } while (a);return new o.Point(s, n); - }, documentIsLtr: function documentIsLtr() { - return o.DomUtil._docIsLtrCached || (o.DomUtil._docIsLtrCached = !0, o.DomUtil._docIsLtr = "ltr" === o.DomUtil.getStyle(e.body, "direction")), o.DomUtil._docIsLtr; - }, create: function create(t, i, n) { - var o = e.createElement(t);return o.className = i, n && n.appendChild(o), o; - }, hasClass: function hasClass(t, e) { - if (t.classList !== i) return t.classList.contains(e);var n = o.DomUtil._getClass(t);return n.length > 0 && new RegExp("(^|\\s)" + e + "(\\s|$)").test(n); - }, addClass: function addClass(t, e) { - if (t.classList !== i) for (var n = o.Util.splitWords(e), s = 0, a = n.length; a > s; s++) { - t.classList.add(n[s]); - } else if (!o.DomUtil.hasClass(t, e)) { - var r = o.DomUtil._getClass(t);o.DomUtil._setClass(t, (r ? r + " " : "") + e); - } - }, removeClass: function removeClass(t, e) { - t.classList !== i ? t.classList.remove(e) : o.DomUtil._setClass(t, o.Util.trim((" " + o.DomUtil._getClass(t) + " ").replace(" " + e + " ", " "))); - }, _setClass: function _setClass(t, e) { - t.className.baseVal === i ? t.className = e : t.className.baseVal = e; - }, _getClass: function _getClass(t) { - return t.className.baseVal === i ? t.className : t.className.baseVal; - }, setOpacity: function setOpacity(t, e) { - if ("opacity" in t.style) t.style.opacity = e;else if ("filter" in t.style) { - var i = !1, - n = "DXImageTransform.Microsoft.Alpha";try { - i = t.filters.item(n); - } catch (o) { - if (1 === e) return; - }e = Math.round(100 * e), i ? (i.Enabled = 100 !== e, i.Opacity = e) : t.style.filter += " progid:" + n + "(opacity=" + e + ")"; - } - }, testProp: function testProp(t) { - for (var i = e.documentElement.style, n = 0; n < t.length; n++) { - if (t[n] in i) return t[n]; - }return !1; - }, getTranslateString: function getTranslateString(t) { - var e = o.Browser.webkit3d, - i = "translate" + (e ? "3d" : "") + "(", - n = (e ? ",0" : "") + ")";return i + t.x + "px," + t.y + "px" + n; - }, getScaleString: function getScaleString(t, e) { - var i = o.DomUtil.getTranslateString(e.add(e.multiplyBy(-1 * t))), - n = " scale(" + t + ") ";return i + n; - }, setPosition: function setPosition(t, e, i) { - t._leaflet_pos = e, !i && o.Browser.any3d ? t.style[o.DomUtil.TRANSFORM] = o.DomUtil.getTranslateString(e) : (t.style.left = e.x + "px", t.style.top = e.y + "px"); - }, getPosition: function getPosition(t) { - return t._leaflet_pos; - } }, o.DomUtil.TRANSFORM = o.DomUtil.testProp(["transform", "WebkitTransform", "OTransform", "MozTransform", "msTransform"]), o.DomUtil.TRANSITION = o.DomUtil.testProp(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]), o.DomUtil.TRANSITION_END = "webkitTransition" === o.DomUtil.TRANSITION || "OTransition" === o.DomUtil.TRANSITION ? o.DomUtil.TRANSITION + "End" : "transitionend", function () { - if ("onselectstart" in e) o.extend(o.DomUtil, { disableTextSelection: function disableTextSelection() { - o.DomEvent.on(t, "selectstart", o.DomEvent.preventDefault); - }, enableTextSelection: function enableTextSelection() { - o.DomEvent.off(t, "selectstart", o.DomEvent.preventDefault); - } });else { - var i = o.DomUtil.testProp(["userSelect", "WebkitUserSelect", "OUserSelect", "MozUserSelect", "msUserSelect"]);o.extend(o.DomUtil, { disableTextSelection: function disableTextSelection() { - if (i) { - var t = e.documentElement.style;this._userSelect = t[i], t[i] = "none"; - } - }, enableTextSelection: function enableTextSelection() { - i && (e.documentElement.style[i] = this._userSelect, delete this._userSelect); - } }); - }o.extend(o.DomUtil, { disableImageDrag: function disableImageDrag() { - o.DomEvent.on(t, "dragstart", o.DomEvent.preventDefault); - }, enableImageDrag: function enableImageDrag() { - o.DomEvent.off(t, "dragstart", o.DomEvent.preventDefault); - } }); - }(), o.LatLng = function (t, e, n) { - if (t = parseFloat(t), e = parseFloat(e), isNaN(t) || isNaN(e)) throw new Error("Invalid LatLng object: (" + t + ", " + e + ")");this.lat = t, this.lng = e, n !== i && (this.alt = parseFloat(n)); - }, o.extend(o.LatLng, { DEG_TO_RAD: Math.PI / 180, RAD_TO_DEG: 180 / Math.PI, MAX_MARGIN: 1e-9 }), o.LatLng.prototype = { equals: function equals(t) { - if (!t) return !1;t = o.latLng(t);var e = Math.max(Math.abs(this.lat - t.lat), Math.abs(this.lng - t.lng));return e <= o.LatLng.MAX_MARGIN; - }, toString: function toString(t) { - return "LatLng(" + o.Util.formatNum(this.lat, t) + ", " + o.Util.formatNum(this.lng, t) + ")"; - }, distanceTo: function distanceTo(t) { - t = o.latLng(t);var e = 6378137, - i = o.LatLng.DEG_TO_RAD, - n = (t.lat - this.lat) * i, - s = (t.lng - this.lng) * i, - a = this.lat * i, - r = t.lat * i, - h = Math.sin(n / 2), - l = Math.sin(s / 2), - u = h * h + l * l * Math.cos(a) * Math.cos(r);return 2 * e * Math.atan2(Math.sqrt(u), Math.sqrt(1 - u)); - }, wrap: function wrap(t, e) { - var i = this.lng;return t = t || -180, e = e || 180, i = (i + e) % (e - t) + (t > i || i === e ? e : t), new o.LatLng(this.lat, i); - } }, o.latLng = function (t, e) { - return t instanceof o.LatLng ? t : o.Util.isArray(t) ? "number" == typeof t[0] || "string" == typeof t[0] ? new o.LatLng(t[0], t[1], t[2]) : null : t === i || null === t ? t : "object" == (typeof t === "undefined" ? "undefined" : _typeof(t)) && "lat" in t ? new o.LatLng(t.lat, "lng" in t ? t.lng : t.lon) : e === i ? null : new o.LatLng(t, e); - }, o.LatLngBounds = function (t, e) { - if (t) for (var i = e ? [t, e] : t, n = 0, o = i.length; o > n; n++) { - this.extend(i[n]); - } - }, o.LatLngBounds.prototype = { extend: function extend(t) { - if (!t) return this;var e = o.latLng(t);return t = null !== e ? e : o.latLngBounds(t), t instanceof o.LatLng ? this._southWest || this._northEast ? (this._southWest.lat = Math.min(t.lat, this._southWest.lat), this._southWest.lng = Math.min(t.lng, this._southWest.lng), this._northEast.lat = Math.max(t.lat, this._northEast.lat), this._northEast.lng = Math.max(t.lng, this._northEast.lng)) : (this._southWest = new o.LatLng(t.lat, t.lng), this._northEast = new o.LatLng(t.lat, t.lng)) : t instanceof o.LatLngBounds && (this.extend(t._southWest), this.extend(t._northEast)), this; - }, pad: function pad(t) { - var e = this._southWest, - i = this._northEast, - n = Math.abs(e.lat - i.lat) * t, - s = Math.abs(e.lng - i.lng) * t;return new o.LatLngBounds(new o.LatLng(e.lat - n, e.lng - s), new o.LatLng(i.lat + n, i.lng + s)); - }, getCenter: function getCenter() { - return new o.LatLng((this._southWest.lat + this._northEast.lat) / 2, (this._southWest.lng + this._northEast.lng) / 2); - }, getSouthWest: function getSouthWest() { - return this._southWest; - }, getNorthEast: function getNorthEast() { - return this._northEast; - }, getNorthWest: function getNorthWest() { - return new o.LatLng(this.getNorth(), this.getWest()); - }, getSouthEast: function getSouthEast() { - return new o.LatLng(this.getSouth(), this.getEast()); - }, getWest: function getWest() { - return this._southWest.lng; - }, getSouth: function getSouth() { - return this._southWest.lat; - }, getEast: function getEast() { - return this._northEast.lng; - }, getNorth: function getNorth() { - return this._northEast.lat; - }, contains: function contains(t) { - t = "number" == typeof t[0] || t instanceof o.LatLng ? o.latLng(t) : o.latLngBounds(t);var e, - i, - n = this._southWest, - s = this._northEast;return t instanceof o.LatLngBounds ? (e = t.getSouthWest(), i = t.getNorthEast()) : e = i = t, e.lat >= n.lat && i.lat <= s.lat && e.lng >= n.lng && i.lng <= s.lng; - }, intersects: function intersects(t) { - t = o.latLngBounds(t);var e = this._southWest, - i = this._northEast, - n = t.getSouthWest(), - s = t.getNorthEast(), - a = s.lat >= e.lat && n.lat <= i.lat, - r = s.lng >= e.lng && n.lng <= i.lng;return a && r; - }, toBBoxString: function toBBoxString() { - return [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(","); - }, equals: function equals(t) { - return t ? (t = o.latLngBounds(t), this._southWest.equals(t.getSouthWest()) && this._northEast.equals(t.getNorthEast())) : !1; - }, isValid: function isValid() { - return !(!this._southWest || !this._northEast); - } }, o.latLngBounds = function (t, e) { - return !t || t instanceof o.LatLngBounds ? t : new o.LatLngBounds(t, e); - }, o.Projection = {}, o.Projection.SphericalMercator = { MAX_LATITUDE: 85.0511287798, project: function project(t) { - var e = o.LatLng.DEG_TO_RAD, - i = this.MAX_LATITUDE, - n = Math.max(Math.min(i, t.lat), -i), - s = t.lng * e, - a = n * e;return a = Math.log(Math.tan(Math.PI / 4 + a / 2)), new o.Point(s, a); - }, unproject: function unproject(t) { - var e = o.LatLng.RAD_TO_DEG, - i = t.x * e, - n = (2 * Math.atan(Math.exp(t.y)) - Math.PI / 2) * e;return new o.LatLng(n, i); - } }, o.Projection.LonLat = { project: function project(t) { - return new o.Point(t.lng, t.lat); - }, unproject: function unproject(t) { - return new o.LatLng(t.y, t.x); - } }, o.CRS = { latLngToPoint: function latLngToPoint(t, e) { - var i = this.projection.project(t), - n = this.scale(e);return this.transformation._transform(i, n); - }, pointToLatLng: function pointToLatLng(t, e) { - var i = this.scale(e), - n = this.transformation.untransform(t, i);return this.projection.unproject(n); - }, project: function project(t) { - return this.projection.project(t); - }, scale: function scale(t) { - return 256 * Math.pow(2, t); - }, getSize: function getSize(t) { - var e = this.scale(t);return o.point(e, e); - } }, o.CRS.Simple = o.extend({}, o.CRS, { projection: o.Projection.LonLat, transformation: new o.Transformation(1, 0, -1, 0), scale: function scale(t) { - return Math.pow(2, t); - } }), o.CRS.EPSG3857 = o.extend({}, o.CRS, { code: "EPSG:3857", projection: o.Projection.SphericalMercator, transformation: new o.Transformation(.5 / Math.PI, .5, -.5 / Math.PI, .5), project: function project(t) { - var e = this.projection.project(t), - i = 6378137;return e.multiplyBy(i); - } }), o.CRS.EPSG900913 = o.extend({}, o.CRS.EPSG3857, { code: "EPSG:900913" }), o.CRS.EPSG4326 = o.extend({}, o.CRS, { code: "EPSG:4326", projection: o.Projection.LonLat, transformation: new o.Transformation(1 / 360, .5, -1 / 360, .5) }), o.Map = o.Class.extend({ includes: o.Mixin.Events, options: { crs: o.CRS.EPSG3857, fadeAnimation: o.DomUtil.TRANSITION && !o.Browser.android23, trackResize: !0, markerZoomAnimation: o.DomUtil.TRANSITION && o.Browser.any3d }, initialize: function initialize(t, e) { - e = o.setOptions(this, e), this._initContainer(t), this._initLayout(), this._onResize = o.bind(this._onResize, this), this._initEvents(), e.maxBounds && this.setMaxBounds(e.maxBounds), e.center && e.zoom !== i && this.setView(o.latLng(e.center), e.zoom, { reset: !0 }), this._handlers = [], this._layers = {}, this._zoomBoundLayers = {}, this._tileLayersNum = 0, this.callInitHooks(), this._addLayers(e.layers); - }, setView: function setView(t, e) { - return e = e === i ? this.getZoom() : e, this._resetView(o.latLng(t), this._limitZoom(e)), this; - }, setZoom: function setZoom(t, e) { - return this._loaded ? this.setView(this.getCenter(), t, { zoom: e }) : (this._zoom = this._limitZoom(t), this); - }, zoomIn: function zoomIn(t, e) { - return this.setZoom(this._zoom + (t || 1), e); - }, zoomOut: function zoomOut(t, e) { - return this.setZoom(this._zoom - (t || 1), e); - }, setZoomAround: function setZoomAround(t, e, i) { - var n = this.getZoomScale(e), - s = this.getSize().divideBy(2), - a = t instanceof o.Point ? t : this.latLngToContainerPoint(t), - r = a.subtract(s).multiplyBy(1 - 1 / n), - h = this.containerPointToLatLng(s.add(r));return this.setView(h, e, { zoom: i }); - }, fitBounds: function fitBounds(t, e) { - e = e || {}, t = t.getBounds ? t.getBounds() : o.latLngBounds(t);var i = o.point(e.paddingTopLeft || e.padding || [0, 0]), - n = o.point(e.paddingBottomRight || e.padding || [0, 0]), - s = this.getBoundsZoom(t, !1, i.add(n));s = e.maxZoom ? Math.min(e.maxZoom, s) : s;var a = n.subtract(i).divideBy(2), - r = this.project(t.getSouthWest(), s), - h = this.project(t.getNorthEast(), s), - l = this.unproject(r.add(h).divideBy(2).add(a), s);return this.setView(l, s, e); - }, fitWorld: function fitWorld(t) { - return this.fitBounds([[-90, -180], [90, 180]], t); - }, panTo: function panTo(t, e) { - return this.setView(t, this._zoom, { pan: e }); - }, panBy: function panBy(t) { - return this.fire("movestart"), this._rawPanBy(o.point(t)), this.fire("move"), this.fire("moveend"); - }, setMaxBounds: function setMaxBounds(t) { - return t = o.latLngBounds(t), this.options.maxBounds = t, t ? (this._loaded && this._panInsideMaxBounds(), this.on("moveend", this._panInsideMaxBounds, this)) : this.off("moveend", this._panInsideMaxBounds, this); - }, panInsideBounds: function panInsideBounds(t, e) { - var i = this.getCenter(), - n = this._limitCenter(i, this._zoom, t);return i.equals(n) ? this : this.panTo(n, e); - }, addLayer: function addLayer(t) { - var e = o.stamp(t);return this._layers[e] ? this : (this._layers[e] = t, !t.options || isNaN(t.options.maxZoom) && isNaN(t.options.minZoom) || (this._zoomBoundLayers[e] = t, this._updateZoomLevels()), this.options.zoomAnimation && o.TileLayer && t instanceof o.TileLayer && (this._tileLayersNum++, this._tileLayersToLoad++, t.on("load", this._onTileLayerLoad, this)), this._loaded && this._layerAdd(t), this); - }, removeLayer: function removeLayer(t) { - var e = o.stamp(t);return this._layers[e] ? (this._loaded && t.onRemove(this), delete this._layers[e], this._loaded && this.fire("layerremove", { layer: t }), this._zoomBoundLayers[e] && (delete this._zoomBoundLayers[e], this._updateZoomLevels()), this.options.zoomAnimation && o.TileLayer && t instanceof o.TileLayer && (this._tileLayersNum--, this._tileLayersToLoad--, t.off("load", this._onTileLayerLoad, this)), this) : this; - }, hasLayer: function hasLayer(t) { - return t ? o.stamp(t) in this._layers : !1; - }, eachLayer: function eachLayer(t, e) { - for (var i in this._layers) { - t.call(e, this._layers[i]); - }return this; - }, invalidateSize: function invalidateSize(t) { - if (!this._loaded) return this;t = o.extend({ animate: !1, pan: !0 }, t === !0 ? { animate: !0 } : t);var e = this.getSize();this._sizeChanged = !0, this._initialCenter = null;var i = this.getSize(), - n = e.divideBy(2).round(), - s = i.divideBy(2).round(), - a = n.subtract(s);return a.x || a.y ? (t.animate && t.pan ? this.panBy(a) : (t.pan && this._rawPanBy(a), this.fire("move"), t.debounceMoveend ? (clearTimeout(this._sizeTimer), this._sizeTimer = setTimeout(o.bind(this.fire, this, "moveend"), 200)) : this.fire("moveend")), this.fire("resize", { oldSize: e, newSize: i })) : this; - }, addHandler: function addHandler(t, e) { - if (!e) return this;var i = this[t] = new e(this);return this._handlers.push(i), this.options[t] && i.enable(), this; - }, remove: function remove() { - this._loaded && this.fire("unload"), this._initEvents("off");try { - delete this._container._leaflet; - } catch (t) { - this._container._leaflet = i; - }return this._clearPanes(), this._clearControlPos && this._clearControlPos(), this._clearHandlers(), this; - }, getCenter: function getCenter() { - return this._checkIfLoaded(), this._initialCenter && !this._moved() ? this._initialCenter : this.layerPointToLatLng(this._getCenterLayerPoint()); - }, getZoom: function getZoom() { - return this._zoom; - }, getBounds: function getBounds() { - var t = this.getPixelBounds(), - e = this.unproject(t.getBottomLeft()), - i = this.unproject(t.getTopRight());return new o.LatLngBounds(e, i); - }, getMinZoom: function getMinZoom() { - return this.options.minZoom === i ? this._layersMinZoom === i ? 0 : this._layersMinZoom : this.options.minZoom; - }, getMaxZoom: function getMaxZoom() { - return this.options.maxZoom === i ? this._layersMaxZoom === i ? 1 / 0 : this._layersMaxZoom : this.options.maxZoom; - }, getBoundsZoom: function getBoundsZoom(t, e, i) { - t = o.latLngBounds(t);var n, - s = this.getMinZoom() - (e ? 1 : 0), - a = this.getMaxZoom(), - r = this.getSize(), - h = t.getNorthWest(), - l = t.getSouthEast(), - u = !0;i = o.point(i || [0, 0]);do { - s++, n = this.project(l, s).subtract(this.project(h, s)).add(i), u = e ? n.x < r.x || n.y < r.y : r.contains(n); - } while (u && a >= s);return u && e ? null : e ? s : s - 1; - }, getSize: function getSize() { - return (!this._size || this._sizeChanged) && (this._size = new o.Point(this._container.clientWidth, this._container.clientHeight), this._sizeChanged = !1), this._size.clone(); - }, getPixelBounds: function getPixelBounds() { - var t = this._getTopLeftPoint();return new o.Bounds(t, t.add(this.getSize())); - }, getPixelOrigin: function getPixelOrigin() { - return this._checkIfLoaded(), this._initialTopLeftPoint; - }, getPanes: function getPanes() { - return this._panes; - }, getContainer: function getContainer() { - return this._container; - }, getZoomScale: function getZoomScale(t) { - var e = this.options.crs;return e.scale(t) / e.scale(this._zoom); - }, getScaleZoom: function getScaleZoom(t) { - return this._zoom + Math.log(t) / Math.LN2; - }, project: function project(t, e) { - return e = e === i ? this._zoom : e, this.options.crs.latLngToPoint(o.latLng(t), e); - }, unproject: function unproject(t, e) { - return e = e === i ? this._zoom : e, this.options.crs.pointToLatLng(o.point(t), e); - }, layerPointToLatLng: function layerPointToLatLng(t) { - var e = o.point(t).add(this.getPixelOrigin());return this.unproject(e); - }, latLngToLayerPoint: function latLngToLayerPoint(t) { - var e = this.project(o.latLng(t))._round();return e._subtract(this.getPixelOrigin()); - }, containerPointToLayerPoint: function containerPointToLayerPoint(t) { - return o.point(t).subtract(this._getMapPanePos()); - }, layerPointToContainerPoint: function layerPointToContainerPoint(t) { - return o.point(t).add(this._getMapPanePos()); - }, containerPointToLatLng: function containerPointToLatLng(t) { - var e = this.containerPointToLayerPoint(o.point(t));return this.layerPointToLatLng(e); - }, latLngToContainerPoint: function latLngToContainerPoint(t) { - return this.layerPointToContainerPoint(this.latLngToLayerPoint(o.latLng(t))); - }, mouseEventToContainerPoint: function mouseEventToContainerPoint(t) { - return o.DomEvent.getMousePosition(t, this._container); - }, mouseEventToLayerPoint: function mouseEventToLayerPoint(t) { - return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t)); - }, mouseEventToLatLng: function mouseEventToLatLng(t) { - return this.layerPointToLatLng(this.mouseEventToLayerPoint(t)); - }, _initContainer: function _initContainer(t) { - var e = this._container = o.DomUtil.get(t);if (!e) throw new Error("Map container not found.");if (e._leaflet) throw new Error("Map container is already initialized.");e._leaflet = !0; - }, _initLayout: function _initLayout() { - var t = this._container;o.DomUtil.addClass(t, "leaflet-container" + (o.Browser.touch ? " leaflet-touch" : "") + (o.Browser.retina ? " leaflet-retina" : "") + (o.Browser.ielt9 ? " leaflet-oldie" : "") + (this.options.fadeAnimation ? " leaflet-fade-anim" : ""));var e = o.DomUtil.getStyle(t, "position");"absolute" !== e && "relative" !== e && "fixed" !== e && (t.style.position = "relative"), this._initPanes(), this._initControlPos && this._initControlPos(); - }, _initPanes: function _initPanes() { - var t = this._panes = {};this._mapPane = t.mapPane = this._createPane("leaflet-map-pane", this._container), this._tilePane = t.tilePane = this._createPane("leaflet-tile-pane", this._mapPane), t.objectsPane = this._createPane("leaflet-objects-pane", this._mapPane), t.shadowPane = this._createPane("leaflet-shadow-pane"), t.overlayPane = this._createPane("leaflet-overlay-pane"), t.markerPane = this._createPane("leaflet-marker-pane"), t.popupPane = this._createPane("leaflet-popup-pane");var e = " leaflet-zoom-hide";this.options.markerZoomAnimation || (o.DomUtil.addClass(t.markerPane, e), o.DomUtil.addClass(t.shadowPane, e), o.DomUtil.addClass(t.popupPane, e)); - }, _createPane: function _createPane(t, e) { - return o.DomUtil.create("div", t, e || this._panes.objectsPane); - }, _clearPanes: function _clearPanes() { - this._container.removeChild(this._mapPane); - }, _addLayers: function _addLayers(t) { - t = t ? o.Util.isArray(t) ? t : [t] : [];for (var e = 0, i = t.length; i > e; e++) { - this.addLayer(t[e]); - } - }, _resetView: function _resetView(t, e, i, n) { - var s = this._zoom !== e;n || (this.fire("movestart"), s && this.fire("zoomstart")), this._zoom = e, this._initialCenter = t, this._initialTopLeftPoint = this._getNewTopLeftPoint(t), i ? this._initialTopLeftPoint._add(this._getMapPanePos()) : o.DomUtil.setPosition(this._mapPane, new o.Point(0, 0)), this._tileLayersToLoad = this._tileLayersNum;var a = !this._loaded;this._loaded = !0, this.fire("viewreset", { hard: !i }), a && (this.fire("load"), this.eachLayer(this._layerAdd, this)), this.fire("move"), (s || n) && this.fire("zoomend"), this.fire("moveend", { hard: !i }); - }, _rawPanBy: function _rawPanBy(t) { - o.DomUtil.setPosition(this._mapPane, this._getMapPanePos().subtract(t)); - }, _getZoomSpan: function _getZoomSpan() { - return this.getMaxZoom() - this.getMinZoom(); - }, _updateZoomLevels: function _updateZoomLevels() { - var t, - e = 1 / 0, - n = -(1 / 0), - o = this._getZoomSpan();for (t in this._zoomBoundLayers) { - var s = this._zoomBoundLayers[t];isNaN(s.options.minZoom) || (e = Math.min(e, s.options.minZoom)), isNaN(s.options.maxZoom) || (n = Math.max(n, s.options.maxZoom)); - }t === i ? this._layersMaxZoom = this._layersMinZoom = i : (this._layersMaxZoom = n, this._layersMinZoom = e), o !== this._getZoomSpan() && this.fire("zoomlevelschange"); - }, _panInsideMaxBounds: function _panInsideMaxBounds() { - this.panInsideBounds(this.options.maxBounds); - }, _checkIfLoaded: function _checkIfLoaded() { - if (!this._loaded) throw new Error("Set map center and zoom first."); - }, _initEvents: function _initEvents(e) { - if (o.DomEvent) { - e = e || "on", o.DomEvent[e](this._container, "click", this._onMouseClick, this);var i, - n, - s = ["dblclick", "mousedown", "mouseup", "mouseenter", "mouseleave", "mousemove", "contextmenu"];for (i = 0, n = s.length; n > i; i++) { - o.DomEvent[e](this._container, s[i], this._fireMouseEvent, this); - }this.options.trackResize && o.DomEvent[e](t, "resize", this._onResize, this); - } - }, _onResize: function _onResize() { - o.Util.cancelAnimFrame(this._resizeRequest), this._resizeRequest = o.Util.requestAnimFrame(function () { - this.invalidateSize({ debounceMoveend: !0 }); - }, this, !1, this._container); - }, _onMouseClick: function _onMouseClick(t) { - !this._loaded || !t._simulated && (this.dragging && this.dragging.moved() || this.boxZoom && this.boxZoom.moved()) || o.DomEvent._skipped(t) || (this.fire("preclick"), this._fireMouseEvent(t)); - }, _fireMouseEvent: function _fireMouseEvent(t) { - if (this._loaded && !o.DomEvent._skipped(t)) { - var e = t.type;if (e = "mouseenter" === e ? "mouseover" : "mouseleave" === e ? "mouseout" : e, this.hasEventListeners(e)) { - "contextmenu" === e && o.DomEvent.preventDefault(t);var i = this.mouseEventToContainerPoint(t), - n = this.containerPointToLayerPoint(i), - s = this.layerPointToLatLng(n);this.fire(e, { latlng: s, layerPoint: n, containerPoint: i, originalEvent: t }); - } - } - }, _onTileLayerLoad: function _onTileLayerLoad() { - this._tileLayersToLoad--, this._tileLayersNum && !this._tileLayersToLoad && this.fire("tilelayersload"); - }, _clearHandlers: function _clearHandlers() { - for (var t = 0, e = this._handlers.length; e > t; t++) { - this._handlers[t].disable(); - } - }, whenReady: function whenReady(t, e) { - return this._loaded ? t.call(e || this, this) : this.on("load", t, e), this; - }, _layerAdd: function _layerAdd(t) { - t.onAdd(this), this.fire("layeradd", { layer: t }); - }, _getMapPanePos: function _getMapPanePos() { - return o.DomUtil.getPosition(this._mapPane); - }, _moved: function _moved() { - var t = this._getMapPanePos();return t && !t.equals([0, 0]); - }, _getTopLeftPoint: function _getTopLeftPoint() { - return this.getPixelOrigin().subtract(this._getMapPanePos()); - }, _getNewTopLeftPoint: function _getNewTopLeftPoint(t, e) { - var i = this.getSize()._divideBy(2);return this.project(t, e)._subtract(i)._round(); - }, _latLngToNewLayerPoint: function _latLngToNewLayerPoint(t, e, i) { - var n = this._getNewTopLeftPoint(i, e).add(this._getMapPanePos());return this.project(t, e)._subtract(n); - }, _getCenterLayerPoint: function _getCenterLayerPoint() { - return this.containerPointToLayerPoint(this.getSize()._divideBy(2)); - }, _getCenterOffset: function _getCenterOffset(t) { - return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint()); - }, _limitCenter: function _limitCenter(t, e, i) { - if (!i) return t;var n = this.project(t, e), - s = this.getSize().divideBy(2), - a = new o.Bounds(n.subtract(s), n.add(s)), - r = this._getBoundsOffset(a, i, e);return this.unproject(n.add(r), e); - }, _limitOffset: function _limitOffset(t, e) { - if (!e) return t;var i = this.getPixelBounds(), - n = new o.Bounds(i.min.add(t), i.max.add(t));return t.add(this._getBoundsOffset(n, e)); - }, _getBoundsOffset: function _getBoundsOffset(t, e, i) { - var n = this.project(e.getNorthWest(), i).subtract(t.min), - s = this.project(e.getSouthEast(), i).subtract(t.max), - a = this._rebound(n.x, -s.x), - r = this._rebound(n.y, -s.y);return new o.Point(a, r); - }, _rebound: function _rebound(t, e) { - return t + e > 0 ? Math.round(t - e) / 2 : Math.max(0, Math.ceil(t)) - Math.max(0, Math.floor(e)); - }, _limitZoom: function _limitZoom(t) { - var e = this.getMinZoom(), - i = this.getMaxZoom();return Math.max(e, Math.min(i, t)); - } }), o.map = function (t, e) { - return new o.Map(t, e); - }, o.Projection.Mercator = { MAX_LATITUDE: 85.0840591556, R_MINOR: 6356752.314245179, R_MAJOR: 6378137, project: function project(t) { - var e = o.LatLng.DEG_TO_RAD, - i = this.MAX_LATITUDE, - n = Math.max(Math.min(i, t.lat), -i), - s = this.R_MAJOR, - a = this.R_MINOR, - r = t.lng * e * s, - h = n * e, - l = a / s, - u = Math.sqrt(1 - l * l), - c = u * Math.sin(h);c = Math.pow((1 - c) / (1 + c), .5 * u);var d = Math.tan(.5 * (.5 * Math.PI - h)) / c;return h = -s * Math.log(d), new o.Point(r, h); - }, unproject: function unproject(t) { - for (var e, i = o.LatLng.RAD_TO_DEG, n = this.R_MAJOR, s = this.R_MINOR, a = t.x * i / n, r = s / n, h = Math.sqrt(1 - r * r), l = Math.exp(-t.y / n), u = Math.PI / 2 - 2 * Math.atan(l), c = 15, d = 1e-7, p = c, _ = .1; Math.abs(_) > d && --p > 0;) { - e = h * Math.sin(u), _ = Math.PI / 2 - 2 * Math.atan(l * Math.pow((1 - e) / (1 + e), .5 * h)) - u, u += _; - }return new o.LatLng(u * i, a); - } }, o.CRS.EPSG3395 = o.extend({}, o.CRS, { code: "EPSG:3395", projection: o.Projection.Mercator, - transformation: function () { - var t = o.Projection.Mercator, - e = t.R_MAJOR, - i = .5 / (Math.PI * e);return new o.Transformation(i, .5, -i, .5); - }() }), o.TileLayer = o.Class.extend({ includes: o.Mixin.Events, options: { minZoom: 0, maxZoom: 18, tileSize: 256, subdomains: "abc", errorTileUrl: "", attribution: "", zoomOffset: 0, opacity: 1, unloadInvisibleTiles: o.Browser.mobile, updateWhenIdle: o.Browser.mobile }, initialize: function initialize(t, e) { - e = o.setOptions(this, e), e.detectRetina && o.Browser.retina && e.maxZoom > 0 && (e.tileSize = Math.floor(e.tileSize / 2), e.zoomOffset++, e.minZoom > 0 && e.minZoom--, this.options.maxZoom--), e.bounds && (e.bounds = o.latLngBounds(e.bounds)), this._url = t;var i = this.options.subdomains;"string" == typeof i && (this.options.subdomains = i.split("")); - }, onAdd: function onAdd(t) { - this._map = t, this._animated = t._zoomAnimated, this._initContainer(), t.on({ viewreset: this._reset, moveend: this._update }, this), this._animated && t.on({ zoomanim: this._animateZoom, zoomend: this._endZoomAnim }, this), this.options.updateWhenIdle || (this._limitedUpdate = o.Util.limitExecByInterval(this._update, 150, this), t.on("move", this._limitedUpdate, this)), this._reset(), this._update(); - }, addTo: function addTo(t) { - return t.addLayer(this), this; - }, onRemove: function onRemove(t) { - this._container.parentNode.removeChild(this._container), t.off({ viewreset: this._reset, moveend: this._update }, this), this._animated && t.off({ zoomanim: this._animateZoom, zoomend: this._endZoomAnim }, this), this.options.updateWhenIdle || t.off("move", this._limitedUpdate, this), this._container = null, this._map = null; - }, bringToFront: function bringToFront() { - var t = this._map._panes.tilePane;return this._container && (t.appendChild(this._container), this._setAutoZIndex(t, Math.max)), this; - }, bringToBack: function bringToBack() { - var t = this._map._panes.tilePane;return this._container && (t.insertBefore(this._container, t.firstChild), this._setAutoZIndex(t, Math.min)), this; - }, getAttribution: function getAttribution() { - return this.options.attribution; - }, getContainer: function getContainer() { - return this._container; - }, setOpacity: function setOpacity(t) { - return this.options.opacity = t, this._map && this._updateOpacity(), this; - }, setZIndex: function setZIndex(t) { - return this.options.zIndex = t, this._updateZIndex(), this; - }, setUrl: function setUrl(t, e) { - return this._url = t, e || this.redraw(), this; - }, redraw: function redraw() { - return this._map && (this._reset({ hard: !0 }), this._update()), this; - }, _updateZIndex: function _updateZIndex() { - this._container && this.options.zIndex !== i && (this._container.style.zIndex = this.options.zIndex); - }, _setAutoZIndex: function _setAutoZIndex(t, e) { - var i, - n, - o, - s = t.children, - a = -e(1 / 0, -(1 / 0));for (n = 0, o = s.length; o > n; n++) { - s[n] !== this._container && (i = parseInt(s[n].style.zIndex, 10), isNaN(i) || (a = e(a, i))); - }this.options.zIndex = this._container.style.zIndex = (isFinite(a) ? a : 0) + e(1, -1); - }, _updateOpacity: function _updateOpacity() { - var t, - e = this._tiles;if (o.Browser.ielt9) for (t in e) { - o.DomUtil.setOpacity(e[t], this.options.opacity); - } else o.DomUtil.setOpacity(this._container, this.options.opacity); - }, _initContainer: function _initContainer() { - var t = this._map._panes.tilePane;if (!this._container) { - if (this._container = o.DomUtil.create("div", "leaflet-layer"), this._updateZIndex(), this._animated) { - var e = "leaflet-tile-container";this._bgBuffer = o.DomUtil.create("div", e, this._container), this._tileContainer = o.DomUtil.create("div", e, this._container); - } else this._tileContainer = this._container;t.appendChild(this._container), this.options.opacity < 1 && this._updateOpacity(); - } - }, _reset: function _reset(t) { - for (var e in this._tiles) { - this.fire("tileunload", { tile: this._tiles[e] }); - }this._tiles = {}, this._tilesToLoad = 0, this.options.reuseTiles && (this._unusedTiles = []), this._tileContainer.innerHTML = "", this._animated && t && t.hard && this._clearBgBuffer(), this._initContainer(); - }, _getTileSize: function _getTileSize() { - var t = this._map, - e = t.getZoom() + this.options.zoomOffset, - i = this.options.maxNativeZoom, - n = this.options.tileSize;return i && e > i && (n = Math.round(t.getZoomScale(e) / t.getZoomScale(i) * n)), n; - }, _update: function _update() { - if (this._map) { - var t = this._map, - e = t.getPixelBounds(), - i = t.getZoom(), - n = this._getTileSize();if (!(i > this.options.maxZoom || i < this.options.minZoom)) { - var s = o.bounds(e.min.divideBy(n)._floor(), e.max.divideBy(n)._floor());this._addTilesFromCenterOut(s), (this.options.unloadInvisibleTiles || this.options.reuseTiles) && this._removeOtherTiles(s); - } - } - }, _addTilesFromCenterOut: function _addTilesFromCenterOut(t) { - var i, - n, - s, - a = [], - r = t.getCenter();for (i = t.min.y; i <= t.max.y; i++) { - for (n = t.min.x; n <= t.max.x; n++) { - s = new o.Point(n, i), this._tileShouldBeLoaded(s) && a.push(s); - } - }var h = a.length;if (0 !== h) { - a.sort(function (t, e) { - return t.distanceTo(r) - e.distanceTo(r); - });var l = e.createDocumentFragment();for (this._tilesToLoad || this.fire("loading"), this._tilesToLoad += h, n = 0; h > n; n++) { - this._addTile(a[n], l); - }this._tileContainer.appendChild(l); - } - }, _tileShouldBeLoaded: function _tileShouldBeLoaded(t) { - if (t.x + ":" + t.y in this._tiles) return !1;var e = this.options;if (!e.continuousWorld) { - var i = this._getWrapTileNum();if (e.noWrap && (t.x < 0 || t.x >= i.x) || t.y < 0 || t.y >= i.y) return !1; - }if (e.bounds) { - var n = this._getTileSize(), - o = t.multiplyBy(n), - s = o.add([n, n]), - a = this._map.unproject(o), - r = this._map.unproject(s);if (e.continuousWorld || e.noWrap || (a = a.wrap(), r = r.wrap()), !e.bounds.intersects([a, r])) return !1; - }return !0; - }, _removeOtherTiles: function _removeOtherTiles(t) { - var e, i, n, o;for (o in this._tiles) { - e = o.split(":"), i = parseInt(e[0], 10), n = parseInt(e[1], 10), (i < t.min.x || i > t.max.x || n < t.min.y || n > t.max.y) && this._removeTile(o); - } - }, _removeTile: function _removeTile(t) { - var e = this._tiles[t];this.fire("tileunload", { tile: e, url: e.src }), this.options.reuseTiles ? (o.DomUtil.removeClass(e, "leaflet-tile-loaded"), this._unusedTiles.push(e)) : e.parentNode === this._tileContainer && this._tileContainer.removeChild(e), o.Browser.android || (e.onload = null, e.src = o.Util.emptyImageUrl), delete this._tiles[t]; - }, _addTile: function _addTile(t, e) { - var i = this._getTilePos(t), - n = this._getTile();o.DomUtil.setPosition(n, i, o.Browser.chrome), this._tiles[t.x + ":" + t.y] = n, this._loadTile(n, t), n.parentNode !== this._tileContainer && e.appendChild(n); - }, _getZoomForUrl: function _getZoomForUrl() { - var t = this.options, - e = this._map.getZoom();return t.zoomReverse && (e = t.maxZoom - e), e += t.zoomOffset, t.maxNativeZoom ? Math.min(e, t.maxNativeZoom) : e; - }, _getTilePos: function _getTilePos(t) { - var e = this._map.getPixelOrigin(), - i = this._getTileSize();return t.multiplyBy(i).subtract(e); - }, getTileUrl: function getTileUrl(t) { - return o.Util.template(this._url, o.extend({ s: this._getSubdomain(t), z: t.z, x: t.x, y: t.y }, this.options)); - }, _getWrapTileNum: function _getWrapTileNum() { - var t = this._map.options.crs, - e = t.getSize(this._map.getZoom());return e.divideBy(this._getTileSize())._floor(); - }, _adjustTilePoint: function _adjustTilePoint(t) { - var e = this._getWrapTileNum();this.options.continuousWorld || this.options.noWrap || (t.x = (t.x % e.x + e.x) % e.x), this.options.tms && (t.y = e.y - t.y - 1), t.z = this._getZoomForUrl(); - }, _getSubdomain: function _getSubdomain(t) { - var e = Math.abs(t.x + t.y) % this.options.subdomains.length;return this.options.subdomains[e]; - }, _getTile: function _getTile() { - if (this.options.reuseTiles && this._unusedTiles.length > 0) { - var t = this._unusedTiles.pop();return this._resetTile(t), t; - }return this._createTile(); - }, _resetTile: function _resetTile() {}, _createTile: function _createTile() { - var t = o.DomUtil.create("img", "leaflet-tile");return t.style.width = t.style.height = this._getTileSize() + "px", t.galleryimg = "no", t.onselectstart = t.onmousemove = o.Util.falseFn, o.Browser.ielt9 && this.options.opacity !== i && o.DomUtil.setOpacity(t, this.options.opacity), o.Browser.mobileWebkit3d && (t.style.WebkitBackfaceVisibility = "hidden"), t; - }, _loadTile: function _loadTile(t, e) { - t._layer = this, t.onload = this._tileOnLoad, t.onerror = this._tileOnError, this._adjustTilePoint(e), t.src = this.getTileUrl(e), this.fire("tileloadstart", { tile: t, url: t.src }); - }, _tileLoaded: function _tileLoaded() { - this._tilesToLoad--, this._animated && o.DomUtil.addClass(this._tileContainer, "leaflet-zoom-animated"), this._tilesToLoad || (this.fire("load"), this._animated && (clearTimeout(this._clearBgBufferTimer), this._clearBgBufferTimer = setTimeout(o.bind(this._clearBgBuffer, this), 500))); - }, _tileOnLoad: function _tileOnLoad() { - var t = this._layer;this.src !== o.Util.emptyImageUrl && (o.DomUtil.addClass(this, "leaflet-tile-loaded"), t.fire("tileload", { tile: this, url: this.src })), t._tileLoaded(); - }, _tileOnError: function _tileOnError() { - var t = this._layer;t.fire("tileerror", { tile: this, url: this.src });var e = t.options.errorTileUrl;e && (this.src = e), t._tileLoaded(); - } }), o.tileLayer = function (t, e) { - return new o.TileLayer(t, e); - }, o.TileLayer.WMS = o.TileLayer.extend({ defaultWmsParams: { service: "WMS", request: "GetMap", version: "1.1.1", layers: "", styles: "", format: "image/jpeg", transparent: !1 }, initialize: function initialize(t, e) { - this._url = t;var i = o.extend({}, this.defaultWmsParams), - n = e.tileSize || this.options.tileSize;e.detectRetina && o.Browser.retina ? i.width = i.height = 2 * n : i.width = i.height = n;for (var s in e) { - this.options.hasOwnProperty(s) || "crs" === s || (i[s] = e[s]); - }this.wmsParams = i, o.setOptions(this, e); - }, onAdd: function onAdd(t) { - this._crs = this.options.crs || t.options.crs, this._wmsVersion = parseFloat(this.wmsParams.version);var e = this._wmsVersion >= 1.3 ? "crs" : "srs";this.wmsParams[e] = this._crs.code, o.TileLayer.prototype.onAdd.call(this, t); - }, getTileUrl: function getTileUrl(t) { - var e = this._map, - i = this.options.tileSize, - n = t.multiplyBy(i), - s = n.add([i, i]), - a = this._crs.project(e.unproject(n, t.z)), - r = this._crs.project(e.unproject(s, t.z)), - h = this._wmsVersion >= 1.3 && this._crs === o.CRS.EPSG4326 ? [r.y, a.x, a.y, r.x].join(",") : [a.x, r.y, r.x, a.y].join(","), - l = o.Util.template(this._url, { s: this._getSubdomain(t) });return l + o.Util.getParamString(this.wmsParams, l, !0) + "&BBOX=" + h; - }, setParams: function setParams(t, e) { - return o.extend(this.wmsParams, t), e || this.redraw(), this; - } }), o.tileLayer.wms = function (t, e) { - return new o.TileLayer.WMS(t, e); - }, o.TileLayer.Canvas = o.TileLayer.extend({ options: { async: !1 }, initialize: function initialize(t) { - o.setOptions(this, t); - }, redraw: function redraw() { - this._map && (this._reset({ hard: !0 }), this._update());for (var t in this._tiles) { - this._redrawTile(this._tiles[t]); - }return this; - }, _redrawTile: function _redrawTile(t) { - this.drawTile(t, t._tilePoint, this._map._zoom); - }, _createTile: function _createTile() { - var t = o.DomUtil.create("canvas", "leaflet-tile");return t.width = t.height = this.options.tileSize, t.onselectstart = t.onmousemove = o.Util.falseFn, t; - }, _loadTile: function _loadTile(t, e) { - t._layer = this, t._tilePoint = e, this._redrawTile(t), this.options.async || this.tileDrawn(t); - }, drawTile: function drawTile() {}, tileDrawn: function tileDrawn(t) { - this._tileOnLoad.call(t); - } }), o.tileLayer.canvas = function (t) { - return new o.TileLayer.Canvas(t); - }, o.ImageOverlay = o.Class.extend({ includes: o.Mixin.Events, options: { opacity: 1 }, initialize: function initialize(t, e, i) { - this._url = t, this._bounds = o.latLngBounds(e), o.setOptions(this, i); - }, onAdd: function onAdd(t) { - this._map = t, this._image || this._initImage(), t._panes.overlayPane.appendChild(this._image), t.on("viewreset", this._reset, this), t.options.zoomAnimation && o.Browser.any3d && t.on("zoomanim", this._animateZoom, this), this._reset(); - }, onRemove: function onRemove(t) { - t.getPanes().overlayPane.removeChild(this._image), t.off("viewreset", this._reset, this), t.options.zoomAnimation && t.off("zoomanim", this._animateZoom, this); - }, addTo: function addTo(t) { - return t.addLayer(this), this; - }, setOpacity: function setOpacity(t) { - return this.options.opacity = t, this._updateOpacity(), this; - }, bringToFront: function bringToFront() { - return this._image && this._map._panes.overlayPane.appendChild(this._image), this; - }, bringToBack: function bringToBack() { - var t = this._map._panes.overlayPane;return this._image && t.insertBefore(this._image, t.firstChild), this; - }, setUrl: function setUrl(t) { - this._url = t, this._image.src = this._url; - }, getAttribution: function getAttribution() { - return this.options.attribution; - }, _initImage: function _initImage() { - this._image = o.DomUtil.create("img", "leaflet-image-layer"), this._map.options.zoomAnimation && o.Browser.any3d ? o.DomUtil.addClass(this._image, "leaflet-zoom-animated") : o.DomUtil.addClass(this._image, "leaflet-zoom-hide"), this._updateOpacity(), o.extend(this._image, { galleryimg: "no", onselectstart: o.Util.falseFn, onmousemove: o.Util.falseFn, onload: o.bind(this._onImageLoad, this), src: this._url }); - }, _animateZoom: function _animateZoom(t) { - var e = this._map, - i = this._image, - n = e.getZoomScale(t.zoom), - s = this._bounds.getNorthWest(), - a = this._bounds.getSouthEast(), - r = e._latLngToNewLayerPoint(s, t.zoom, t.center), - h = e._latLngToNewLayerPoint(a, t.zoom, t.center)._subtract(r), - l = r._add(h._multiplyBy(.5 * (1 - 1 / n)));i.style[o.DomUtil.TRANSFORM] = o.DomUtil.getTranslateString(l) + " scale(" + n + ") "; - }, _reset: function _reset() { - var t = this._image, - e = this._map.latLngToLayerPoint(this._bounds.getNorthWest()), - i = this._map.latLngToLayerPoint(this._bounds.getSouthEast())._subtract(e);o.DomUtil.setPosition(t, e), t.style.width = i.x + "px", t.style.height = i.y + "px"; - }, _onImageLoad: function _onImageLoad() { - this.fire("load"); - }, _updateOpacity: function _updateOpacity() { - o.DomUtil.setOpacity(this._image, this.options.opacity); - } }), o.imageOverlay = function (t, e, i) { - return new o.ImageOverlay(t, e, i); - }, o.Icon = o.Class.extend({ options: { className: "" }, initialize: function initialize(t) { - o.setOptions(this, t); - }, createIcon: function createIcon(t) { - return this._createIcon("icon", t); - }, createShadow: function createShadow(t) { - return this._createIcon("shadow", t); - }, _createIcon: function _createIcon(t, e) { - var i = this._getIconUrl(t);if (!i) { - if ("icon" === t) throw new Error("iconUrl not set in Icon options (see the docs).");return null; - }var n;return n = e && "IMG" === e.tagName ? this._createImg(i, e) : this._createImg(i), this._setIconStyles(n, t), n; - }, _setIconStyles: function _setIconStyles(t, e) { - var i, - n = this.options, - s = o.point(n[e + "Size"]);i = "shadow" === e ? o.point(n.shadowAnchor || n.iconAnchor) : o.point(n.iconAnchor), !i && s && (i = s.divideBy(2, !0)), t.className = "leaflet-marker-" + e + " " + n.className, i && (t.style.marginLeft = -i.x + "px", t.style.marginTop = -i.y + "px"), s && (t.style.width = s.x + "px", t.style.height = s.y + "px"); - }, _createImg: function _createImg(t, i) { - return i = i || e.createElement("img"), i.src = t, i; - }, _getIconUrl: function _getIconUrl(t) { - return o.Browser.retina && this.options[t + "RetinaUrl"] ? this.options[t + "RetinaUrl"] : this.options[t + "Url"]; - } }), o.icon = function (t) { - return new o.Icon(t); - }, o.Icon.Default = o.Icon.extend({ options: { iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], shadowSize: [41, 41] }, _getIconUrl: function _getIconUrl(t) { - var e = t + "Url";if (this.options[e]) return this.options[e];o.Browser.retina && "icon" === t && (t += "-2x");var i = o.Icon.Default.imagePath;if (!i) throw new Error("Couldn't autodetect L.Icon.Default.imagePath, set it manually.");return i + "/marker-" + t + ".png"; - } }), o.Icon.Default.imagePath = function () { - var t, - i, - n, - o, - s, - a = e.getElementsByTagName("script"), - r = /[\/^]leaflet[\-\._]?([\w\-\._]*)\.js\??/;for (t = 0, i = a.length; i > t; t++) { - if (n = a[t].src, o = n.match(r)) return s = n.split(r)[0], (s ? s + "/" : "") + "images"; - } - }(), o.Marker = o.Class.extend({ includes: o.Mixin.Events, options: { icon: new o.Icon.Default(), title: "", alt: "", clickable: !0, draggable: !1, keyboard: !0, zIndexOffset: 0, opacity: 1, riseOnHover: !1, riseOffset: 250 }, initialize: function initialize(t, e) { - o.setOptions(this, e), this._latlng = o.latLng(t); - }, onAdd: function onAdd(t) { - this._map = t, t.on("viewreset", this.update, this), this._initIcon(), this.update(), this.fire("add"), t.options.zoomAnimation && t.options.markerZoomAnimation && t.on("zoomanim", this._animateZoom, this); - }, addTo: function addTo(t) { - return t.addLayer(this), this; - }, onRemove: function onRemove(t) { - this.dragging && this.dragging.disable(), this._removeIcon(), this._removeShadow(), this.fire("remove"), t.off({ viewreset: this.update, zoomanim: this._animateZoom }, this), this._map = null; - }, getLatLng: function getLatLng() { - return this._latlng; - }, setLatLng: function setLatLng(t) { - return this._latlng = o.latLng(t), this.update(), this.fire("move", { latlng: this._latlng }); - }, setZIndexOffset: function setZIndexOffset(t) { - return this.options.zIndexOffset = t, this.update(), this; - }, setIcon: function setIcon(t) { - return this.options.icon = t, this._map && (this._initIcon(), this.update()), this._popup && this.bindPopup(this._popup), this; - }, update: function update() { - return this._icon && this._setPos(this._map.latLngToLayerPoint(this._latlng).round()), this; - }, _initIcon: function _initIcon() { - var t = this.options, - e = this._map, - i = e.options.zoomAnimation && e.options.markerZoomAnimation, - n = i ? "leaflet-zoom-animated" : "leaflet-zoom-hide", - s = t.icon.createIcon(this._icon), - a = !1;s !== this._icon && (this._icon && this._removeIcon(), a = !0, t.title && (s.title = t.title), t.alt && (s.alt = t.alt)), o.DomUtil.addClass(s, n), t.keyboard && (s.tabIndex = "0"), this._icon = s, this._initInteraction(), t.riseOnHover && o.DomEvent.on(s, "mouseover", this._bringToFront, this).on(s, "mouseout", this._resetZIndex, this);var r = t.icon.createShadow(this._shadow), - h = !1;r !== this._shadow && (this._removeShadow(), h = !0), r && o.DomUtil.addClass(r, n), this._shadow = r, t.opacity < 1 && this._updateOpacity();var l = this._map._panes;a && l.markerPane.appendChild(this._icon), r && h && l.shadowPane.appendChild(this._shadow); - }, _removeIcon: function _removeIcon() { - this.options.riseOnHover && o.DomEvent.off(this._icon, "mouseover", this._bringToFront).off(this._icon, "mouseout", this._resetZIndex), this._map._panes.markerPane.removeChild(this._icon), this._icon = null; - }, _removeShadow: function _removeShadow() { - this._shadow && this._map._panes.shadowPane.removeChild(this._shadow), this._shadow = null; - }, _setPos: function _setPos(t) { - o.DomUtil.setPosition(this._icon, t), this._shadow && o.DomUtil.setPosition(this._shadow, t), this._zIndex = t.y + this.options.zIndexOffset, this._resetZIndex(); - }, _updateZIndex: function _updateZIndex(t) { - this._icon.style.zIndex = this._zIndex + t; - }, _animateZoom: function _animateZoom(t) { - var e = this._map._latLngToNewLayerPoint(this._latlng, t.zoom, t.center).round();this._setPos(e); - }, _initInteraction: function _initInteraction() { - if (this.options.clickable) { - var t = this._icon, - e = ["dblclick", "mousedown", "mouseover", "mouseout", "contextmenu"];o.DomUtil.addClass(t, "leaflet-clickable"), o.DomEvent.on(t, "click", this._onMouseClick, this), o.DomEvent.on(t, "keypress", this._onKeyPress, this);for (var i = 0; i < e.length; i++) { - o.DomEvent.on(t, e[i], this._fireMouseEvent, this); - }o.Handler.MarkerDrag && (this.dragging = new o.Handler.MarkerDrag(this), this.options.draggable && this.dragging.enable()); - } - }, _onMouseClick: function _onMouseClick(t) { - var e = this.dragging && this.dragging.moved();(this.hasEventListeners(t.type) || e) && o.DomEvent.stopPropagation(t), e || (this.dragging && this.dragging._enabled || !this._map.dragging || !this._map.dragging.moved()) && this.fire(t.type, { originalEvent: t, latlng: this._latlng }); - }, _onKeyPress: function _onKeyPress(t) { - 13 === t.keyCode && this.fire("click", { originalEvent: t, latlng: this._latlng }); - }, _fireMouseEvent: function _fireMouseEvent(t) { - this.fire(t.type, { originalEvent: t, latlng: this._latlng }), "contextmenu" === t.type && this.hasEventListeners(t.type) && o.DomEvent.preventDefault(t), "mousedown" !== t.type ? o.DomEvent.stopPropagation(t) : o.DomEvent.preventDefault(t); - }, setOpacity: function setOpacity(t) { - return this.options.opacity = t, this._map && this._updateOpacity(), this; - }, _updateOpacity: function _updateOpacity() { - o.DomUtil.setOpacity(this._icon, this.options.opacity), this._shadow && o.DomUtil.setOpacity(this._shadow, this.options.opacity); - }, _bringToFront: function _bringToFront() { - this._updateZIndex(this.options.riseOffset); - }, _resetZIndex: function _resetZIndex() { - this._updateZIndex(0); - } }), o.marker = function (t, e) { - return new o.Marker(t, e); - }, o.DivIcon = o.Icon.extend({ options: { iconSize: [12, 12], className: "leaflet-div-icon", html: !1 }, createIcon: function createIcon(t) { - var i = t && "DIV" === t.tagName ? t : e.createElement("div"), - n = this.options;return n.html !== !1 ? i.innerHTML = n.html : i.innerHTML = "", n.bgPos && (i.style.backgroundPosition = -n.bgPos.x + "px " + -n.bgPos.y + "px"), this._setIconStyles(i, "icon"), i; - }, createShadow: function createShadow() { - return null; - } }), o.divIcon = function (t) { - return new o.DivIcon(t); - }, o.Map.mergeOptions({ closePopupOnClick: !0 }), o.Popup = o.Class.extend({ includes: o.Mixin.Events, options: { minWidth: 50, maxWidth: 300, autoPan: !0, closeButton: !0, offset: [0, 7], autoPanPadding: [5, 5], keepInView: !1, className: "", zoomAnimation: !0 }, initialize: function initialize(t, e) { - o.setOptions(this, t), this._source = e, this._animated = o.Browser.any3d && this.options.zoomAnimation, this._isOpen = !1; - }, onAdd: function onAdd(t) { - this._map = t, this._container || this._initLayout();var e = t.options.fadeAnimation;e && o.DomUtil.setOpacity(this._container, 0), t._panes.popupPane.appendChild(this._container), t.on(this._getEvents(), this), this.update(), e && o.DomUtil.setOpacity(this._container, 1), this.fire("open"), t.fire("popupopen", { popup: this }), this._source && this._source.fire("popupopen", { popup: this }); - }, addTo: function addTo(t) { - return t.addLayer(this), this; - }, openOn: function openOn(t) { - return t.openPopup(this), this; - }, onRemove: function onRemove(t) { - t._panes.popupPane.removeChild(this._container), o.Util.falseFn(this._container.offsetWidth), t.off(this._getEvents(), this), t.options.fadeAnimation && o.DomUtil.setOpacity(this._container, 0), this._map = null, this.fire("close"), t.fire("popupclose", { popup: this }), this._source && this._source.fire("popupclose", { popup: this }); - }, getLatLng: function getLatLng() { - return this._latlng; - }, setLatLng: function setLatLng(t) { - return this._latlng = o.latLng(t), this._map && (this._updatePosition(), this._adjustPan()), this; - }, getContent: function getContent() { - return this._content; - }, setContent: function setContent(t) { - return this._content = t, this.update(), this; - }, update: function update() { - this._map && (this._container.style.visibility = "hidden", this._updateContent(), this._updateLayout(), this._updatePosition(), this._container.style.visibility = "", this._adjustPan()); - }, _getEvents: function _getEvents() { - var t = { viewreset: this._updatePosition };return this._animated && (t.zoomanim = this._zoomAnimation), ("closeOnClick" in this.options ? this.options.closeOnClick : this._map.options.closePopupOnClick) && (t.preclick = this._close), this.options.keepInView && (t.moveend = this._adjustPan), t; - }, _close: function _close() { - this._map && this._map.closePopup(this); - }, _initLayout: function _initLayout() { - var t, - e = "leaflet-popup", - i = e + " " + this.options.className + " leaflet-zoom-" + (this._animated ? "animated" : "hide"), - n = this._container = o.DomUtil.create("div", i);this.options.closeButton && (t = this._closeButton = o.DomUtil.create("a", e + "-close-button", n), t.href = "#close", t.innerHTML = "×", o.DomEvent.disableClickPropagation(t), o.DomEvent.on(t, "click", this._onCloseButtonClick, this));var s = this._wrapper = o.DomUtil.create("div", e + "-content-wrapper", n);o.DomEvent.disableClickPropagation(s), this._contentNode = o.DomUtil.create("div", e + "-content", s), o.DomEvent.disableScrollPropagation(this._contentNode), o.DomEvent.on(s, "contextmenu", o.DomEvent.stopPropagation), this._tipContainer = o.DomUtil.create("div", e + "-tip-container", n), this._tip = o.DomUtil.create("div", e + "-tip", this._tipContainer); - }, _updateContent: function _updateContent() { - if (this._content) { - if ("string" == typeof this._content) this._contentNode.innerHTML = this._content;else { - for (; this._contentNode.hasChildNodes();) { - this._contentNode.removeChild(this._contentNode.firstChild); - }this._contentNode.appendChild(this._content); - }this.fire("contentupdate"); - } - }, _updateLayout: function _updateLayout() { - var t = this._contentNode, - e = t.style;e.width = "", e.whiteSpace = "nowrap";var i = t.offsetWidth;i = Math.min(i, this.options.maxWidth), i = Math.max(i, this.options.minWidth), e.width = i + 1 + "px", e.whiteSpace = "", e.height = "";var n = t.offsetHeight, - s = this.options.maxHeight, - a = "leaflet-popup-scrolled";s && n > s ? (e.height = s + "px", o.DomUtil.addClass(t, a)) : o.DomUtil.removeClass(t, a), this._containerWidth = this._container.offsetWidth; - }, _updatePosition: function _updatePosition() { - if (this._map) { - var t = this._map.latLngToLayerPoint(this._latlng), - e = this._animated, - i = o.point(this.options.offset);e && o.DomUtil.setPosition(this._container, t), this._containerBottom = -i.y - (e ? 0 : t.y), this._containerLeft = -Math.round(this._containerWidth / 2) + i.x + (e ? 0 : t.x), this._container.style.bottom = this._containerBottom + "px", this._container.style.left = this._containerLeft + "px"; - } - }, _zoomAnimation: function _zoomAnimation(t) { - var e = this._map._latLngToNewLayerPoint(this._latlng, t.zoom, t.center);o.DomUtil.setPosition(this._container, e); - }, _adjustPan: function _adjustPan() { - if (this.options.autoPan) { - var t = this._map, - e = this._container.offsetHeight, - i = this._containerWidth, - n = new o.Point(this._containerLeft, -e - this._containerBottom);this._animated && n._add(o.DomUtil.getPosition(this._container));var s = t.layerPointToContainerPoint(n), - a = o.point(this.options.autoPanPadding), - r = o.point(this.options.autoPanPaddingTopLeft || a), - h = o.point(this.options.autoPanPaddingBottomRight || a), - l = t.getSize(), - u = 0, - c = 0;s.x + i + h.x > l.x && (u = s.x + i - l.x + h.x), s.x - u - r.x < 0 && (u = s.x - r.x), s.y + e + h.y > l.y && (c = s.y + e - l.y + h.y), s.y - c - r.y < 0 && (c = s.y - r.y), (u || c) && t.fire("autopanstart").panBy([u, c]); - } - }, _onCloseButtonClick: function _onCloseButtonClick(t) { - this._close(), o.DomEvent.stop(t); - } }), o.popup = function (t, e) { - return new o.Popup(t, e); - }, o.Map.include({ openPopup: function openPopup(t, e, i) { - if (this.closePopup(), !(t instanceof o.Popup)) { - var n = t;t = new o.Popup(i).setLatLng(e).setContent(n); - }return t._isOpen = !0, this._popup = t, this.addLayer(t); - }, closePopup: function closePopup(t) { - return t && t !== this._popup || (t = this._popup, this._popup = null), t && (this.removeLayer(t), t._isOpen = !1), this; - } }), o.Marker.include({ openPopup: function openPopup() { - return this._popup && this._map && !this._map.hasLayer(this._popup) && (this._popup.setLatLng(this._latlng), this._map.openPopup(this._popup)), this; - }, closePopup: function closePopup() { - return this._popup && this._popup._close(), this; - }, togglePopup: function togglePopup() { - return this._popup && (this._popup._isOpen ? this.closePopup() : this.openPopup()), this; - }, bindPopup: function bindPopup(t, e) { - var i = o.point(this.options.icon.options.popupAnchor || [0, 0]);return i = i.add(o.Popup.prototype.options.offset), e && e.offset && (i = i.add(e.offset)), e = o.extend({ offset: i }, e), this._popupHandlersAdded || (this.on("click", this.togglePopup, this).on("remove", this.closePopup, this).on("move", this._movePopup, this), this._popupHandlersAdded = !0), t instanceof o.Popup ? (o.setOptions(t, e), this._popup = t, t._source = this) : this._popup = new o.Popup(e, this).setContent(t), this; - }, setPopupContent: function setPopupContent(t) { - return this._popup && this._popup.setContent(t), this; - }, unbindPopup: function unbindPopup() { - return this._popup && (this._popup = null, this.off("click", this.togglePopup, this).off("remove", this.closePopup, this).off("move", this._movePopup, this), this._popupHandlersAdded = !1), this; - }, getPopup: function getPopup() { - return this._popup; - }, _movePopup: function _movePopup(t) { - this._popup.setLatLng(t.latlng); - } }), o.LayerGroup = o.Class.extend({ initialize: function initialize(t) { - this._layers = {};var e, i;if (t) for (e = 0, i = t.length; i > e; e++) { - this.addLayer(t[e]); - } - }, addLayer: function addLayer(t) { - var e = this.getLayerId(t);return this._layers[e] = t, this._map && this._map.addLayer(t), this; - }, removeLayer: function removeLayer(t) { - var e = t in this._layers ? t : this.getLayerId(t);return this._map && this._layers[e] && this._map.removeLayer(this._layers[e]), delete this._layers[e], this; - }, hasLayer: function hasLayer(t) { - return t ? t in this._layers || this.getLayerId(t) in this._layers : !1; - }, clearLayers: function clearLayers() { - return this.eachLayer(this.removeLayer, this), this; - }, invoke: function invoke(t) { - var e, - i, - n = Array.prototype.slice.call(arguments, 1);for (e in this._layers) { - i = this._layers[e], i[t] && i[t].apply(i, n); - }return this; - }, onAdd: function onAdd(t) { - this._map = t, this.eachLayer(t.addLayer, t); - }, onRemove: function onRemove(t) { - this.eachLayer(t.removeLayer, t), this._map = null; - }, addTo: function addTo(t) { - return t.addLayer(this), this; - }, eachLayer: function eachLayer(t, e) { - for (var i in this._layers) { - t.call(e, this._layers[i]); - }return this; - }, getLayer: function getLayer(t) { - return this._layers[t]; - }, getLayers: function getLayers() { - var t = [];for (var e in this._layers) { - t.push(this._layers[e]); - }return t; - }, setZIndex: function setZIndex(t) { - return this.invoke("setZIndex", t); - }, getLayerId: function getLayerId(t) { - return o.stamp(t); - } }), o.layerGroup = function (t) { - return new o.LayerGroup(t); - }, o.FeatureGroup = o.LayerGroup.extend({ includes: o.Mixin.Events, statics: { EVENTS: "click dblclick mouseover mouseout mousemove contextmenu popupopen popupclose" }, addLayer: function addLayer(t) { - return this.hasLayer(t) ? this : ("on" in t && t.on(o.FeatureGroup.EVENTS, this._propagateEvent, this), o.LayerGroup.prototype.addLayer.call(this, t), this._popupContent && t.bindPopup && t.bindPopup(this._popupContent, this._popupOptions), this.fire("layeradd", { layer: t })); - }, removeLayer: function removeLayer(t) { - return this.hasLayer(t) ? (t in this._layers && (t = this._layers[t]), "off" in t && t.off(o.FeatureGroup.EVENTS, this._propagateEvent, this), o.LayerGroup.prototype.removeLayer.call(this, t), this._popupContent && this.invoke("unbindPopup"), this.fire("layerremove", { layer: t })) : this; - }, bindPopup: function bindPopup(t, e) { - return this._popupContent = t, this._popupOptions = e, this.invoke("bindPopup", t, e); - }, openPopup: function openPopup(t) { - for (var e in this._layers) { - this._layers[e].openPopup(t);break; - }return this; - }, setStyle: function setStyle(t) { - return this.invoke("setStyle", t); - }, bringToFront: function bringToFront() { - return this.invoke("bringToFront"); - }, bringToBack: function bringToBack() { - return this.invoke("bringToBack"); - }, getBounds: function getBounds() { - var t = new o.LatLngBounds();return this.eachLayer(function (e) { - t.extend(e instanceof o.Marker ? e.getLatLng() : e.getBounds()); - }), t; - }, _propagateEvent: function _propagateEvent(t) { - t = o.extend({ layer: t.target, target: this }, t), this.fire(t.type, t); - } }), o.featureGroup = function (t) { - return new o.FeatureGroup(t); - }, o.Path = o.Class.extend({ includes: [o.Mixin.Events], statics: { CLIP_PADDING: function () { - var e = o.Browser.mobile ? 1280 : 2e3, - i = (e / Math.max(t.outerWidth, t.outerHeight) - 1) / 2;return Math.max(0, Math.min(.5, i)); - }() }, options: { stroke: !0, color: "#0033ff", dashArray: null, lineCap: null, lineJoin: null, weight: 5, opacity: .5, fill: !1, fillColor: null, fillOpacity: .2, clickable: !0 }, initialize: function initialize(t) { - o.setOptions(this, t); - }, onAdd: function onAdd(t) { - this._map = t, this._container || (this._initElements(), this._initEvents()), this.projectLatlngs(), this._updatePath(), this._container && this._map._pathRoot.appendChild(this._container), this.fire("add"), t.on({ viewreset: this.projectLatlngs, moveend: this._updatePath }, this); - }, addTo: function addTo(t) { - return t.addLayer(this), this; - }, onRemove: function onRemove(t) { - t._pathRoot.removeChild(this._container), this.fire("remove"), this._map = null, o.Browser.vml && (this._container = null, this._stroke = null, this._fill = null), t.off({ viewreset: this.projectLatlngs, moveend: this._updatePath }, this); - }, projectLatlngs: function projectLatlngs() {}, setStyle: function setStyle(t) { - return o.setOptions(this, t), this._container && this._updateStyle(), this; - }, redraw: function redraw() { - return this._map && (this.projectLatlngs(), this._updatePath()), this; - } }), o.Map.include({ _updatePathViewport: function _updatePathViewport() { - var t = o.Path.CLIP_PADDING, - e = this.getSize(), - i = o.DomUtil.getPosition(this._mapPane), - n = i.multiplyBy(-1)._subtract(e.multiplyBy(t)._round()), - s = n.add(e.multiplyBy(1 + 2 * t)._round());this._pathViewport = new o.Bounds(n, s); - } }), o.Path.SVG_NS = "http://www.w3.org/2000/svg", o.Browser.svg = !(!e.createElementNS || !e.createElementNS(o.Path.SVG_NS, "svg").createSVGRect), o.Path = o.Path.extend({ statics: { SVG: o.Browser.svg }, bringToFront: function bringToFront() { - var t = this._map._pathRoot, - e = this._container;return e && t.lastChild !== e && t.appendChild(e), this; - }, bringToBack: function bringToBack() { - var t = this._map._pathRoot, - e = this._container, - i = t.firstChild;return e && i !== e && t.insertBefore(e, i), this; - }, getPathString: function getPathString() {}, _createElement: function _createElement(t) { - return e.createElementNS(o.Path.SVG_NS, t); - }, _initElements: function _initElements() { - this._map._initPathRoot(), this._initPath(), this._initStyle(); - }, _initPath: function _initPath() { - this._container = this._createElement("g"), this._path = this._createElement("path"), this.options.className && o.DomUtil.addClass(this._path, this.options.className), this._container.appendChild(this._path); - }, _initStyle: function _initStyle() { - this.options.stroke && (this._path.setAttribute("stroke-linejoin", "round"), this._path.setAttribute("stroke-linecap", "round")), this.options.fill && this._path.setAttribute("fill-rule", "evenodd"), this.options.pointerEvents && this._path.setAttribute("pointer-events", this.options.pointerEvents), this.options.clickable || this.options.pointerEvents || this._path.setAttribute("pointer-events", "none"), this._updateStyle(); - }, _updateStyle: function _updateStyle() { - this.options.stroke ? (this._path.setAttribute("stroke", this.options.color), this._path.setAttribute("stroke-opacity", this.options.opacity), this._path.setAttribute("stroke-width", this.options.weight), this.options.dashArray ? this._path.setAttribute("stroke-dasharray", this.options.dashArray) : this._path.removeAttribute("stroke-dasharray"), this.options.lineCap && this._path.setAttribute("stroke-linecap", this.options.lineCap), this.options.lineJoin && this._path.setAttribute("stroke-linejoin", this.options.lineJoin)) : this._path.setAttribute("stroke", "none"), this.options.fill ? (this._path.setAttribute("fill", this.options.fillColor || this.options.color), this._path.setAttribute("fill-opacity", this.options.fillOpacity)) : this._path.setAttribute("fill", "none"); - }, _updatePath: function _updatePath() { - var t = this.getPathString();t || (t = "M0 0"), this._path.setAttribute("d", t); - }, _initEvents: function _initEvents() { - if (this.options.clickable) { - (o.Browser.svg || !o.Browser.vml) && o.DomUtil.addClass(this._path, "leaflet-clickable"), o.DomEvent.on(this._container, "click", this._onMouseClick, this);for (var t = ["dblclick", "mousedown", "mouseover", "mouseout", "mousemove", "contextmenu"], e = 0; e < t.length; e++) { - o.DomEvent.on(this._container, t[e], this._fireMouseEvent, this); - } - } - }, _onMouseClick: function _onMouseClick(t) { - this._map.dragging && this._map.dragging.moved() || this._fireMouseEvent(t); - }, _fireMouseEvent: function _fireMouseEvent(t) { - if (this._map && this.hasEventListeners(t.type)) { - var e = this._map, - i = e.mouseEventToContainerPoint(t), - n = e.containerPointToLayerPoint(i), - s = e.layerPointToLatLng(n);this.fire(t.type, { latlng: s, layerPoint: n, containerPoint: i, originalEvent: t }), "contextmenu" === t.type && o.DomEvent.preventDefault(t), "mousemove" !== t.type && o.DomEvent.stopPropagation(t); - } - } }), o.Map.include({ _initPathRoot: function _initPathRoot() { - this._pathRoot || (this._pathRoot = o.Path.prototype._createElement("svg"), this._panes.overlayPane.appendChild(this._pathRoot), this.options.zoomAnimation && o.Browser.any3d ? (o.DomUtil.addClass(this._pathRoot, "leaflet-zoom-animated"), this.on({ zoomanim: this._animatePathZoom, zoomend: this._endPathZoom })) : o.DomUtil.addClass(this._pathRoot, "leaflet-zoom-hide"), this.on("moveend", this._updateSvgViewport), this._updateSvgViewport()); - }, _animatePathZoom: function _animatePathZoom(t) { - var e = this.getZoomScale(t.zoom), - i = this._getCenterOffset(t.center)._multiplyBy(-e)._add(this._pathViewport.min);this._pathRoot.style[o.DomUtil.TRANSFORM] = o.DomUtil.getTranslateString(i) + " scale(" + e + ") ", this._pathZooming = !0; - }, _endPathZoom: function _endPathZoom() { - this._pathZooming = !1; - }, _updateSvgViewport: function _updateSvgViewport() { - if (!this._pathZooming) { - this._updatePathViewport();var t = this._pathViewport, - e = t.min, - i = t.max, - n = i.x - e.x, - s = i.y - e.y, - a = this._pathRoot, - r = this._panes.overlayPane;o.Browser.mobileWebkit && r.removeChild(a), o.DomUtil.setPosition(a, e), a.setAttribute("width", n), a.setAttribute("height", s), a.setAttribute("viewBox", [e.x, e.y, n, s].join(" ")), o.Browser.mobileWebkit && r.appendChild(a); - } - } }), o.Path.include({ bindPopup: function bindPopup(t, e) { - return t instanceof o.Popup ? this._popup = t : ((!this._popup || e) && (this._popup = new o.Popup(e, this)), this._popup.setContent(t)), this._popupHandlersAdded || (this.on("click", this._openPopup, this).on("remove", this.closePopup, this), this._popupHandlersAdded = !0), this; - }, unbindPopup: function unbindPopup() { - return this._popup && (this._popup = null, this.off("click", this._openPopup).off("remove", this.closePopup), this._popupHandlersAdded = !1), this; - }, openPopup: function openPopup(t) { - return this._popup && (t = t || this._latlng || this._latlngs[Math.floor(this._latlngs.length / 2)], this._openPopup({ latlng: t })), this; - }, closePopup: function closePopup() { - return this._popup && this._popup._close(), this; - }, _openPopup: function _openPopup(t) { - this._popup.setLatLng(t.latlng), this._map.openPopup(this._popup); - } }), o.Browser.vml = !o.Browser.svg && function () { - try { - var t = e.createElement("div");t.innerHTML = '';var i = t.firstChild;return i.style.behavior = "url(#default#VML)", i && "object" == _typeof(i.adj); - } catch (n) { - return !1; - } - }(), o.Path = o.Browser.svg || !o.Browser.vml ? o.Path : o.Path.extend({ statics: { VML: !0, CLIP_PADDING: .02 }, _createElement: function () { - try { - return e.namespaces.add("lvml", "urn:schemas-microsoft-com:vml"), function (t) { - return e.createElement("'); - }; - } catch (t) { - return function (t) { - return e.createElement("<" + t + ' xmlns="urn:schemas-microsoft.com:vml" class="lvml">'); - }; - } - }(), _initPath: function _initPath() { - var t = this._container = this._createElement("shape");o.DomUtil.addClass(t, "leaflet-vml-shape" + (this.options.className ? " " + this.options.className : "")), this.options.clickable && o.DomUtil.addClass(t, "leaflet-clickable"), t.coordsize = "1 1", this._path = this._createElement("path"), t.appendChild(this._path), this._map._pathRoot.appendChild(t); - }, _initStyle: function _initStyle() { - this._updateStyle(); - }, _updateStyle: function _updateStyle() { - var t = this._stroke, - e = this._fill, - i = this.options, - n = this._container;n.stroked = i.stroke, n.filled = i.fill, i.stroke ? (t || (t = this._stroke = this._createElement("stroke"), t.endcap = "round", n.appendChild(t)), t.weight = i.weight + "px", t.color = i.color, t.opacity = i.opacity, i.dashArray ? t.dashStyle = o.Util.isArray(i.dashArray) ? i.dashArray.join(" ") : i.dashArray.replace(/( *, *)/g, " ") : t.dashStyle = "", i.lineCap && (t.endcap = i.lineCap.replace("butt", "flat")), i.lineJoin && (t.joinstyle = i.lineJoin)) : t && (n.removeChild(t), this._stroke = null), i.fill ? (e || (e = this._fill = this._createElement("fill"), n.appendChild(e)), e.color = i.fillColor || i.color, e.opacity = i.fillOpacity) : e && (n.removeChild(e), this._fill = null); - }, _updatePath: function _updatePath() { - var t = this._container.style;t.display = "none", this._path.v = this.getPathString() + " ", t.display = ""; - } }), o.Map.include(o.Browser.svg || !o.Browser.vml ? {} : { _initPathRoot: function _initPathRoot() { - if (!this._pathRoot) { - var t = this._pathRoot = e.createElement("div");t.className = "leaflet-vml-container", this._panes.overlayPane.appendChild(t), this.on("moveend", this._updatePathViewport), this._updatePathViewport(); - } - } }), o.Browser.canvas = function () { - return !!e.createElement("canvas").getContext; - }(), o.Path = o.Path.SVG && !t.L_PREFER_CANVAS || !o.Browser.canvas ? o.Path : o.Path.extend({ statics: { CANVAS: !0, SVG: !1 }, redraw: function redraw() { - return this._map && (this.projectLatlngs(), this._requestUpdate()), this; - }, setStyle: function setStyle(t) { - return o.setOptions(this, t), this._map && (this._updateStyle(), this._requestUpdate()), this; - }, onRemove: function onRemove(t) { - t.off("viewreset", this.projectLatlngs, this).off("moveend", this._updatePath, this), this.options.clickable && (this._map.off("click", this._onClick, this), this._map.off("mousemove", this._onMouseMove, this)), this._requestUpdate(), this.fire("remove"), this._map = null; - }, _requestUpdate: function _requestUpdate() { - this._map && !o.Path._updateRequest && (o.Path._updateRequest = o.Util.requestAnimFrame(this._fireMapMoveEnd, this._map)); - }, _fireMapMoveEnd: function _fireMapMoveEnd() { - o.Path._updateRequest = null, this.fire("moveend"); - }, _initElements: function _initElements() { - this._map._initPathRoot(), this._ctx = this._map._canvasCtx; - }, _updateStyle: function _updateStyle() { - var t = this.options;t.stroke && (this._ctx.lineWidth = t.weight, this._ctx.strokeStyle = t.color), t.fill && (this._ctx.fillStyle = t.fillColor || t.color), t.lineCap && (this._ctx.lineCap = t.lineCap), t.lineJoin && (this._ctx.lineJoin = t.lineJoin); - }, _drawPath: function _drawPath() { - var t, e, i, n, s, a;for (this._ctx.beginPath(), t = 0, i = this._parts.length; i > t; t++) { - for (e = 0, n = this._parts[t].length; n > e; e++) { - s = this._parts[t][e], a = (0 === e ? "move" : "line") + "To", this._ctx[a](s.x, s.y); - }this instanceof o.Polygon && this._ctx.closePath(); - } - }, _checkIfEmpty: function _checkIfEmpty() { - return !this._parts.length; - }, _updatePath: function _updatePath() { - if (!this._checkIfEmpty()) { - var t = this._ctx, - e = this.options;this._drawPath(), t.save(), this._updateStyle(), e.fill && (t.globalAlpha = e.fillOpacity, t.fill(e.fillRule || "evenodd")), e.stroke && (t.globalAlpha = e.opacity, t.stroke()), t.restore(); - } - }, _initEvents: function _initEvents() { - this.options.clickable && (this._map.on("mousemove", this._onMouseMove, this), this._map.on("click dblclick contextmenu", this._fireMouseEvent, this)); - }, _fireMouseEvent: function _fireMouseEvent(t) { - this._containsPoint(t.layerPoint) && this.fire(t.type, t); - }, _onMouseMove: function _onMouseMove(t) { - this._map && !this._map._animatingZoom && (this._containsPoint(t.layerPoint) ? (this._ctx.canvas.style.cursor = "pointer", this._mouseInside = !0, this.fire("mouseover", t)) : this._mouseInside && (this._ctx.canvas.style.cursor = "", this._mouseInside = !1, this.fire("mouseout", t))); - } }), o.Map.include(o.Path.SVG && !t.L_PREFER_CANVAS || !o.Browser.canvas ? {} : { _initPathRoot: function _initPathRoot() { - var t, - i = this._pathRoot;i || (i = this._pathRoot = e.createElement("canvas"), i.style.position = "absolute", t = this._canvasCtx = i.getContext("2d"), t.lineCap = "round", t.lineJoin = "round", this._panes.overlayPane.appendChild(i), this.options.zoomAnimation && (this._pathRoot.className = "leaflet-zoom-animated", this.on("zoomanim", this._animatePathZoom), this.on("zoomend", this._endPathZoom)), this.on("moveend", this._updateCanvasViewport), this._updateCanvasViewport()); - }, _updateCanvasViewport: function _updateCanvasViewport() { - if (!this._pathZooming) { - this._updatePathViewport();var t = this._pathViewport, - e = t.min, - i = t.max.subtract(e), - n = this._pathRoot;o.DomUtil.setPosition(n, e), n.width = i.x, n.height = i.y, n.getContext("2d").translate(-e.x, -e.y); - } - } }), o.LineUtil = { simplify: function simplify(t, e) { - if (!e || !t.length) return t.slice();var i = e * e;return t = this._reducePoints(t, i), t = this._simplifyDP(t, i); - }, pointToSegmentDistance: function pointToSegmentDistance(t, e, i) { - return Math.sqrt(this._sqClosestPointOnSegment(t, e, i, !0)); - }, closestPointOnSegment: function closestPointOnSegment(t, e, i) { - return this._sqClosestPointOnSegment(t, e, i); - }, _simplifyDP: function _simplifyDP(t, e) { - var n = t.length, - o = (typeof Uint8Array === "undefined" ? "undefined" : _typeof(Uint8Array)) != i + "" ? Uint8Array : Array, - s = new o(n);s[0] = s[n - 1] = 1, this._simplifyDPStep(t, s, e, 0, n - 1);var a, - r = [];for (a = 0; n > a; a++) { - s[a] && r.push(t[a]); - }return r; - }, _simplifyDPStep: function _simplifyDPStep(t, e, i, n, o) { - var s, - a, - r, - h = 0;for (a = n + 1; o - 1 >= a; a++) { - r = this._sqClosestPointOnSegment(t[a], t[n], t[o], !0), r > h && (s = a, h = r); - }h > i && (e[s] = 1, this._simplifyDPStep(t, e, i, n, s), this._simplifyDPStep(t, e, i, s, o)); - }, _reducePoints: function _reducePoints(t, e) { - for (var i = [t[0]], n = 1, o = 0, s = t.length; s > n; n++) { - this._sqDist(t[n], t[o]) > e && (i.push(t[n]), o = n); - }return s - 1 > o && i.push(t[s - 1]), i; - }, clipSegment: function clipSegment(t, e, i, n) { - var o, - s, - a, - r = n ? this._lastCode : this._getBitCode(t, i), - h = this._getBitCode(e, i);for (this._lastCode = h;;) { - if (!(r | h)) return [t, e];if (r & h) return !1;o = r || h, s = this._getEdgeIntersection(t, e, o, i), a = this._getBitCode(s, i), o === r ? (t = s, r = a) : (e = s, h = a); - } - }, _getEdgeIntersection: function _getEdgeIntersection(t, e, i, n) { - var s = e.x - t.x, - a = e.y - t.y, - r = n.min, - h = n.max;return 8 & i ? new o.Point(t.x + s * (h.y - t.y) / a, h.y) : 4 & i ? new o.Point(t.x + s * (r.y - t.y) / a, r.y) : 2 & i ? new o.Point(h.x, t.y + a * (h.x - t.x) / s) : 1 & i ? new o.Point(r.x, t.y + a * (r.x - t.x) / s) : void 0; - }, _getBitCode: function _getBitCode(t, e) { - var i = 0;return t.x < e.min.x ? i |= 1 : t.x > e.max.x && (i |= 2), t.y < e.min.y ? i |= 4 : t.y > e.max.y && (i |= 8), i; - }, _sqDist: function _sqDist(t, e) { - var i = e.x - t.x, - n = e.y - t.y;return i * i + n * n; - }, _sqClosestPointOnSegment: function _sqClosestPointOnSegment(t, e, i, n) { - var s, - a = e.x, - r = e.y, - h = i.x - a, - l = i.y - r, - u = h * h + l * l;return u > 0 && (s = ((t.x - a) * h + (t.y - r) * l) / u, s > 1 ? (a = i.x, r = i.y) : s > 0 && (a += h * s, r += l * s)), h = t.x - a, l = t.y - r, n ? h * h + l * l : new o.Point(a, r); - } }, o.Polyline = o.Path.extend({ initialize: function initialize(t, e) { - o.Path.prototype.initialize.call(this, e), this._latlngs = this._convertLatLngs(t); - }, options: { smoothFactor: 1, noClip: !1 }, projectLatlngs: function projectLatlngs() { - this._originalPoints = [];for (var t = 0, e = this._latlngs.length; e > t; t++) { - this._originalPoints[t] = this._map.latLngToLayerPoint(this._latlngs[t]); - } - }, getPathString: function getPathString() { - for (var t = 0, e = this._parts.length, i = ""; e > t; t++) { - i += this._getPathPartStr(this._parts[t]); - }return i; - }, getLatLngs: function getLatLngs() { - return this._latlngs; - }, setLatLngs: function setLatLngs(t) { - return this._latlngs = this._convertLatLngs(t), this.redraw(); - }, addLatLng: function addLatLng(t) { - return this._latlngs.push(o.latLng(t)), this.redraw(); - }, spliceLatLngs: function spliceLatLngs() { - var t = [].splice.apply(this._latlngs, arguments);return this._convertLatLngs(this._latlngs, !0), this.redraw(), t; - }, closestLayerPoint: function closestLayerPoint(t) { - for (var e, i, n = 1 / 0, s = this._parts, a = null, r = 0, h = s.length; h > r; r++) { - for (var l = s[r], u = 1, c = l.length; c > u; u++) { - e = l[u - 1], i = l[u];var d = o.LineUtil._sqClosestPointOnSegment(t, e, i, !0);n > d && (n = d, a = o.LineUtil._sqClosestPointOnSegment(t, e, i)); - } - }return a && (a.distance = Math.sqrt(n)), a; - }, getBounds: function getBounds() { - return new o.LatLngBounds(this.getLatLngs()); - }, _convertLatLngs: function _convertLatLngs(t, e) { - var i, - n, - s = e ? t : [];for (i = 0, n = t.length; n > i; i++) { - if (o.Util.isArray(t[i]) && "number" != typeof t[i][0]) return;s[i] = o.latLng(t[i]); - }return s; - }, _initEvents: function _initEvents() { - o.Path.prototype._initEvents.call(this); - }, _getPathPartStr: function _getPathPartStr(t) { - for (var e, i = o.Path.VML, n = 0, s = t.length, a = ""; s > n; n++) { - e = t[n], i && e._round(), a += (n ? "L" : "M") + e.x + " " + e.y; - }return a; - }, _clipPoints: function _clipPoints() { - var t, - e, - i, - n = this._originalPoints, - s = n.length;if (this.options.noClip) return void (this._parts = [n]);this._parts = [];var a = this._parts, - r = this._map._pathViewport, - h = o.LineUtil;for (t = 0, e = 0; s - 1 > t; t++) { - i = h.clipSegment(n[t], n[t + 1], r, t), i && (a[e] = a[e] || [], a[e].push(i[0]), (i[1] !== n[t + 1] || t === s - 2) && (a[e].push(i[1]), e++)); - } - }, _simplifyPoints: function _simplifyPoints() { - for (var t = this._parts, e = o.LineUtil, i = 0, n = t.length; n > i; i++) { - t[i] = e.simplify(t[i], this.options.smoothFactor); - } - }, _updatePath: function _updatePath() { - this._map && (this._clipPoints(), this._simplifyPoints(), o.Path.prototype._updatePath.call(this)); - } }), o.polyline = function (t, e) { - return new o.Polyline(t, e); - }, o.PolyUtil = {}, o.PolyUtil.clipPolygon = function (t, e) { - var i, - n, - s, - a, - r, - h, - l, - u, - c, - d = [1, 4, 2, 8], - p = o.LineUtil;for (n = 0, l = t.length; l > n; n++) { - t[n]._code = p._getBitCode(t[n], e); - }for (a = 0; 4 > a; a++) { - for (u = d[a], i = [], n = 0, l = t.length, s = l - 1; l > n; s = n++) { - r = t[n], h = t[s], r._code & u ? h._code & u || (c = p._getEdgeIntersection(h, r, u, e), c._code = p._getBitCode(c, e), i.push(c)) : (h._code & u && (c = p._getEdgeIntersection(h, r, u, e), c._code = p._getBitCode(c, e), i.push(c)), i.push(r)); - }t = i; - }return t; - }, o.Polygon = o.Polyline.extend({ options: { fill: !0 }, initialize: function initialize(t, e) { - o.Polyline.prototype.initialize.call(this, t, e), this._initWithHoles(t); - }, _initWithHoles: function _initWithHoles(t) { - var e, i, n;if (t && o.Util.isArray(t[0]) && "number" != typeof t[0][0]) for (this._latlngs = this._convertLatLngs(t[0]), this._holes = t.slice(1), e = 0, i = this._holes.length; i > e; e++) { - n = this._holes[e] = this._convertLatLngs(this._holes[e]), n[0].equals(n[n.length - 1]) && n.pop(); - }t = this._latlngs, t.length >= 2 && t[0].equals(t[t.length - 1]) && t.pop(); - }, projectLatlngs: function projectLatlngs() { - if (o.Polyline.prototype.projectLatlngs.call(this), this._holePoints = [], this._holes) { - var t, e, i, n;for (t = 0, i = this._holes.length; i > t; t++) { - for (this._holePoints[t] = [], e = 0, n = this._holes[t].length; n > e; e++) { - this._holePoints[t][e] = this._map.latLngToLayerPoint(this._holes[t][e]); - } - } - } - }, setLatLngs: function setLatLngs(t) { - return t && o.Util.isArray(t[0]) && "number" != typeof t[0][0] ? (this._initWithHoles(t), this.redraw()) : o.Polyline.prototype.setLatLngs.call(this, t); - }, _clipPoints: function _clipPoints() { - var t = this._originalPoints, - e = [];if (this._parts = [t].concat(this._holePoints), !this.options.noClip) { - for (var i = 0, n = this._parts.length; n > i; i++) { - var s = o.PolyUtil.clipPolygon(this._parts[i], this._map._pathViewport);s.length && e.push(s); - }this._parts = e; - } - }, _getPathPartStr: function _getPathPartStr(t) { - var e = o.Polyline.prototype._getPathPartStr.call(this, t);return e + (o.Browser.svg ? "z" : "x"); - } }), o.polygon = function (t, e) { - return new o.Polygon(t, e); - }, function () { - function t(t) { - return o.FeatureGroup.extend({ initialize: function initialize(t, e) { - this._layers = {}, this._options = e, this.setLatLngs(t); - }, setLatLngs: function setLatLngs(e) { - var i = 0, - n = e.length;for (this.eachLayer(function (t) { - n > i ? t.setLatLngs(e[i++]) : this.removeLayer(t); - }, this); n > i;) { - this.addLayer(new t(e[i++], this._options)); - }return this; - }, getLatLngs: function getLatLngs() { - var t = [];return this.eachLayer(function (e) { - t.push(e.getLatLngs()); - }), t; - } }); - }o.MultiPolyline = t(o.Polyline), o.MultiPolygon = t(o.Polygon), o.multiPolyline = function (t, e) { - return new o.MultiPolyline(t, e); - }, o.multiPolygon = function (t, e) { - return new o.MultiPolygon(t, e); - }; - }(), o.Rectangle = o.Polygon.extend({ initialize: function initialize(t, e) { - o.Polygon.prototype.initialize.call(this, this._boundsToLatLngs(t), e); - }, setBounds: function setBounds(t) { - this.setLatLngs(this._boundsToLatLngs(t)); - }, _boundsToLatLngs: function _boundsToLatLngs(t) { - return t = o.latLngBounds(t), [t.getSouthWest(), t.getNorthWest(), t.getNorthEast(), t.getSouthEast()]; - } }), o.rectangle = function (t, e) { - return new o.Rectangle(t, e); - }, o.Circle = o.Path.extend({ initialize: function initialize(t, e, i) { - o.Path.prototype.initialize.call(this, i), this._latlng = o.latLng(t), this._mRadius = e; - }, options: { fill: !0 }, setLatLng: function setLatLng(t) { - return this._latlng = o.latLng(t), this.redraw(); - }, setRadius: function setRadius(t) { - return this._mRadius = t, this.redraw(); - }, projectLatlngs: function projectLatlngs() { - var t = this._getLngRadius(), - e = this._latlng, - i = this._map.latLngToLayerPoint([e.lat, e.lng - t]);this._point = this._map.latLngToLayerPoint(e), this._radius = Math.max(this._point.x - i.x, 1); - }, getBounds: function getBounds() { - var t = this._getLngRadius(), - e = this._mRadius / 40075017 * 360, - i = this._latlng;return new o.LatLngBounds([i.lat - e, i.lng - t], [i.lat + e, i.lng + t]); - }, getLatLng: function getLatLng() { - return this._latlng; - }, getPathString: function getPathString() { - var t = this._point, - e = this._radius;return this._checkIfEmpty() ? "" : o.Browser.svg ? "M" + t.x + "," + (t.y - e) + "A" + e + "," + e + ",0,1,1," + (t.x - .1) + "," + (t.y - e) + " z" : (t._round(), e = Math.round(e), "AL " + t.x + "," + t.y + " " + e + "," + e + " 0,23592600"); - }, getRadius: function getRadius() { - return this._mRadius; - }, _getLatRadius: function _getLatRadius() { - return this._mRadius / 40075017 * 360; - }, _getLngRadius: function _getLngRadius() { - return this._getLatRadius() / Math.cos(o.LatLng.DEG_TO_RAD * this._latlng.lat); - }, _checkIfEmpty: function _checkIfEmpty() { - if (!this._map) return !1;var t = this._map._pathViewport, - e = this._radius, - i = this._point;return i.x - e > t.max.x || i.y - e > t.max.y || i.x + e < t.min.x || i.y + e < t.min.y; - } }), o.circle = function (t, e, i) { - return new o.Circle(t, e, i); - }, o.CircleMarker = o.Circle.extend({ options: { radius: 10, weight: 2 }, initialize: function initialize(t, e) { - o.Circle.prototype.initialize.call(this, t, null, e), this._radius = this.options.radius; - }, projectLatlngs: function projectLatlngs() { - this._point = this._map.latLngToLayerPoint(this._latlng); - }, _updateStyle: function _updateStyle() { - o.Circle.prototype._updateStyle.call(this), this.setRadius(this.options.radius); - }, setLatLng: function setLatLng(t) { - return o.Circle.prototype.setLatLng.call(this, t), this._popup && this._popup._isOpen && this._popup.setLatLng(t), this; - }, setRadius: function setRadius(t) { - return this.options.radius = this._radius = t, this.redraw(); - }, getRadius: function getRadius() { - return this._radius; - } }), o.circleMarker = function (t, e) { - return new o.CircleMarker(t, e); - }, o.Polyline.include(o.Path.CANVAS ? { _containsPoint: function _containsPoint(t, e) { - var i, - n, - s, - a, - r, - h, - l, - u = this.options.weight / 2;for (o.Browser.touch && (u += 10), i = 0, a = this._parts.length; a > i; i++) { - for (l = this._parts[i], n = 0, r = l.length, s = r - 1; r > n; s = n++) { - if ((e || 0 !== n) && (h = o.LineUtil.pointToSegmentDistance(t, l[s], l[n]), u >= h)) return !0; - } - }return !1; - } } : {}), o.Polygon.include(o.Path.CANVAS ? { _containsPoint: function _containsPoint(t) { - var e, - i, - n, - s, - a, - r, - h, - l, - u = !1;if (o.Polyline.prototype._containsPoint.call(this, t, !0)) return !0;for (s = 0, h = this._parts.length; h > s; s++) { - for (e = this._parts[s], a = 0, l = e.length, r = l - 1; l > a; r = a++) { - i = e[a], n = e[r], i.y > t.y != n.y > t.y && t.x < (n.x - i.x) * (t.y - i.y) / (n.y - i.y) + i.x && (u = !u); - } - }return u; - } } : {}), o.Circle.include(o.Path.CANVAS ? { _drawPath: function _drawPath() { - var t = this._point;this._ctx.beginPath(), this._ctx.arc(t.x, t.y, this._radius, 0, 2 * Math.PI, !1); - }, _containsPoint: function _containsPoint(t) { - var e = this._point, - i = this.options.stroke ? this.options.weight / 2 : 0;return t.distanceTo(e) <= this._radius + i; - } } : {}), o.CircleMarker.include(o.Path.CANVAS ? { _updateStyle: function _updateStyle() { - o.Path.prototype._updateStyle.call(this); - } } : {}), o.GeoJSON = o.FeatureGroup.extend({ initialize: function initialize(t, e) { - o.setOptions(this, e), this._layers = {}, t && this.addData(t); - }, addData: function addData(t) { - var e, - i, - n, - s = o.Util.isArray(t) ? t : t.features;if (s) { - for (e = 0, i = s.length; i > e; e++) { - n = s[e], (n.geometries || n.geometry || n.features || n.coordinates) && this.addData(s[e]); - }return this; - }var a = this.options;if (!a.filter || a.filter(t)) { - var r = o.GeoJSON.geometryToLayer(t, a.pointToLayer, a.coordsToLatLng, a);return r.feature = o.GeoJSON.asFeature(t), r.defaultOptions = r.options, this.resetStyle(r), a.onEachFeature && a.onEachFeature(t, r), this.addLayer(r); - } - }, resetStyle: function resetStyle(t) { - var e = this.options.style;e && (o.Util.extend(t.options, t.defaultOptions), this._setLayerStyle(t, e)); - }, setStyle: function setStyle(t) { - this.eachLayer(function (e) { - this._setLayerStyle(e, t); - }, this); - }, _setLayerStyle: function _setLayerStyle(t, e) { - "function" == typeof e && (e = e(t.feature)), t.setStyle && t.setStyle(e); - } }), o.extend(o.GeoJSON, { geometryToLayer: function geometryToLayer(t, e, i, n) { - var s, - a, - r, - h, - l = "Feature" === t.type ? t.geometry : t, - u = l.coordinates, - c = [];switch (i = i || this.coordsToLatLng, l.type) {case "Point": - return s = i(u), e ? e(t, s) : new o.Marker(s);case "MultiPoint": - for (r = 0, h = u.length; h > r; r++) { - s = i(u[r]), c.push(e ? e(t, s) : new o.Marker(s)); - }return new o.FeatureGroup(c);case "LineString": - return a = this.coordsToLatLngs(u, 0, i), new o.Polyline(a, n);case "Polygon": - if (2 === u.length && !u[1].length) throw new Error("Invalid GeoJSON object.");return a = this.coordsToLatLngs(u, 1, i), new o.Polygon(a, n);case "MultiLineString": - return a = this.coordsToLatLngs(u, 1, i), new o.MultiPolyline(a, n);case "MultiPolygon": - return a = this.coordsToLatLngs(u, 2, i), new o.MultiPolygon(a, n);case "GeometryCollection": - for (r = 0, h = l.geometries.length; h > r; r++) { - c.push(this.geometryToLayer({ geometry: l.geometries[r], type: "Feature", properties: t.properties }, e, i, n)); - }return new o.FeatureGroup(c);default: - throw new Error("Invalid GeoJSON object.");} - }, coordsToLatLng: function coordsToLatLng(t) { - return new o.LatLng(t[1], t[0], t[2]); - }, coordsToLatLngs: function coordsToLatLngs(t, e, i) { - var n, - o, - s, - a = [];for (o = 0, s = t.length; s > o; o++) { - n = e ? this.coordsToLatLngs(t[o], e - 1, i) : (i || this.coordsToLatLng)(t[o]), a.push(n); - }return a; - }, latLngToCoords: function latLngToCoords(t) { - var e = [t.lng, t.lat];return t.alt !== i && e.push(t.alt), e; - }, latLngsToCoords: function latLngsToCoords(t) { - for (var e = [], i = 0, n = t.length; n > i; i++) { - e.push(o.GeoJSON.latLngToCoords(t[i])); - }return e; - }, getFeature: function getFeature(t, e) { - return t.feature ? o.extend({}, t.feature, { geometry: e }) : o.GeoJSON.asFeature(e); - }, asFeature: function asFeature(t) { - return "Feature" === t.type ? t : { type: "Feature", properties: {}, geometry: t }; - } });var a = { toGeoJSON: function toGeoJSON() { - return o.GeoJSON.getFeature(this, { type: "Point", coordinates: o.GeoJSON.latLngToCoords(this.getLatLng()) }); - } };o.Marker.include(a), o.Circle.include(a), o.CircleMarker.include(a), o.Polyline.include({ toGeoJSON: function toGeoJSON() { - return o.GeoJSON.getFeature(this, { type: "LineString", coordinates: o.GeoJSON.latLngsToCoords(this.getLatLngs()) }); - } }), o.Polygon.include({ toGeoJSON: function toGeoJSON() { - var t, - e, - i, - n = [o.GeoJSON.latLngsToCoords(this.getLatLngs())];if (n[0].push(n[0][0]), this._holes) for (t = 0, e = this._holes.length; e > t; t++) { - i = o.GeoJSON.latLngsToCoords(this._holes[t]), i.push(i[0]), n.push(i); - }return o.GeoJSON.getFeature(this, { type: "Polygon", coordinates: n }); - } }), function () { - function t(t) { - return function () { - var e = [];return this.eachLayer(function (t) { - e.push(t.toGeoJSON().geometry.coordinates); - }), o.GeoJSON.getFeature(this, { type: t, coordinates: e }); - }; - }o.MultiPolyline.include({ toGeoJSON: t("MultiLineString") }), o.MultiPolygon.include({ toGeoJSON: t("MultiPolygon") }), o.LayerGroup.include({ toGeoJSON: function toGeoJSON() { - var e, - i = this.feature && this.feature.geometry, - n = [];if (i && "MultiPoint" === i.type) return t("MultiPoint").call(this);var s = i && "GeometryCollection" === i.type;return this.eachLayer(function (t) { - t.toGeoJSON && (e = t.toGeoJSON(), n.push(s ? e.geometry : o.GeoJSON.asFeature(e))); - }), s ? o.GeoJSON.getFeature(this, { geometries: n, type: "GeometryCollection" }) : { type: "FeatureCollection", features: n }; - } }); - }(), o.geoJson = function (t, e) { - return new o.GeoJSON(t, e); - }, o.DomEvent = { addListener: function addListener(t, e, i, n) { - var s, - a, - r, - h = o.stamp(i), - l = "_leaflet_" + e + h;return t[l] ? this : (s = function s(e) { - return i.call(n || t, e || o.DomEvent._getEvent()); - }, o.Browser.pointer && 0 === e.indexOf("touch") ? this.addPointerListener(t, e, s, h) : (o.Browser.touch && "dblclick" === e && this.addDoubleTapListener && this.addDoubleTapListener(t, s, h), "addEventListener" in t ? "mousewheel" === e ? (t.addEventListener("DOMMouseScroll", s, !1), t.addEventListener(e, s, !1)) : "mouseenter" === e || "mouseleave" === e ? (a = s, r = "mouseenter" === e ? "mouseover" : "mouseout", s = function s(e) { - return o.DomEvent._checkMouse(t, e) ? a(e) : void 0; - }, t.addEventListener(r, s, !1)) : "click" === e && o.Browser.android ? (a = s, s = function s(t) { - return o.DomEvent._filterClick(t, a); - }, t.addEventListener(e, s, !1)) : t.addEventListener(e, s, !1) : "attachEvent" in t && t.attachEvent("on" + e, s), t[l] = s, this)); - }, removeListener: function removeListener(t, e, i) { - var n = o.stamp(i), - s = "_leaflet_" + e + n, - a = t[s];return a ? (o.Browser.pointer && 0 === e.indexOf("touch") ? this.removePointerListener(t, e, n) : o.Browser.touch && "dblclick" === e && this.removeDoubleTapListener ? this.removeDoubleTapListener(t, n) : "removeEventListener" in t ? "mousewheel" === e ? (t.removeEventListener("DOMMouseScroll", a, !1), t.removeEventListener(e, a, !1)) : "mouseenter" === e || "mouseleave" === e ? t.removeEventListener("mouseenter" === e ? "mouseover" : "mouseout", a, !1) : t.removeEventListener(e, a, !1) : "detachEvent" in t && t.detachEvent("on" + e, a), t[s] = null, this) : this; - }, stopPropagation: function stopPropagation(t) { - return t.stopPropagation ? t.stopPropagation() : t.cancelBubble = !0, o.DomEvent._skipped(t), this; - }, disableScrollPropagation: function disableScrollPropagation(t) { - var e = o.DomEvent.stopPropagation;return o.DomEvent.on(t, "mousewheel", e).on(t, "MozMousePixelScroll", e); - }, disableClickPropagation: function disableClickPropagation(t) { - for (var e = o.DomEvent.stopPropagation, i = o.Draggable.START.length - 1; i >= 0; i--) { - o.DomEvent.on(t, o.Draggable.START[i], e); - }return o.DomEvent.on(t, "click", o.DomEvent._fakeStop).on(t, "dblclick", e); - }, preventDefault: function preventDefault(t) { - return t.preventDefault ? t.preventDefault() : t.returnValue = !1, this; - }, stop: function stop(t) { - return o.DomEvent.preventDefault(t).stopPropagation(t); - }, getMousePosition: function getMousePosition(t, e) { - if (!e) return new o.Point(t.clientX, t.clientY);var i = e.getBoundingClientRect();return new o.Point(t.clientX - i.left - e.clientLeft, t.clientY - i.top - e.clientTop); - }, getWheelDelta: function getWheelDelta(t) { - var e = 0;return t.wheelDelta && (e = t.wheelDelta / 120), t.detail && (e = -t.detail / 3), e; - }, _skipEvents: {}, _fakeStop: function _fakeStop(t) { - o.DomEvent._skipEvents[t.type] = !0; - }, _skipped: function _skipped(t) { - var e = this._skipEvents[t.type];return this._skipEvents[t.type] = !1, e; - }, _checkMouse: function _checkMouse(t, e) { - var i = e.relatedTarget;if (!i) return !0;try { - for (; i && i !== t;) { - i = i.parentNode; - } - } catch (n) { - return !1; - }return i !== t; - }, _getEvent: function _getEvent() { - var e = t.event;if (!e) for (var i = arguments.callee.caller; i && (e = i.arguments[0], !e || t.Event !== e.constructor);) { - i = i.caller; - }return e; - }, _filterClick: function _filterClick(t, e) { - var i = t.timeStamp || t.originalEvent.timeStamp, - n = o.DomEvent._lastClick && i - o.DomEvent._lastClick;return n && n > 100 && 500 > n || t.target._simulatedClick && !t._simulated ? void o.DomEvent.stop(t) : (o.DomEvent._lastClick = i, e(t)); - } }, o.DomEvent.on = o.DomEvent.addListener, o.DomEvent.off = o.DomEvent.removeListener, o.Draggable = o.Class.extend({ includes: o.Mixin.Events, statics: { START: o.Browser.touch ? ["touchstart", "mousedown"] : ["mousedown"], END: { mousedown: "mouseup", touchstart: "touchend", pointerdown: "touchend", MSPointerDown: "touchend" }, MOVE: { mousedown: "mousemove", touchstart: "touchmove", pointerdown: "touchmove", MSPointerDown: "touchmove" } }, initialize: function initialize(t, e) { - this._element = t, this._dragStartTarget = e || t; - }, enable: function enable() { - if (!this._enabled) { - for (var t = o.Draggable.START.length - 1; t >= 0; t--) { - o.DomEvent.on(this._dragStartTarget, o.Draggable.START[t], this._onDown, this); - }this._enabled = !0; - } - }, disable: function disable() { - if (this._enabled) { - for (var t = o.Draggable.START.length - 1; t >= 0; t--) { - o.DomEvent.off(this._dragStartTarget, o.Draggable.START[t], this._onDown, this); - }this._enabled = !1, this._moved = !1; - } - }, _onDown: function _onDown(t) { - if (this._moved = !1, !t.shiftKey && (1 === t.which || 1 === t.button || t.touches) && (o.DomEvent.stopPropagation(t), !o.Draggable._disabled && (o.DomUtil.disableImageDrag(), o.DomUtil.disableTextSelection(), !this._moving))) { - var i = t.touches ? t.touches[0] : t;this._startPoint = new o.Point(i.clientX, i.clientY), this._startPos = this._newPos = o.DomUtil.getPosition(this._element), o.DomEvent.on(e, o.Draggable.MOVE[t.type], this._onMove, this).on(e, o.Draggable.END[t.type], this._onUp, this); - } - }, _onMove: function _onMove(t) { - if (t.touches && t.touches.length > 1) return void (this._moved = !0);var i = t.touches && 1 === t.touches.length ? t.touches[0] : t, - n = new o.Point(i.clientX, i.clientY), - s = n.subtract(this._startPoint);(s.x || s.y) && (o.Browser.touch && Math.abs(s.x) + Math.abs(s.y) < 3 || (o.DomEvent.preventDefault(t), this._moved || (this.fire("dragstart"), this._moved = !0, this._startPos = o.DomUtil.getPosition(this._element).subtract(s), o.DomUtil.addClass(e.body, "leaflet-dragging"), this._lastTarget = t.target || t.srcElement, o.DomUtil.addClass(this._lastTarget, "leaflet-drag-target")), this._newPos = this._startPos.add(s), this._moving = !0, o.Util.cancelAnimFrame(this._animRequest), this._animRequest = o.Util.requestAnimFrame(this._updatePosition, this, !0, this._dragStartTarget))); - }, _updatePosition: function _updatePosition() { - this.fire("predrag"), o.DomUtil.setPosition(this._element, this._newPos), this.fire("drag"); - }, _onUp: function _onUp() { - o.DomUtil.removeClass(e.body, "leaflet-dragging"), this._lastTarget && (o.DomUtil.removeClass(this._lastTarget, "leaflet-drag-target"), this._lastTarget = null);for (var t in o.Draggable.MOVE) { - o.DomEvent.off(e, o.Draggable.MOVE[t], this._onMove).off(e, o.Draggable.END[t], this._onUp); - }o.DomUtil.enableImageDrag(), o.DomUtil.enableTextSelection(), this._moved && this._moving && (o.Util.cancelAnimFrame(this._animRequest), this.fire("dragend", { distance: this._newPos.distanceTo(this._startPos) })), this._moving = !1; - } }), o.Handler = o.Class.extend({ initialize: function initialize(t) { - this._map = t; - }, enable: function enable() { - this._enabled || (this._enabled = !0, this.addHooks()); - }, disable: function disable() { - this._enabled && (this._enabled = !1, this.removeHooks()); - }, enabled: function enabled() { - return !!this._enabled; - } }), o.Map.mergeOptions({ dragging: !0, inertia: !o.Browser.android23, inertiaDeceleration: 3400, inertiaMaxSpeed: 1 / 0, inertiaThreshold: o.Browser.touch ? 32 : 18, easeLinearity: .25, worldCopyJump: !1 }), o.Map.Drag = o.Handler.extend({ addHooks: function addHooks() { - if (!this._draggable) { - var t = this._map;this._draggable = new o.Draggable(t._mapPane, t._container), this._draggable.on({ dragstart: this._onDragStart, drag: this._onDrag, dragend: this._onDragEnd }, this), t.options.worldCopyJump && (this._draggable.on("predrag", this._onPreDrag, this), t.on("viewreset", this._onViewReset, this), t.whenReady(this._onViewReset, this)); - }this._draggable.enable(); - }, removeHooks: function removeHooks() { - this._draggable.disable(); - }, moved: function moved() { - return this._draggable && this._draggable._moved; - }, _onDragStart: function _onDragStart() { - var t = this._map;t._panAnim && t._panAnim.stop(), t.fire("movestart").fire("dragstart"), t.options.inertia && (this._positions = [], this._times = []); - }, _onDrag: function _onDrag() { - if (this._map.options.inertia) { - var t = this._lastTime = +new Date(), - e = this._lastPos = this._draggable._newPos;this._positions.push(e), this._times.push(t), t - this._times[0] > 200 && (this._positions.shift(), this._times.shift()); - }this._map.fire("move").fire("drag"); - }, _onViewReset: function _onViewReset() { - var t = this._map.getSize()._divideBy(2), - e = this._map.latLngToLayerPoint([0, 0]);this._initialWorldOffset = e.subtract(t).x, this._worldWidth = this._map.project([0, 180]).x; - }, _onPreDrag: function _onPreDrag() { - var t = this._worldWidth, - e = Math.round(t / 2), - i = this._initialWorldOffset, - n = this._draggable._newPos.x, - o = (n - e + i) % t + e - i, - s = (n + e + i) % t - e - i, - a = Math.abs(o + i) < Math.abs(s + i) ? o : s;this._draggable._newPos.x = a; - }, _onDragEnd: function _onDragEnd(t) { - var e = this._map, - i = e.options, - n = +new Date() - this._lastTime, - s = !i.inertia || n > i.inertiaThreshold || !this._positions[0];if (e.fire("dragend", t), s) e.fire("moveend");else { - var a = this._lastPos.subtract(this._positions[0]), - r = (this._lastTime + n - this._times[0]) / 1e3, - h = i.easeLinearity, - l = a.multiplyBy(h / r), - u = l.distanceTo([0, 0]), - c = Math.min(i.inertiaMaxSpeed, u), - d = l.multiplyBy(c / u), - p = c / (i.inertiaDeceleration * h), - _ = d.multiplyBy(-p / 2).round();_.x && _.y ? (_ = e._limitOffset(_, e.options.maxBounds), o.Util.requestAnimFrame(function () { - e.panBy(_, { duration: p, easeLinearity: h, noMoveStart: !0 }); - })) : e.fire("moveend"); - } - } }), o.Map.addInitHook("addHandler", "dragging", o.Map.Drag), o.Map.mergeOptions({ doubleClickZoom: !0 }), o.Map.DoubleClickZoom = o.Handler.extend({ addHooks: function addHooks() { - this._map.on("dblclick", this._onDoubleClick, this); - }, removeHooks: function removeHooks() { - this._map.off("dblclick", this._onDoubleClick, this); - }, _onDoubleClick: function _onDoubleClick(t) { - var e = this._map, - i = e.getZoom() + (t.originalEvent.shiftKey ? -1 : 1);"center" === e.options.doubleClickZoom ? e.setZoom(i) : e.setZoomAround(t.containerPoint, i); - } }), o.Map.addInitHook("addHandler", "doubleClickZoom", o.Map.DoubleClickZoom), o.Map.mergeOptions({ scrollWheelZoom: !0 }), o.Map.ScrollWheelZoom = o.Handler.extend({ addHooks: function addHooks() { - o.DomEvent.on(this._map._container, "mousewheel", this._onWheelScroll, this), o.DomEvent.on(this._map._container, "MozMousePixelScroll", o.DomEvent.preventDefault), this._delta = 0; - }, removeHooks: function removeHooks() { - o.DomEvent.off(this._map._container, "mousewheel", this._onWheelScroll), o.DomEvent.off(this._map._container, "MozMousePixelScroll", o.DomEvent.preventDefault); - }, _onWheelScroll: function _onWheelScroll(t) { - var e = o.DomEvent.getWheelDelta(t);this._delta += e, this._lastMousePos = this._map.mouseEventToContainerPoint(t), this._startTime || (this._startTime = +new Date());var i = Math.max(40 - (+new Date() - this._startTime), 0);clearTimeout(this._timer), this._timer = setTimeout(o.bind(this._performZoom, this), i), o.DomEvent.preventDefault(t), o.DomEvent.stopPropagation(t); - }, _performZoom: function _performZoom() { - var t = this._map, - e = this._delta, - i = t.getZoom();e = e > 0 ? Math.ceil(e) : Math.floor(e), e = Math.max(Math.min(e, 4), -4), e = t._limitZoom(i + e) - i, this._delta = 0, this._startTime = null, e && ("center" === t.options.scrollWheelZoom ? t.setZoom(i + e) : t.setZoomAround(this._lastMousePos, i + e)); - } }), o.Map.addInitHook("addHandler", "scrollWheelZoom", o.Map.ScrollWheelZoom), o.extend(o.DomEvent, { _touchstart: o.Browser.msPointer ? "MSPointerDown" : o.Browser.pointer ? "pointerdown" : "touchstart", _touchend: o.Browser.msPointer ? "MSPointerUp" : o.Browser.pointer ? "pointerup" : "touchend", addDoubleTapListener: function addDoubleTapListener(t, i, n) { - function s(t) { - var e;if (o.Browser.pointer ? (_.push(t.pointerId), e = _.length) : e = t.touches.length, !(e > 1)) { - var i = Date.now(), - n = i - (r || i);h = t.touches ? t.touches[0] : t, l = n > 0 && u >= n, r = i; - } - }function a(t) { - if (o.Browser.pointer) { - var e = _.indexOf(t.pointerId);if (-1 === e) return;_.splice(e, 1); - }if (l) { - if (o.Browser.pointer) { - var n, - s = {};for (var a in h) { - n = h[a], "function" == typeof n ? s[a] = n.bind(h) : s[a] = n; - }h = s; - }h.type = "dblclick", i(h), r = null; - } - }var r, - h, - l = !1, - u = 250, - c = "_leaflet_", - d = this._touchstart, - p = this._touchend, - _ = [];t[c + d + n] = s, t[c + p + n] = a;var m = o.Browser.pointer ? e.documentElement : t;return t.addEventListener(d, s, !1), m.addEventListener(p, a, !1), o.Browser.pointer && m.addEventListener(o.DomEvent.POINTER_CANCEL, a, !1), this; - }, removeDoubleTapListener: function removeDoubleTapListener(t, i) { - var n = "_leaflet_";return t.removeEventListener(this._touchstart, t[n + this._touchstart + i], !1), (o.Browser.pointer ? e.documentElement : t).removeEventListener(this._touchend, t[n + this._touchend + i], !1), o.Browser.pointer && e.documentElement.removeEventListener(o.DomEvent.POINTER_CANCEL, t[n + this._touchend + i], !1), this; - } }), o.extend(o.DomEvent, { POINTER_DOWN: o.Browser.msPointer ? "MSPointerDown" : "pointerdown", POINTER_MOVE: o.Browser.msPointer ? "MSPointerMove" : "pointermove", POINTER_UP: o.Browser.msPointer ? "MSPointerUp" : "pointerup", POINTER_CANCEL: o.Browser.msPointer ? "MSPointerCancel" : "pointercancel", _pointers: [], _pointerDocumentListener: !1, addPointerListener: function addPointerListener(t, e, i, n) { - switch (e) {case "touchstart": - return this.addPointerListenerStart(t, e, i, n); - case "touchend": - return this.addPointerListenerEnd(t, e, i, n);case "touchmove": - return this.addPointerListenerMove(t, e, i, n);default: - throw "Unknown touch event type";} - }, addPointerListenerStart: function addPointerListenerStart(t, i, n, s) { - var a = "_leaflet_", - r = this._pointers, - h = function h(t) { - "mouse" !== t.pointerType && t.pointerType !== t.MSPOINTER_TYPE_MOUSE && o.DomEvent.preventDefault(t);for (var e = !1, i = 0; i < r.length; i++) { - if (r[i].pointerId === t.pointerId) { - e = !0;break; - } - }e || r.push(t), t.touches = r.slice(), t.changedTouches = [t], n(t); - };if (t[a + "touchstart" + s] = h, t.addEventListener(this.POINTER_DOWN, h, !1), !this._pointerDocumentListener) { - var l = function l(t) { - for (var e = 0; e < r.length; e++) { - if (r[e].pointerId === t.pointerId) { - r.splice(e, 1);break; - } - } - };e.documentElement.addEventListener(this.POINTER_UP, l, !1), e.documentElement.addEventListener(this.POINTER_CANCEL, l, !1), this._pointerDocumentListener = !0; - }return this; - }, addPointerListenerMove: function addPointerListenerMove(t, e, i, n) { - function o(t) { - if (t.pointerType !== t.MSPOINTER_TYPE_MOUSE && "mouse" !== t.pointerType || 0 !== t.buttons) { - for (var e = 0; e < a.length; e++) { - if (a[e].pointerId === t.pointerId) { - a[e] = t;break; - } - }t.touches = a.slice(), t.changedTouches = [t], i(t); - } - }var s = "_leaflet_", - a = this._pointers;return t[s + "touchmove" + n] = o, t.addEventListener(this.POINTER_MOVE, o, !1), this; - }, addPointerListenerEnd: function addPointerListenerEnd(t, e, i, n) { - var o = "_leaflet_", - s = this._pointers, - a = function a(t) { - for (var e = 0; e < s.length; e++) { - if (s[e].pointerId === t.pointerId) { - s.splice(e, 1);break; - } - }t.touches = s.slice(), t.changedTouches = [t], i(t); - };return t[o + "touchend" + n] = a, t.addEventListener(this.POINTER_UP, a, !1), t.addEventListener(this.POINTER_CANCEL, a, !1), this; - }, removePointerListener: function removePointerListener(t, e, i) { - var n = "_leaflet_", - o = t[n + e + i];switch (e) {case "touchstart": - t.removeEventListener(this.POINTER_DOWN, o, !1);break;case "touchmove": - t.removeEventListener(this.POINTER_MOVE, o, !1);break;case "touchend": - t.removeEventListener(this.POINTER_UP, o, !1), t.removeEventListener(this.POINTER_CANCEL, o, !1);}return this; - } }), o.Map.mergeOptions({ touchZoom: o.Browser.touch && !o.Browser.android23, bounceAtZoomLimits: !0 }), o.Map.TouchZoom = o.Handler.extend({ addHooks: function addHooks() { - o.DomEvent.on(this._map._container, "touchstart", this._onTouchStart, this); - }, removeHooks: function removeHooks() { - o.DomEvent.off(this._map._container, "touchstart", this._onTouchStart, this); - }, _onTouchStart: function _onTouchStart(t) { - var i = this._map;if (t.touches && 2 === t.touches.length && !i._animatingZoom && !this._zooming) { - var n = i.mouseEventToLayerPoint(t.touches[0]), - s = i.mouseEventToLayerPoint(t.touches[1]), - a = i._getCenterLayerPoint();this._startCenter = n.add(s)._divideBy(2), this._startDist = n.distanceTo(s), this._moved = !1, this._zooming = !0, this._centerOffset = a.subtract(this._startCenter), i._panAnim && i._panAnim.stop(), o.DomEvent.on(e, "touchmove", this._onTouchMove, this).on(e, "touchend", this._onTouchEnd, this), o.DomEvent.preventDefault(t); - } - }, _onTouchMove: function _onTouchMove(t) { - var e = this._map;if (t.touches && 2 === t.touches.length && this._zooming) { - var i = e.mouseEventToLayerPoint(t.touches[0]), - n = e.mouseEventToLayerPoint(t.touches[1]);this._scale = i.distanceTo(n) / this._startDist, this._delta = i._add(n)._divideBy(2)._subtract(this._startCenter), 1 !== this._scale && (e.options.bounceAtZoomLimits || !(e.getZoom() === e.getMinZoom() && this._scale < 1 || e.getZoom() === e.getMaxZoom() && this._scale > 1)) && (this._moved || (o.DomUtil.addClass(e._mapPane, "leaflet-touching"), e.fire("movestart").fire("zoomstart"), this._moved = !0), o.Util.cancelAnimFrame(this._animRequest), this._animRequest = o.Util.requestAnimFrame(this._updateOnMove, this, !0, this._map._container), o.DomEvent.preventDefault(t)); - } - }, _updateOnMove: function _updateOnMove() { - var t = this._map, - e = this._getScaleOrigin(), - i = t.layerPointToLatLng(e), - n = t.getScaleZoom(this._scale);t._animateZoom(i, n, this._startCenter, this._scale, this._delta, !1, !0); - }, _onTouchEnd: function _onTouchEnd() { - if (!this._moved || !this._zooming) return void (this._zooming = !1);var t = this._map;this._zooming = !1, o.DomUtil.removeClass(t._mapPane, "leaflet-touching"), o.Util.cancelAnimFrame(this._animRequest), o.DomEvent.off(e, "touchmove", this._onTouchMove).off(e, "touchend", this._onTouchEnd);var i = this._getScaleOrigin(), - n = t.layerPointToLatLng(i), - s = t.getZoom(), - a = t.getScaleZoom(this._scale) - s, - r = a > 0 ? Math.ceil(a) : Math.floor(a), - h = t._limitZoom(s + r), - l = t.getZoomScale(h) / this._scale;t._animateZoom(n, h, i, l); - }, _getScaleOrigin: function _getScaleOrigin() { - var t = this._centerOffset.subtract(this._delta).divideBy(this._scale);return this._startCenter.add(t); - } }), o.Map.addInitHook("addHandler", "touchZoom", o.Map.TouchZoom), o.Map.mergeOptions({ tap: !0, tapTolerance: 15 }), o.Map.Tap = o.Handler.extend({ addHooks: function addHooks() { - o.DomEvent.on(this._map._container, "touchstart", this._onDown, this); - }, removeHooks: function removeHooks() { - o.DomEvent.off(this._map._container, "touchstart", this._onDown, this); - }, _onDown: function _onDown(t) { - if (t.touches) { - if (o.DomEvent.preventDefault(t), this._fireClick = !0, t.touches.length > 1) return this._fireClick = !1, void clearTimeout(this._holdTimeout);var i = t.touches[0], - n = i.target;this._startPos = this._newPos = new o.Point(i.clientX, i.clientY), n.tagName && "a" === n.tagName.toLowerCase() && o.DomUtil.addClass(n, "leaflet-active"), this._holdTimeout = setTimeout(o.bind(function () { - this._isTapValid() && (this._fireClick = !1, this._onUp(), this._simulateEvent("contextmenu", i)); - }, this), 1e3), o.DomEvent.on(e, "touchmove", this._onMove, this).on(e, "touchend", this._onUp, this); - } - }, _onUp: function _onUp(t) { - if (clearTimeout(this._holdTimeout), o.DomEvent.off(e, "touchmove", this._onMove, this).off(e, "touchend", this._onUp, this), this._fireClick && t && t.changedTouches) { - var i = t.changedTouches[0], - n = i.target;n && n.tagName && "a" === n.tagName.toLowerCase() && o.DomUtil.removeClass(n, "leaflet-active"), this._isTapValid() && this._simulateEvent("click", i); - } - }, _isTapValid: function _isTapValid() { - return this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance; - }, _onMove: function _onMove(t) { - var e = t.touches[0];this._newPos = new o.Point(e.clientX, e.clientY); - }, _simulateEvent: function _simulateEvent(i, n) { - var o = e.createEvent("MouseEvents");o._simulated = !0, n.target._simulatedClick = !0, o.initMouseEvent(i, !0, !0, t, 1, n.screenX, n.screenY, n.clientX, n.clientY, !1, !1, !1, !1, 0, null), n.target.dispatchEvent(o); - } }), o.Browser.touch && !o.Browser.pointer && o.Map.addInitHook("addHandler", "tap", o.Map.Tap), o.Map.mergeOptions({ boxZoom: !0 }), o.Map.BoxZoom = o.Handler.extend({ initialize: function initialize(t) { - this._map = t, this._container = t._container, this._pane = t._panes.overlayPane, this._moved = !1; - }, addHooks: function addHooks() { - o.DomEvent.on(this._container, "mousedown", this._onMouseDown, this); - }, removeHooks: function removeHooks() { - o.DomEvent.off(this._container, "mousedown", this._onMouseDown), this._moved = !1; - }, moved: function moved() { - return this._moved; - }, _onMouseDown: function _onMouseDown(t) { - return this._moved = !1, !t.shiftKey || 1 !== t.which && 1 !== t.button ? !1 : (o.DomUtil.disableTextSelection(), o.DomUtil.disableImageDrag(), this._startLayerPoint = this._map.mouseEventToLayerPoint(t), void o.DomEvent.on(e, "mousemove", this._onMouseMove, this).on(e, "mouseup", this._onMouseUp, this).on(e, "keydown", this._onKeyDown, this)); - }, _onMouseMove: function _onMouseMove(t) { - this._moved || (this._box = o.DomUtil.create("div", "leaflet-zoom-box", this._pane), o.DomUtil.setPosition(this._box, this._startLayerPoint), this._container.style.cursor = "crosshair", this._map.fire("boxzoomstart"));var e = this._startLayerPoint, - i = this._box, - n = this._map.mouseEventToLayerPoint(t), - s = n.subtract(e), - a = new o.Point(Math.min(n.x, e.x), Math.min(n.y, e.y));o.DomUtil.setPosition(i, a), this._moved = !0, i.style.width = Math.max(0, Math.abs(s.x) - 4) + "px", i.style.height = Math.max(0, Math.abs(s.y) - 4) + "px"; - }, _finish: function _finish() { - this._moved && (this._pane.removeChild(this._box), this._container.style.cursor = ""), o.DomUtil.enableTextSelection(), o.DomUtil.enableImageDrag(), o.DomEvent.off(e, "mousemove", this._onMouseMove).off(e, "mouseup", this._onMouseUp).off(e, "keydown", this._onKeyDown); - }, _onMouseUp: function _onMouseUp(t) { - this._finish();var e = this._map, - i = e.mouseEventToLayerPoint(t);if (!this._startLayerPoint.equals(i)) { - var n = new o.LatLngBounds(e.layerPointToLatLng(this._startLayerPoint), e.layerPointToLatLng(i));e.fitBounds(n), e.fire("boxzoomend", { boxZoomBounds: n }); - } - }, _onKeyDown: function _onKeyDown(t) { - 27 === t.keyCode && this._finish(); - } }), o.Map.addInitHook("addHandler", "boxZoom", o.Map.BoxZoom), o.Map.mergeOptions({ keyboard: !0, keyboardPanOffset: 80, keyboardZoomOffset: 1 }), o.Map.Keyboard = o.Handler.extend({ keyCodes: { left: [37], right: [39], down: [40], up: [38], zoomIn: [187, 107, 61, 171], zoomOut: [189, 109, 173] }, initialize: function initialize(t) { - this._map = t, this._setPanOffset(t.options.keyboardPanOffset), this._setZoomOffset(t.options.keyboardZoomOffset); - }, addHooks: function addHooks() { - var t = this._map._container;-1 === t.tabIndex && (t.tabIndex = "0"), o.DomEvent.on(t, "focus", this._onFocus, this).on(t, "blur", this._onBlur, this).on(t, "mousedown", this._onMouseDown, this), this._map.on("focus", this._addHooks, this).on("blur", this._removeHooks, this); - }, removeHooks: function removeHooks() { - this._removeHooks();var t = this._map._container;o.DomEvent.off(t, "focus", this._onFocus, this).off(t, "blur", this._onBlur, this).off(t, "mousedown", this._onMouseDown, this), this._map.off("focus", this._addHooks, this).off("blur", this._removeHooks, this); - }, _onMouseDown: function _onMouseDown() { - if (!this._focused) { - var i = e.body, - n = e.documentElement, - o = i.scrollTop || n.scrollTop, - s = i.scrollLeft || n.scrollLeft;this._map._container.focus(), t.scrollTo(s, o); - } - }, _onFocus: function _onFocus() { - this._focused = !0, this._map.fire("focus"); - }, _onBlur: function _onBlur() { - this._focused = !1, this._map.fire("blur"); - }, _setPanOffset: function _setPanOffset(t) { - var e, - i, - n = this._panKeys = {}, - o = this.keyCodes;for (e = 0, i = o.left.length; i > e; e++) { - n[o.left[e]] = [-1 * t, 0]; - }for (e = 0, i = o.right.length; i > e; e++) { - n[o.right[e]] = [t, 0]; - }for (e = 0, i = o.down.length; i > e; e++) { - n[o.down[e]] = [0, t]; - }for (e = 0, i = o.up.length; i > e; e++) { - n[o.up[e]] = [0, -1 * t]; - } - }, _setZoomOffset: function _setZoomOffset(t) { - var e, - i, - n = this._zoomKeys = {}, - o = this.keyCodes;for (e = 0, i = o.zoomIn.length; i > e; e++) { - n[o.zoomIn[e]] = t; - }for (e = 0, i = o.zoomOut.length; i > e; e++) { - n[o.zoomOut[e]] = -t; - } - }, _addHooks: function _addHooks() { - o.DomEvent.on(e, "keydown", this._onKeyDown, this); - }, _removeHooks: function _removeHooks() { - o.DomEvent.off(e, "keydown", this._onKeyDown, this); - }, _onKeyDown: function _onKeyDown(t) { - var e = t.keyCode, - i = this._map;if (e in this._panKeys) { - if (i._panAnim && i._panAnim._inProgress) return;i.panBy(this._panKeys[e]), i.options.maxBounds && i.panInsideBounds(i.options.maxBounds); - } else { - if (!(e in this._zoomKeys)) return;i.setZoom(i.getZoom() + this._zoomKeys[e]); - }o.DomEvent.stop(t); - } }), o.Map.addInitHook("addHandler", "keyboard", o.Map.Keyboard), o.Handler.MarkerDrag = o.Handler.extend({ initialize: function initialize(t) { - this._marker = t; - }, addHooks: function addHooks() { - var t = this._marker._icon;this._draggable || (this._draggable = new o.Draggable(t, t)), this._draggable.on("dragstart", this._onDragStart, this).on("drag", this._onDrag, this).on("dragend", this._onDragEnd, this), this._draggable.enable(), o.DomUtil.addClass(this._marker._icon, "leaflet-marker-draggable"); - }, removeHooks: function removeHooks() { - this._draggable.off("dragstart", this._onDragStart, this).off("drag", this._onDrag, this).off("dragend", this._onDragEnd, this), this._draggable.disable(), o.DomUtil.removeClass(this._marker._icon, "leaflet-marker-draggable"); - }, moved: function moved() { - return this._draggable && this._draggable._moved; - }, _onDragStart: function _onDragStart() { - this._marker.closePopup().fire("movestart").fire("dragstart"); - }, _onDrag: function _onDrag() { - var t = this._marker, - e = t._shadow, - i = o.DomUtil.getPosition(t._icon), - n = t._map.layerPointToLatLng(i);e && o.DomUtil.setPosition(e, i), t._latlng = n, t.fire("move", { latlng: n }).fire("drag"); - }, _onDragEnd: function _onDragEnd(t) { - this._marker.fire("moveend").fire("dragend", t); - } }), o.Control = o.Class.extend({ options: { position: "topright" }, initialize: function initialize(t) { - o.setOptions(this, t); - }, getPosition: function getPosition() { - return this.options.position; - }, setPosition: function setPosition(t) { - var e = this._map;return e && e.removeControl(this), this.options.position = t, e && e.addControl(this), this; - }, getContainer: function getContainer() { - return this._container; - }, addTo: function addTo(t) { - this._map = t;var e = this._container = this.onAdd(t), - i = this.getPosition(), - n = t._controlCorners[i];return o.DomUtil.addClass(e, "leaflet-control"), -1 !== i.indexOf("bottom") ? n.insertBefore(e, n.firstChild) : n.appendChild(e), this; - }, removeFrom: function removeFrom(t) { - var e = this.getPosition(), - i = t._controlCorners[e];return i.removeChild(this._container), this._map = null, this.onRemove && this.onRemove(t), this; - }, _refocusOnMap: function _refocusOnMap() { - this._map && this._map.getContainer().focus(); - } }), o.control = function (t) { - return new o.Control(t); - }, o.Map.include({ addControl: function addControl(t) { - return t.addTo(this), this; - }, removeControl: function removeControl(t) { - return t.removeFrom(this), this; - }, _initControlPos: function _initControlPos() { - function t(t, s) { - var a = i + t + " " + i + s;e[t + s] = o.DomUtil.create("div", a, n); - }var e = this._controlCorners = {}, - i = "leaflet-", - n = this._controlContainer = o.DomUtil.create("div", i + "control-container", this._container);t("top", "left"), t("top", "right"), t("bottom", "left"), t("bottom", "right"); - }, _clearControlPos: function _clearControlPos() { - this._container.removeChild(this._controlContainer); - } }), o.Control.Zoom = o.Control.extend({ options: { position: "topleft", zoomInText: "+", zoomInTitle: "Zoom in", zoomOutText: "-", zoomOutTitle: "Zoom out" }, onAdd: function onAdd(t) { - var e = "leaflet-control-zoom", - i = o.DomUtil.create("div", e + " leaflet-bar");return this._map = t, this._zoomInButton = this._createButton(this.options.zoomInText, this.options.zoomInTitle, e + "-in", i, this._zoomIn, this), this._zoomOutButton = this._createButton(this.options.zoomOutText, this.options.zoomOutTitle, e + "-out", i, this._zoomOut, this), this._updateDisabled(), t.on("zoomend zoomlevelschange", this._updateDisabled, this), i; - }, onRemove: function onRemove(t) { - t.off("zoomend zoomlevelschange", this._updateDisabled, this); - }, _zoomIn: function _zoomIn(t) { - this._map.zoomIn(t.shiftKey ? 3 : 1); - }, _zoomOut: function _zoomOut(t) { - this._map.zoomOut(t.shiftKey ? 3 : 1); - }, _createButton: function _createButton(t, e, i, n, s, a) { - var r = o.DomUtil.create("a", i, n);r.innerHTML = t, r.href = "#", r.title = e;var h = o.DomEvent.stopPropagation;return o.DomEvent.on(r, "click", h).on(r, "mousedown", h).on(r, "dblclick", h).on(r, "click", o.DomEvent.preventDefault).on(r, "click", s, a).on(r, "click", this._refocusOnMap, a), r; - }, _updateDisabled: function _updateDisabled() { - var t = this._map, - e = "leaflet-disabled";o.DomUtil.removeClass(this._zoomInButton, e), o.DomUtil.removeClass(this._zoomOutButton, e), t._zoom === t.getMinZoom() && o.DomUtil.addClass(this._zoomOutButton, e), t._zoom === t.getMaxZoom() && o.DomUtil.addClass(this._zoomInButton, e); - } }), o.Map.mergeOptions({ zoomControl: !0 }), o.Map.addInitHook(function () { - this.options.zoomControl && (this.zoomControl = new o.Control.Zoom(), this.addControl(this.zoomControl)); - }), o.control.zoom = function (t) { - return new o.Control.Zoom(t); - }, o.Control.Attribution = o.Control.extend({ options: { position: "bottomright", prefix: 'Leaflet' }, initialize: function initialize(t) { - o.setOptions(this, t), this._attributions = {}; - }, onAdd: function onAdd(t) { - this._container = o.DomUtil.create("div", "leaflet-control-attribution"), o.DomEvent.disableClickPropagation(this._container);for (var e in t._layers) { - t._layers[e].getAttribution && this.addAttribution(t._layers[e].getAttribution()); - }return t.on("layeradd", this._onLayerAdd, this).on("layerremove", this._onLayerRemove, this), this._update(), this._container; - }, onRemove: function onRemove(t) { - t.off("layeradd", this._onLayerAdd).off("layerremove", this._onLayerRemove); - }, setPrefix: function setPrefix(t) { - return this.options.prefix = t, this._update(), this; - }, addAttribution: function addAttribution(t) { - return t ? (this._attributions[t] || (this._attributions[t] = 0), this._attributions[t]++, this._update(), this) : void 0; - }, removeAttribution: function removeAttribution(t) { - return t ? (this._attributions[t] && (this._attributions[t]--, this._update()), this) : void 0; - }, _update: function _update() { - if (this._map) { - var t = [];for (var e in this._attributions) { - this._attributions[e] && t.push(e); - }var i = [];this.options.prefix && i.push(this.options.prefix), t.length && i.push(t.join(", ")), this._container.innerHTML = i.join(" | "); - } - }, _onLayerAdd: function _onLayerAdd(t) { - t.layer.getAttribution && this.addAttribution(t.layer.getAttribution()); - }, _onLayerRemove: function _onLayerRemove(t) { - t.layer.getAttribution && this.removeAttribution(t.layer.getAttribution()); - } }), o.Map.mergeOptions({ attributionControl: !0 }), o.Map.addInitHook(function () { - this.options.attributionControl && (this.attributionControl = new o.Control.Attribution().addTo(this)); - }), o.control.attribution = function (t) { - return new o.Control.Attribution(t); - }, o.Control.Scale = o.Control.extend({ options: { position: "bottomleft", maxWidth: 100, metric: !0, imperial: !0, updateWhenIdle: !1 }, onAdd: function onAdd(t) { - this._map = t;var e = "leaflet-control-scale", - i = o.DomUtil.create("div", e), - n = this.options;return this._addScales(n, e, i), t.on(n.updateWhenIdle ? "moveend" : "move", this._update, this), t.whenReady(this._update, this), i; - }, onRemove: function onRemove(t) { - t.off(this.options.updateWhenIdle ? "moveend" : "move", this._update, this); - }, _addScales: function _addScales(t, e, i) { - t.metric && (this._mScale = o.DomUtil.create("div", e + "-line", i)), t.imperial && (this._iScale = o.DomUtil.create("div", e + "-line", i)); - }, _update: function _update() { - var t = this._map.getBounds(), - e = t.getCenter().lat, - i = 6378137 * Math.PI * Math.cos(e * Math.PI / 180), - n = i * (t.getNorthEast().lng - t.getSouthWest().lng) / 180, - o = this._map.getSize(), - s = this.options, - a = 0;o.x > 0 && (a = n * (s.maxWidth / o.x)), this._updateScales(s, a); - }, _updateScales: function _updateScales(t, e) { - t.metric && e && this._updateMetric(e), t.imperial && e && this._updateImperial(e); - }, _updateMetric: function _updateMetric(t) { - var e = this._getRoundNum(t);this._mScale.style.width = this._getScaleWidth(e / t) + "px", this._mScale.innerHTML = 1e3 > e ? e + " m" : e / 1e3 + " km"; - }, _updateImperial: function _updateImperial(t) { - var e, - i, - n, - o = 3.2808399 * t, - s = this._iScale;o > 5280 ? (e = o / 5280, i = this._getRoundNum(e), s.style.width = this._getScaleWidth(i / e) + "px", s.innerHTML = i + " mi") : (n = this._getRoundNum(o), s.style.width = this._getScaleWidth(n / o) + "px", s.innerHTML = n + " ft"); - }, _getScaleWidth: function _getScaleWidth(t) { - return Math.round(this.options.maxWidth * t) - 10; - }, _getRoundNum: function _getRoundNum(t) { - var e = Math.pow(10, (Math.floor(t) + "").length - 1), - i = t / e;return i = i >= 10 ? 10 : i >= 5 ? 5 : i >= 3 ? 3 : i >= 2 ? 2 : 1, e * i; - } }), o.control.scale = function (t) { - return new o.Control.Scale(t); - }, o.Control.Layers = o.Control.extend({ options: { collapsed: !0, position: "topright", autoZIndex: !0 }, initialize: function initialize(t, e, i) { - o.setOptions(this, i), this._layers = {}, this._lastZIndex = 0, this._handlingClick = !1;for (var n in t) { - this._addLayer(t[n], n); - }for (n in e) { - this._addLayer(e[n], n, !0); - } - }, onAdd: function onAdd(t) { - return this._initLayout(), this._update(), t.on("layeradd", this._onLayerChange, this).on("layerremove", this._onLayerChange, this), this._container; - }, onRemove: function onRemove(t) { - t.off("layeradd", this._onLayerChange, this).off("layerremove", this._onLayerChange, this); - }, addBaseLayer: function addBaseLayer(t, e) { - return this._addLayer(t, e), this._update(), this; - }, addOverlay: function addOverlay(t, e) { - return this._addLayer(t, e, !0), this._update(), this; - }, removeLayer: function removeLayer(t) { - var e = o.stamp(t);return delete this._layers[e], this._update(), this; - }, _initLayout: function _initLayout() { - var t = "leaflet-control-layers", - e = this._container = o.DomUtil.create("div", t);e.setAttribute("aria-haspopup", !0), o.Browser.touch ? o.DomEvent.on(e, "click", o.DomEvent.stopPropagation) : o.DomEvent.disableClickPropagation(e).disableScrollPropagation(e);var i = this._form = o.DomUtil.create("form", t + "-list");if (this.options.collapsed) { - o.Browser.android || o.DomEvent.on(e, "mouseover", this._expand, this).on(e, "mouseout", this._collapse, this);var n = this._layersLink = o.DomUtil.create("a", t + "-toggle", e);n.href = "#", n.title = "Layers", o.Browser.touch ? o.DomEvent.on(n, "click", o.DomEvent.stop).on(n, "click", this._expand, this) : o.DomEvent.on(n, "focus", this._expand, this), o.DomEvent.on(i, "click", function () { - setTimeout(o.bind(this._onInputClick, this), 0); - }, this), this._map.on("click", this._collapse, this); - } else this._expand();this._baseLayersList = o.DomUtil.create("div", t + "-base", i), this._separator = o.DomUtil.create("div", t + "-separator", i), this._overlaysList = o.DomUtil.create("div", t + "-overlays", i), e.appendChild(i); - }, _addLayer: function _addLayer(t, e, i) { - var n = o.stamp(t);this._layers[n] = { layer: t, name: e, overlay: i }, this.options.autoZIndex && t.setZIndex && (this._lastZIndex++, t.setZIndex(this._lastZIndex)); - }, _update: function _update() { - if (this._container) { - this._baseLayersList.innerHTML = "", this._overlaysList.innerHTML = "";var t, - e, - i = !1, - n = !1;for (t in this._layers) { - e = this._layers[t], this._addItem(e), n = n || e.overlay, i = i || !e.overlay; - }this._separator.style.display = n && i ? "" : "none"; - } - }, _onLayerChange: function _onLayerChange(t) { - var e = this._layers[o.stamp(t.layer)];if (e) { - this._handlingClick || this._update();var i = e.overlay ? "layeradd" === t.type ? "overlayadd" : "overlayremove" : "layeradd" === t.type ? "baselayerchange" : null;i && this._map.fire(i, e); - } - }, _createRadioElement: function _createRadioElement(t, i) { - var n = ' t; t++) { - e = n[t], i = this._layers[e.layerId], e.checked && !this._map.hasLayer(i.layer) ? this._map.addLayer(i.layer) : !e.checked && this._map.hasLayer(i.layer) && this._map.removeLayer(i.layer); - }this._handlingClick = !1, this._refocusOnMap(); - }, _expand: function _expand() { - o.DomUtil.addClass(this._container, "leaflet-control-layers-expanded"); - }, _collapse: function _collapse() { - this._container.className = this._container.className.replace(" leaflet-control-layers-expanded", ""); - } }), o.control.layers = function (t, e, i) { - return new o.Control.Layers(t, e, i); - }, o.PosAnimation = o.Class.extend({ includes: o.Mixin.Events, run: function run(t, e, i, n) { - this.stop(), this._el = t, this._inProgress = !0, this._newPos = e, this.fire("start"), t.style[o.DomUtil.TRANSITION] = "all " + (i || .25) + "s cubic-bezier(0,0," + (n || .5) + ",1)", o.DomEvent.on(t, o.DomUtil.TRANSITION_END, this._onTransitionEnd, this), o.DomUtil.setPosition(t, e), o.Util.falseFn(t.offsetWidth), this._stepTimer = setInterval(o.bind(this._onStep, this), 50); - }, stop: function stop() { - this._inProgress && (o.DomUtil.setPosition(this._el, this._getPos()), this._onTransitionEnd(), o.Util.falseFn(this._el.offsetWidth)); - }, _onStep: function _onStep() { - var t = this._getPos();return t ? (this._el._leaflet_pos = t, void this.fire("step")) : void this._onTransitionEnd(); - }, _transformRe: /([-+]?(?:\d*\.)?\d+)\D*, ([-+]?(?:\d*\.)?\d+)\D*\)/, _getPos: function _getPos() { - var e, - i, - n, - s = this._el, - a = t.getComputedStyle(s);if (o.Browser.any3d) { - if (n = a[o.DomUtil.TRANSFORM].match(this._transformRe), !n) return;e = parseFloat(n[1]), i = parseFloat(n[2]); - } else e = parseFloat(a.left), i = parseFloat(a.top);return new o.Point(e, i, !0); - }, _onTransitionEnd: function _onTransitionEnd() { - o.DomEvent.off(this._el, o.DomUtil.TRANSITION_END, this._onTransitionEnd, this), this._inProgress && (this._inProgress = !1, this._el.style[o.DomUtil.TRANSITION] = "", this._el._leaflet_pos = this._newPos, clearInterval(this._stepTimer), this.fire("step").fire("end")); - } }), o.Map.include({ setView: function setView(t, e, n) { - if (e = e === i ? this._zoom : this._limitZoom(e), t = this._limitCenter(o.latLng(t), e, this.options.maxBounds), n = n || {}, this._panAnim && this._panAnim.stop(), this._loaded && !n.reset && n !== !0) { - n.animate !== i && (n.zoom = o.extend({ animate: n.animate }, n.zoom), n.pan = o.extend({ animate: n.animate }, n.pan));var s = this._zoom !== e ? this._tryAnimatedZoom && this._tryAnimatedZoom(t, e, n.zoom) : this._tryAnimatedPan(t, n.pan);if (s) return clearTimeout(this._sizeTimer), this; - }return this._resetView(t, e), this; - }, panBy: function panBy(t, e) { - if (t = o.point(t).round(), e = e || {}, !t.x && !t.y) return this;if (this._panAnim || (this._panAnim = new o.PosAnimation(), this._panAnim.on({ step: this._onPanTransitionStep, end: this._onPanTransitionEnd }, this)), e.noMoveStart || this.fire("movestart"), e.animate !== !1) { - o.DomUtil.addClass(this._mapPane, "leaflet-pan-anim");var i = this._getMapPanePos().subtract(t);this._panAnim.run(this._mapPane, i, e.duration || .25, e.easeLinearity); - } else this._rawPanBy(t), this.fire("move").fire("moveend");return this; - }, _onPanTransitionStep: function _onPanTransitionStep() { - this.fire("move"); - }, _onPanTransitionEnd: function _onPanTransitionEnd() { - o.DomUtil.removeClass(this._mapPane, "leaflet-pan-anim"), this.fire("moveend"); - }, _tryAnimatedPan: function _tryAnimatedPan(t, e) { - var i = this._getCenterOffset(t)._floor();return (e && e.animate) === !0 || this.getSize().contains(i) ? (this.panBy(i, e), !0) : !1; - } }), o.PosAnimation = o.DomUtil.TRANSITION ? o.PosAnimation : o.PosAnimation.extend({ run: function run(t, e, i, n) { - this.stop(), this._el = t, this._inProgress = !0, this._duration = i || .25, this._easeOutPower = 1 / Math.max(n || .5, .2), this._startPos = o.DomUtil.getPosition(t), this._offset = e.subtract(this._startPos), this._startTime = +new Date(), this.fire("start"), this._animate(); - }, stop: function stop() { - this._inProgress && (this._step(), this._complete()); - }, _animate: function _animate() { - this._animId = o.Util.requestAnimFrame(this._animate, this), this._step(); - }, _step: function _step() { - var t = +new Date() - this._startTime, - e = 1e3 * this._duration;e > t ? this._runFrame(this._easeOut(t / e)) : (this._runFrame(1), this._complete()); - }, _runFrame: function _runFrame(t) { - var e = this._startPos.add(this._offset.multiplyBy(t));o.DomUtil.setPosition(this._el, e), this.fire("step"); - }, _complete: function _complete() { - o.Util.cancelAnimFrame(this._animId), this._inProgress = !1, this.fire("end"); - }, _easeOut: function _easeOut(t) { - return 1 - Math.pow(1 - t, this._easeOutPower); - } }), o.Map.mergeOptions({ zoomAnimation: !0, zoomAnimationThreshold: 4 }), o.DomUtil.TRANSITION && o.Map.addInitHook(function () { - this._zoomAnimated = this.options.zoomAnimation && o.DomUtil.TRANSITION && o.Browser.any3d && !o.Browser.android23 && !o.Browser.mobileOpera, this._zoomAnimated && o.DomEvent.on(this._mapPane, o.DomUtil.TRANSITION_END, this._catchTransitionEnd, this); - }), o.Map.include(o.DomUtil.TRANSITION ? { _catchTransitionEnd: function _catchTransitionEnd(t) { - this._animatingZoom && t.propertyName.indexOf("transform") >= 0 && this._onZoomTransitionEnd(); - }, _nothingToAnimate: function _nothingToAnimate() { - return !this._container.getElementsByClassName("leaflet-zoom-animated").length; - }, _tryAnimatedZoom: function _tryAnimatedZoom(t, e, i) { - if (this._animatingZoom) return !0;if (i = i || {}, !this._zoomAnimated || i.animate === !1 || this._nothingToAnimate() || Math.abs(e - this._zoom) > this.options.zoomAnimationThreshold) return !1;var n = this.getZoomScale(e), - o = this._getCenterOffset(t)._divideBy(1 - 1 / n), - s = this._getCenterLayerPoint()._add(o);return i.animate === !0 || this.getSize().contains(o) ? (this.fire("movestart").fire("zoomstart"), this._animateZoom(t, e, s, n, null, !0), !0) : !1; - }, _animateZoom: function _animateZoom(t, e, i, n, s, a, r) { - r || (this._animatingZoom = !0), o.DomUtil.addClass(this._mapPane, "leaflet-zoom-anim"), this._animateToCenter = t, this._animateToZoom = e, o.Draggable && (o.Draggable._disabled = !0), o.Util.requestAnimFrame(function () { - this.fire("zoomanim", { center: t, zoom: e, origin: i, scale: n, delta: s, backwards: a }), setTimeout(o.bind(this._onZoomTransitionEnd, this), 250); - }, this); - }, _onZoomTransitionEnd: function _onZoomTransitionEnd() { - this._animatingZoom && (this._animatingZoom = !1, o.DomUtil.removeClass(this._mapPane, "leaflet-zoom-anim"), o.Util.requestAnimFrame(function () { - this._resetView(this._animateToCenter, this._animateToZoom, !0, !0), o.Draggable && (o.Draggable._disabled = !1); - }, this)); - } } : {}), o.TileLayer.include({ _animateZoom: function _animateZoom(t) { - this._animating || (this._animating = !0, this._prepareBgBuffer());var e = this._bgBuffer, - i = o.DomUtil.TRANSFORM, - n = t.delta ? o.DomUtil.getTranslateString(t.delta) : e.style[i], - s = o.DomUtil.getScaleString(t.scale, t.origin);e.style[i] = t.backwards ? s + " " + n : n + " " + s; - }, _endZoomAnim: function _endZoomAnim() { - var t = this._tileContainer, - e = this._bgBuffer;t.style.visibility = "", t.parentNode.appendChild(t), o.Util.falseFn(e.offsetWidth);var i = this._map.getZoom();(i > this.options.maxZoom || i < this.options.minZoom) && this._clearBgBuffer(), this._animating = !1; - }, _clearBgBuffer: function _clearBgBuffer() { - var t = this._map;!t || t._animatingZoom || t.touchZoom._zooming || (this._bgBuffer.innerHTML = "", this._bgBuffer.style[o.DomUtil.TRANSFORM] = ""); - }, _prepareBgBuffer: function _prepareBgBuffer() { - var t = this._tileContainer, - e = this._bgBuffer, - i = this._getLoadedTilesPercentage(e), - n = this._getLoadedTilesPercentage(t);return e && i > .5 && .5 > n ? (t.style.visibility = "hidden", void this._stopLoadingImages(t)) : (e.style.visibility = "hidden", e.style[o.DomUtil.TRANSFORM] = "", this._tileContainer = e, e = this._bgBuffer = t, this._stopLoadingImages(e), void clearTimeout(this._clearBgBufferTimer)); - }, _getLoadedTilesPercentage: function _getLoadedTilesPercentage(t) { - var e, - i, - n = t.getElementsByTagName("img"), - o = 0;for (e = 0, i = n.length; i > e; e++) { - n[e].complete && o++; - }return o / i; - }, _stopLoadingImages: function _stopLoadingImages(t) { - var e, - i, - n, - s = Array.prototype.slice.call(t.getElementsByTagName("img"));for (e = 0, i = s.length; i > e; e++) { - n = s[e], n.complete || (n.onload = o.Util.falseFn, n.onerror = o.Util.falseFn, n.src = o.Util.emptyImageUrl, n.parentNode.removeChild(n)); - } - } }), o.Map.include({ _defaultLocateOptions: { watch: !1, setView: !1, maxZoom: 1 / 0, timeout: 1e4, maximumAge: 0, enableHighAccuracy: !1 }, locate: function locate(t) { - if (t = this._locateOptions = o.extend(this._defaultLocateOptions, t), !navigator.geolocation) return this._handleGeolocationError({ code: 0, message: "Geolocation not supported." }), this;var e = o.bind(this._handleGeolocationResponse, this), - i = o.bind(this._handleGeolocationError, this);return t.watch ? this._locationWatchId = navigator.geolocation.watchPosition(e, i, t) : navigator.geolocation.getCurrentPosition(e, i, t), this; - }, stopLocate: function stopLocate() { - return navigator.geolocation && navigator.geolocation.clearWatch(this._locationWatchId), this._locateOptions && (this._locateOptions.setView = !1), this; - }, _handleGeolocationError: function _handleGeolocationError(t) { - var e = t.code, - i = t.message || (1 === e ? "permission denied" : 2 === e ? "position unavailable" : "timeout");this._locateOptions.setView && !this._loaded && this.fitWorld(), this.fire("locationerror", { code: e, message: "Geolocation error: " + i + "." }); - }, _handleGeolocationResponse: function _handleGeolocationResponse(t) { - var e = t.coords.latitude, - i = t.coords.longitude, - n = new o.LatLng(e, i), - s = 180 * t.coords.accuracy / 40075017, - a = s / Math.cos(o.LatLng.DEG_TO_RAD * e), - r = o.latLngBounds([e - s, i - a], [e + s, i + a]), - h = this._locateOptions;if (h.setView) { - var l = Math.min(this.getBoundsZoom(r), h.maxZoom);this.setView(n, l); - }var u = { latlng: n, bounds: r, timestamp: t.timestamp };for (var c in t.coords) { - "number" == typeof t.coords[c] && (u[c] = t.coords[c]); - }this.fire("locationfound", u); - } }); - }(window, document); - } - }; -}); -//# sourceMappingURL=leaflet.js.map diff --git a/dist/libs/leaflet.js.map b/dist/libs/leaflet.js.map deleted file mode 100644 index 2f5ce54..0000000 --- a/dist/libs/leaflet.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/libs/leaflet.js"],"names":["t","e","i","n","L","o","version","module","exports","define","amd","noConflict","Util","extend","s","Array","prototype","slice","call","arguments","length","hasOwnProperty","bind","apply","stamp","invokeEach","concat","limitExecByInterval","a","setTimeout","falseFn","formatNum","Math","pow","round","trim","replace","splitWords","split","setOptions","options","getParamString","push","encodeURIComponent","toUpperCase","indexOf","join","template","Error","isArray","Object","toString","emptyImageUrl","Date","max","requestAnimationFrame","cancelAnimationFrame","clearTimeout","requestAnimFrame","r","cancelAnimFrame","Class","initialize","_initHooks","callInitHooks","constructor","statics","includes","__super__","_initHooksCalled","include","mergeOptions","addInitHook","Mixin","Events","addEventListener","h","l","u","c","d","p","action","context","hasEventListeners","removeEventListener","clearAllEventListeners","_","m","splice","fireEvent","type","target","addOneTimeEventListener","on","off","once","fire","navigator","userAgent","toLowerCase","search","orientation","PointerEvent","MSPointerEvent","pointerEnabled","f","devicePixelRatio","matchMedia","matches","g","documentElement","v","style","y","WebKitCSSMatrix","P","x","L_DISABLE_3D","w","L_NO_TOUCH","DocumentTouch","Browser","ie","ielt9","webkit","gecko","opera","android","android23","chrome","ie3d","webkit3d","gecko3d","opera3d","any3d","mobile","mobileWebkit","mobileWebkit3d","mobileOpera","touch","msPointer","pointer","retina","Point","clone","add","_add","point","subtract","_subtract","divideBy","_divideBy","multiplyBy","_multiplyBy","_round","floor","_floor","distanceTo","sqrt","equals","contains","abs","Bounds","min","getCenter","getBottomLeft","getTopRight","getSize","bounds","intersects","isValid","Transformation","_a","_b","_c","_d","transform","_transform","untransform","DomUtil","get","getElementById","getStyle","currentStyle","defaultView","getComputedStyle","getViewportOffset","body","offsetTop","offsetLeft","parseInt","offsetParent","scrollTop","scrollLeft","getBoundingClientRect","left","clientLeft","top","parentNode","documentIsLtr","_docIsLtrCached","_docIsLtr","create","createElement","className","appendChild","hasClass","classList","_getClass","RegExp","test","addClass","_setClass","removeClass","remove","baseVal","setOpacity","opacity","filters","item","Enabled","Opacity","filter","testProp","getTranslateString","getScaleString","setPosition","_leaflet_pos","TRANSFORM","getPosition","TRANSITION","TRANSITION_END","disableTextSelection","DomEvent","preventDefault","enableTextSelection","_userSelect","disableImageDrag","enableImageDrag","LatLng","parseFloat","isNaN","lat","lng","alt","DEG_TO_RAD","PI","RAD_TO_DEG","MAX_MARGIN","latLng","sin","cos","atan2","wrap","lon","LatLngBounds","latLngBounds","_southWest","_northEast","pad","getSouthWest","getNorthEast","getNorthWest","getNorth","getWest","getSouthEast","getSouth","getEast","toBBoxString","Projection","SphericalMercator","MAX_LATITUDE","project","log","tan","unproject","atan","exp","LonLat","CRS","latLngToPoint","projection","scale","transformation","pointToLatLng","Simple","EPSG3857","code","EPSG900913","EPSG4326","Map","crs","fadeAnimation","trackResize","markerZoomAnimation","_initContainer","_initLayout","_onResize","_initEvents","maxBounds","setMaxBounds","center","zoom","setView","reset","_handlers","_layers","_zoomBoundLayers","_tileLayersNum","_addLayers","layers","getZoom","_resetView","_limitZoom","setZoom","_loaded","_zoom","zoomIn","zoomOut","setZoomAround","getZoomScale","latLngToContainerPoint","containerPointToLatLng","fitBounds","getBounds","paddingTopLeft","padding","paddingBottomRight","getBoundsZoom","maxZoom","fitWorld","panTo","pan","panBy","_rawPanBy","_panInsideMaxBounds","panInsideBounds","_limitCenter","addLayer","minZoom","_updateZoomLevels","zoomAnimation","TileLayer","_tileLayersToLoad","_onTileLayerLoad","_layerAdd","removeLayer","onRemove","layer","hasLayer","eachLayer","invalidateSize","animate","_sizeChanged","_initialCenter","debounceMoveend","_sizeTimer","oldSize","newSize","addHandler","enable","_container","_leaflet","_clearPanes","_clearControlPos","_clearHandlers","_checkIfLoaded","_moved","layerPointToLatLng","_getCenterLayerPoint","getPixelBounds","getMinZoom","_layersMinZoom","getMaxZoom","_layersMaxZoom","_size","clientWidth","clientHeight","_getTopLeftPoint","getPixelOrigin","_initialTopLeftPoint","getPanes","_panes","getContainer","getScaleZoom","LN2","latLngToLayerPoint","containerPointToLayerPoint","_getMapPanePos","layerPointToContainerPoint","mouseEventToContainerPoint","getMousePosition","mouseEventToLayerPoint","mouseEventToLatLng","position","_initPanes","_initControlPos","_mapPane","mapPane","_createPane","_tilePane","tilePane","objectsPane","shadowPane","overlayPane","markerPane","popupPane","removeChild","_getNewTopLeftPoint","hard","_getZoomSpan","_onMouseClick","_fireMouseEvent","_resizeRequest","_simulated","dragging","moved","boxZoom","_skipped","latlng","layerPoint","containerPoint","originalEvent","disable","whenReady","onAdd","_latLngToNewLayerPoint","_getCenterOffset","_getBoundsOffset","_limitOffset","_rebound","ceil","map","Mercator","R_MINOR","R_MAJOR","EPSG3395","tileSize","subdomains","errorTileUrl","attribution","zoomOffset","unloadInvisibleTiles","updateWhenIdle","detectRetina","_url","_map","_animated","_zoomAnimated","viewreset","_reset","moveend","_update","zoomanim","_animateZoom","zoomend","_endZoomAnim","_limitedUpdate","addTo","bringToFront","_setAutoZIndex","bringToBack","insertBefore","firstChild","getAttribution","_updateOpacity","setZIndex","zIndex","_updateZIndex","setUrl","redraw","children","isFinite","_tiles","_bgBuffer","_tileContainer","tile","_tilesToLoad","reuseTiles","_unusedTiles","innerHTML","_clearBgBuffer","_getTileSize","maxNativeZoom","_addTilesFromCenterOut","_removeOtherTiles","_tileShouldBeLoaded","sort","createDocumentFragment","_addTile","continuousWorld","_getWrapTileNum","noWrap","_removeTile","url","src","onload","_getTilePos","_getTile","_loadTile","_getZoomForUrl","zoomReverse","getTileUrl","_getSubdomain","z","_adjustTilePoint","tms","pop","_resetTile","_createTile","width","height","galleryimg","onselectstart","onmousemove","WebkitBackfaceVisibility","_layer","_tileOnLoad","onerror","_tileOnError","_tileLoaded","_clearBgBufferTimer","tileLayer","WMS","defaultWmsParams","service","request","styles","format","transparent","wmsParams","_crs","_wmsVersion","setParams","wms","Canvas","async","_redrawTile","drawTile","_tilePoint","tileDrawn","canvas","ImageOverlay","_bounds","_image","_initImage","_onImageLoad","imageOverlay","Icon","createIcon","_createIcon","createShadow","_getIconUrl","tagName","_createImg","_setIconStyles","shadowAnchor","iconAnchor","marginLeft","marginTop","icon","Default","iconSize","popupAnchor","shadowSize","imagePath","getElementsByTagName","match","Marker","title","clickable","draggable","keyboard","zIndexOffset","riseOnHover","riseOffset","_latlng","update","_initIcon","_removeIcon","_removeShadow","getLatLng","setLatLng","setZIndexOffset","setIcon","_popup","bindPopup","_icon","_setPos","tabIndex","_initInteraction","_bringToFront","_resetZIndex","_shadow","_zIndex","_onKeyPress","Handler","MarkerDrag","stopPropagation","_enabled","keyCode","marker","DivIcon","html","bgPos","backgroundPosition","divIcon","closePopupOnClick","Popup","minWidth","maxWidth","autoPan","closeButton","offset","autoPanPadding","keepInView","_source","_isOpen","_getEvents","popup","openOn","openPopup","offsetWidth","_updatePosition","_adjustPan","getContent","_content","setContent","visibility","_updateContent","_updateLayout","_zoomAnimation","closeOnClick","preclick","_close","closePopup","_closeButton","href","disableClickPropagation","_onCloseButtonClick","_wrapper","_contentNode","disableScrollPropagation","_tipContainer","_tip","hasChildNodes","whiteSpace","offsetHeight","maxHeight","_containerWidth","_containerBottom","_containerLeft","bottom","autoPanPaddingTopLeft","autoPanPaddingBottomRight","stop","togglePopup","_popupHandlersAdded","_movePopup","setPopupContent","unbindPopup","getPopup","LayerGroup","getLayerId","clearLayers","invoke","getLayer","getLayers","layerGroup","FeatureGroup","EVENTS","_propagateEvent","_popupContent","_popupOptions","setStyle","featureGroup","Path","CLIP_PADDING","outerWidth","outerHeight","stroke","color","dashArray","lineCap","lineJoin","weight","fill","fillColor","fillOpacity","_initElements","projectLatlngs","_updatePath","_pathRoot","vml","_stroke","_fill","_updateStyle","_updatePathViewport","_pathViewport","SVG_NS","svg","createElementNS","createSVGRect","SVG","lastChild","getPathString","_createElement","_initPathRoot","_initPath","_initStyle","_path","setAttribute","pointerEvents","removeAttribute","_animatePathZoom","_endPathZoom","_updateSvgViewport","_pathZooming","_openPopup","_latlngs","behavior","adj","VML","namespaces","coordsize","stroked","filled","endcap","dashStyle","joinstyle","display","getContext","L_PREFER_CANVAS","CANVAS","_requestUpdate","_onClick","_onMouseMove","_updateRequest","_fireMapMoveEnd","_ctx","_canvasCtx","lineWidth","strokeStyle","fillStyle","_drawPath","beginPath","_parts","Polygon","closePath","_checkIfEmpty","save","globalAlpha","fillRule","restore","_containsPoint","_animatingZoom","cursor","_mouseInside","_updateCanvasViewport","translate","LineUtil","simplify","_reducePoints","_simplifyDP","pointToSegmentDistance","_sqClosestPointOnSegment","closestPointOnSegment","Uint8Array","_simplifyDPStep","_sqDist","clipSegment","_lastCode","_getBitCode","_getEdgeIntersection","Polyline","_convertLatLngs","smoothFactor","noClip","_originalPoints","_getPathPartStr","getLatLngs","setLatLngs","addLatLng","spliceLatLngs","closestLayerPoint","distance","_clipPoints","_simplifyPoints","polyline","PolyUtil","clipPolygon","_code","_initWithHoles","_holes","_holePoints","polygon","_options","MultiPolyline","MultiPolygon","multiPolyline","multiPolygon","Rectangle","_boundsToLatLngs","setBounds","rectangle","Circle","_mRadius","setRadius","_getLngRadius","_point","_radius","getRadius","_getLatRadius","circle","CircleMarker","radius","circleMarker","arc","GeoJSON","addData","features","geometries","geometry","coordinates","geometryToLayer","pointToLayer","coordsToLatLng","feature","asFeature","defaultOptions","resetStyle","onEachFeature","_setLayerStyle","coordsToLatLngs","properties","latLngToCoords","latLngsToCoords","getFeature","toGeoJSON","geoJson","addListener","_getEvent","addPointerListener","addDoubleTapListener","_checkMouse","_filterClick","attachEvent","removeListener","removePointerListener","removeDoubleTapListener","detachEvent","cancelBubble","Draggable","START","_fakeStop","returnValue","clientX","clientY","clientTop","getWheelDelta","wheelDelta","detail","_skipEvents","relatedTarget","event","callee","caller","Event","timeStamp","_lastClick","_simulatedClick","END","mousedown","touchstart","pointerdown","MSPointerDown","MOVE","_element","_dragStartTarget","_onDown","shiftKey","which","button","touches","_disabled","_moving","_startPoint","_startPos","_newPos","_onMove","_onUp","_lastTarget","srcElement","_animRequest","addHooks","removeHooks","enabled","inertia","inertiaDeceleration","inertiaMaxSpeed","inertiaThreshold","easeLinearity","worldCopyJump","Drag","_draggable","dragstart","_onDragStart","drag","_onDrag","dragend","_onDragEnd","_onPreDrag","_onViewReset","_panAnim","_positions","_times","_lastTime","_lastPos","shift","_initialWorldOffset","_worldWidth","duration","noMoveStart","doubleClickZoom","DoubleClickZoom","_onDoubleClick","scrollWheelZoom","ScrollWheelZoom","_onWheelScroll","_delta","_lastMousePos","_startTime","_timer","_performZoom","_touchstart","_touchend","pointerId","now","POINTER_CANCEL","POINTER_DOWN","POINTER_MOVE","POINTER_UP","_pointers","_pointerDocumentListener","addPointerListenerStart","addPointerListenerEnd","addPointerListenerMove","pointerType","MSPOINTER_TYPE_MOUSE","changedTouches","buttons","touchZoom","bounceAtZoomLimits","TouchZoom","_onTouchStart","_zooming","_startCenter","_startDist","_centerOffset","_onTouchMove","_onTouchEnd","_scale","_updateOnMove","_getScaleOrigin","tap","tapTolerance","Tap","_fireClick","_holdTimeout","_isTapValid","_simulateEvent","createEvent","initMouseEvent","screenX","screenY","dispatchEvent","BoxZoom","_pane","_onMouseDown","_startLayerPoint","_onMouseUp","_onKeyDown","_box","_finish","boxZoomBounds","keyboardPanOffset","keyboardZoomOffset","Keyboard","keyCodes","right","down","up","_setPanOffset","_setZoomOffset","_onFocus","_onBlur","_addHooks","_removeHooks","_focused","focus","scrollTo","_panKeys","_zoomKeys","_inProgress","_marker","Control","removeControl","addControl","_controlCorners","removeFrom","_refocusOnMap","control","_controlContainer","Zoom","zoomInText","zoomInTitle","zoomOutText","zoomOutTitle","_zoomInButton","_createButton","_zoomIn","_zoomOutButton","_zoomOut","_updateDisabled","zoomControl","Attribution","prefix","_attributions","addAttribution","_onLayerAdd","_onLayerRemove","setPrefix","removeAttribution","attributionControl","Scale","metric","imperial","_addScales","_mScale","_iScale","_updateScales","_updateMetric","_updateImperial","_getRoundNum","_getScaleWidth","Layers","collapsed","autoZIndex","_lastZIndex","_handlingClick","_addLayer","_onLayerChange","addBaseLayer","addOverlay","_form","_expand","_collapse","_layersLink","_onInputClick","_baseLayersList","_separator","_overlaysList","name","overlay","_addItem","_createRadioElement","defaultChecked","layerId","checked","PosAnimation","run","_el","_onTransitionEnd","_stepTimer","setInterval","_onStep","_getPos","_transformRe","clearInterval","_tryAnimatedZoom","_tryAnimatedPan","step","_onPanTransitionStep","end","_onPanTransitionEnd","_duration","_easeOutPower","_offset","_animate","_step","_complete","_animId","_runFrame","_easeOut","zoomAnimationThreshold","_catchTransitionEnd","propertyName","_onZoomTransitionEnd","_nothingToAnimate","getElementsByClassName","_animateToCenter","_animateToZoom","origin","delta","backwards","_animating","_prepareBgBuffer","_getLoadedTilesPercentage","_stopLoadingImages","complete","_defaultLocateOptions","watch","timeout","maximumAge","enableHighAccuracy","locate","_locateOptions","geolocation","_handleGeolocationError","message","_handleGeolocationResponse","_locationWatchId","watchPosition","getCurrentPosition","stopLocate","clearWatch","coords","latitude","longitude","accuracy","timestamp","window","document"],"mappings":"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","file":"leaflet.js","sourcesContent":["/*\n Leaflet, a JavaScript library for mobile-friendly interactive maps. http://leafletjs.com\n (c) 2010-2013, Vladimir Agafonkin\n (c) 2010-2011, CloudMade\n*/\n!function(t,e,i){var n=t.L,o={};o.version=\"0.7.7\",\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=o:\"function\"==typeof define&&define.amd&&define(o),o.noConflict=function(){return t.L=n,this},t.L=o,o.Util={extend:function(t){var e,i,n,o,s=Array.prototype.slice.call(arguments,1);for(i=0,n=s.length;n>i;i++){o=s[i]||{};for(e in o)o.hasOwnProperty(e)&&(t[e]=o[e])}return t},bind:function(t,e){var i=arguments.length>2?Array.prototype.slice.call(arguments,2):null;return function(){return t.apply(e,i||arguments)}},stamp:function(){var t=0,e=\"_leaflet_id\";return function(i){return i[e]=i[e]||++t,i[e]}}(),invokeEach:function(t,e,i){var n,o;if(\"object\"==typeof t){o=Array.prototype.slice.call(arguments,3);for(n in t)e.apply(i,[n,t[n]].concat(o));return!0}return!1},limitExecByInterval:function(t,e,i){var n,o;return function s(){var a=arguments;return n?void(o=!0):(n=!0,setTimeout(function(){n=!1,o&&(s.apply(i,a),o=!1)},e),void t.apply(i,a))}},falseFn:function(){return!1},formatNum:function(t,e){var i=Math.pow(10,e||5);return Math.round(t*i)/i},trim:function(t){return t.trim?t.trim():t.replace(/^\\s+|\\s+$/g,\"\")},splitWords:function(t){return o.Util.trim(t).split(/\\s+/)},setOptions:function(t,e){return t.options=o.extend({},t.options,e),t.options},getParamString:function(t,e,i){var n=[];for(var o in t)n.push(encodeURIComponent(i?o.toUpperCase():o)+\"=\"+encodeURIComponent(t[o]));return(e&&-1!==e.indexOf(\"?\")?\"&\":\"?\")+n.join(\"&\")},template:function(t,e){return t.replace(/\\{ *([\\w_]+) *\\}/g,function(t,n){var o=e[n];if(o===i)throw new Error(\"No value provided for variable \"+t);return\"function\"==typeof o&&(o=o(e)),o})},isArray:Array.isArray||function(t){return\"[object Array]\"===Object.prototype.toString.call(t)},emptyImageUrl:\"data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=\"},function(){function e(e){var i,n,o=[\"webkit\",\"moz\",\"o\",\"ms\"];for(i=0;it;t++)n._initHooks[t].call(this)}},e},o.Class.include=function(t){o.extend(this.prototype,t)},o.Class.mergeOptions=function(t){o.extend(this.prototype.options,t)},o.Class.addInitHook=function(t){var e=Array.prototype.slice.call(arguments,1),i=\"function\"==typeof t?t:function(){this[t].apply(this,e)};this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(i)};var s=\"_leaflet_events\";o.Mixin={},o.Mixin.Events={addEventListener:function(t,e,i){if(o.Util.invokeEach(t,this.addEventListener,this,e,i))return this;var n,a,r,h,l,u,c,d=this[s]=this[s]||{},p=i&&i!==this&&o.stamp(i);for(t=o.Util.splitWords(t),n=0,a=t.length;a>n;n++)r={action:e,context:i||this},h=t[n],p?(l=h+\"_idx\",u=l+\"_len\",c=d[l]=d[l]||{},c[p]||(c[p]=[],d[u]=(d[u]||0)+1),c[p].push(r)):(d[h]=d[h]||[],d[h].push(r));return this},hasEventListeners:function(t){var e=this[s];return!!e&&(t in e&&e[t].length>0||t+\"_idx\"in e&&e[t+\"_idx_len\"]>0)},removeEventListener:function(t,e,i){if(!this[s])return this;if(!t)return this.clearAllEventListeners();if(o.Util.invokeEach(t,this.removeEventListener,this,e,i))return this;var n,a,r,h,l,u,c,d,p,_=this[s],m=i&&i!==this&&o.stamp(i);for(t=o.Util.splitWords(t),n=0,a=t.length;a>n;n++)if(r=t[n],u=r+\"_idx\",c=u+\"_len\",d=_[u],e){if(h=m&&d?d[m]:_[r]){for(l=h.length-1;l>=0;l--)h[l].action!==e||i&&h[l].context!==i||(p=h.splice(l,1),p[0].action=o.Util.falseFn);i&&d&&0===h.length&&(delete d[m],_[c]--)}}else delete _[r],delete _[u],delete _[c];return this},clearAllEventListeners:function(){return delete this[s],this},fireEvent:function(t,e){if(!this.hasEventListeners(t))return this;var i,n,a,r,h,l=o.Util.extend({},e,{type:t,target:this}),u=this[s];if(u[t])for(i=u[t].slice(),n=0,a=i.length;a>n;n++)i[n].action.call(i[n].context,l);r=u[t+\"_idx\"];for(h in r)if(i=r[h].slice())for(n=0,a=i.length;a>n;n++)i[n].action.call(i[n].context,l);return this},addOneTimeEventListener:function(t,e,i){if(o.Util.invokeEach(t,this.addOneTimeEventListener,this,e,i))return this;var n=o.bind(function(){this.removeEventListener(t,e,i).removeEventListener(t,n,i)},this);return this.addEventListener(t,e,i).addEventListener(t,n,i)}},o.Mixin.Events.on=o.Mixin.Events.addEventListener,o.Mixin.Events.off=o.Mixin.Events.removeEventListener,o.Mixin.Events.once=o.Mixin.Events.addOneTimeEventListener,o.Mixin.Events.fire=o.Mixin.Events.fireEvent,function(){var n=\"ActiveXObject\"in t,s=n&&!e.addEventListener,a=navigator.userAgent.toLowerCase(),r=-1!==a.indexOf(\"webkit\"),h=-1!==a.indexOf(\"chrome\"),l=-1!==a.indexOf(\"phantom\"),u=-1!==a.indexOf(\"android\"),c=-1!==a.search(\"android [23]\"),d=-1!==a.indexOf(\"gecko\"),p=typeof orientation!=i+\"\",_=!t.PointerEvent&&t.MSPointerEvent,m=t.PointerEvent&&t.navigator.pointerEnabled||_,f=\"devicePixelRatio\"in t&&t.devicePixelRatio>1||\"matchMedia\"in t&&t.matchMedia(\"(min-resolution:144dpi)\")&&t.matchMedia(\"(min-resolution:144dpi)\").matches,g=e.documentElement,v=n&&\"transition\"in g.style,y=\"WebKitCSSMatrix\"in t&&\"m11\"in new t.WebKitCSSMatrix&&!c,P=\"MozPerspective\"in g.style,L=\"OTransition\"in g.style,x=!t.L_DISABLE_3D&&(v||y||P||L)&&!l,w=!t.L_NO_TOUCH&&!l&&(m||\"ontouchstart\"in t||t.DocumentTouch&&e instanceof t.DocumentTouch);o.Browser={ie:n,ielt9:s,webkit:r,gecko:d&&!r&&!t.opera&&!n,android:u,android23:c,chrome:h,ie3d:v,webkit3d:y,gecko3d:P,opera3d:L,any3d:x,mobile:p,mobileWebkit:p&&r,mobileWebkit3d:p&&y,mobileOpera:p&&t.opera,touch:w,msPointer:_,pointer:m,retina:f}}(),o.Point=function(t,e,i){this.x=i?Math.round(t):t,this.y=i?Math.round(e):e},o.Point.prototype={clone:function(){return new o.Point(this.x,this.y)},add:function(t){return this.clone()._add(o.point(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(o.point(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},distanceTo:function(t){t=o.point(t);var e=t.x-this.x,i=t.y-this.y;return Math.sqrt(e*e+i*i)},equals:function(t){return t=o.point(t),t.x===this.x&&t.y===this.y},contains:function(t){return t=o.point(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return\"Point(\"+o.Util.formatNum(this.x)+\", \"+o.Util.formatNum(this.y)+\")\"}},o.point=function(t,e,n){return t instanceof o.Point?t:o.Util.isArray(t)?new o.Point(t[0],t[1]):t===i||null===t?t:new o.Point(t,e,n)},o.Bounds=function(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;o>n;n++)this.extend(i[n])},o.Bounds.prototype={extend:function(t){return t=o.point(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new o.Point((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new o.Point(this.min.x,this.max.y)},getTopRight:function(){return new o.Point(this.max.x,this.min.y)},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var e,i;return t=\"number\"==typeof t[0]||t instanceof o.Point?o.point(t):o.bounds(t),t instanceof o.Bounds?(e=t.min,i=t.max):e=i=t,e.x>=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=o.bounds(t);var e=this.min,i=this.max,n=t.min,s=t.max,a=s.x>=e.x&&n.x<=i.x,r=s.y>=e.y&&n.y<=i.y;return a&&r},isValid:function(){return!(!this.min||!this.max)}},o.bounds=function(t,e){return!t||t instanceof o.Bounds?t:new o.Bounds(t,e)},o.Transformation=function(t,e,i,n){this._a=t,this._b=e,this._c=i,this._d=n},o.Transformation.prototype={transform:function(t,e){return this._transform(t.clone(),e)},_transform:function(t,e){return e=e||1,t.x=e*(this._a*t.x+this._b),t.y=e*(this._c*t.y+this._d),t},untransform:function(t,e){return e=e||1,new o.Point((t.x/e-this._b)/this._a,(t.y/e-this._d)/this._c)}},o.DomUtil={get:function(t){return\"string\"==typeof t?e.getElementById(t):t},getStyle:function(t,i){var n=t.style[i];if(!n&&t.currentStyle&&(n=t.currentStyle[i]),(!n||\"auto\"===n)&&e.defaultView){var o=e.defaultView.getComputedStyle(t,null);n=o?o[i]:null}return\"auto\"===n?null:n},getViewportOffset:function(t){var i,n=0,s=0,a=t,r=e.body,h=e.documentElement;do{if(n+=a.offsetTop||0,s+=a.offsetLeft||0,n+=parseInt(o.DomUtil.getStyle(a,\"borderTopWidth\"),10)||0,s+=parseInt(o.DomUtil.getStyle(a,\"borderLeftWidth\"),10)||0,i=o.DomUtil.getStyle(a,\"position\"),a.offsetParent===r&&\"absolute\"===i)break;if(\"fixed\"===i){n+=r.scrollTop||h.scrollTop||0,s+=r.scrollLeft||h.scrollLeft||0;break}if(\"relative\"===i&&!a.offsetLeft){var l=o.DomUtil.getStyle(a,\"width\"),u=o.DomUtil.getStyle(a,\"max-width\"),c=a.getBoundingClientRect();(\"none\"!==l||\"none\"!==u)&&(s+=c.left+a.clientLeft),n+=c.top+(r.scrollTop||h.scrollTop||0);break}a=a.offsetParent}while(a);a=t;do{if(a===r)break;n-=a.scrollTop||0,s-=a.scrollLeft||0,a=a.parentNode}while(a);return new o.Point(s,n)},documentIsLtr:function(){return o.DomUtil._docIsLtrCached||(o.DomUtil._docIsLtrCached=!0,o.DomUtil._docIsLtr=\"ltr\"===o.DomUtil.getStyle(e.body,\"direction\")),o.DomUtil._docIsLtr},create:function(t,i,n){var o=e.createElement(t);return o.className=i,n&&n.appendChild(o),o},hasClass:function(t,e){if(t.classList!==i)return t.classList.contains(e);var n=o.DomUtil._getClass(t);return n.length>0&&new RegExp(\"(^|\\\\s)\"+e+\"(\\\\s|$)\").test(n)},addClass:function(t,e){if(t.classList!==i)for(var n=o.Util.splitWords(e),s=0,a=n.length;a>s;s++)t.classList.add(n[s]);else if(!o.DomUtil.hasClass(t,e)){var r=o.DomUtil._getClass(t);o.DomUtil._setClass(t,(r?r+\" \":\"\")+e)}},removeClass:function(t,e){t.classList!==i?t.classList.remove(e):o.DomUtil._setClass(t,o.Util.trim((\" \"+o.DomUtil._getClass(t)+\" \").replace(\" \"+e+\" \",\" \")))},_setClass:function(t,e){t.className.baseVal===i?t.className=e:t.className.baseVal=e},_getClass:function(t){return t.className.baseVal===i?t.className:t.className.baseVal},setOpacity:function(t,e){if(\"opacity\"in t.style)t.style.opacity=e;else if(\"filter\"in t.style){var i=!1,n=\"DXImageTransform.Microsoft.Alpha\";try{i=t.filters.item(n)}catch(o){if(1===e)return}e=Math.round(100*e),i?(i.Enabled=100!==e,i.Opacity=e):t.style.filter+=\" progid:\"+n+\"(opacity=\"+e+\")\"}},testProp:function(t){for(var i=e.documentElement.style,n=0;ni||i===e?e:t),new o.LatLng(this.lat,i)}},o.latLng=function(t,e){return t instanceof o.LatLng?t:o.Util.isArray(t)?\"number\"==typeof t[0]||\"string\"==typeof t[0]?new o.LatLng(t[0],t[1],t[2]):null:t===i||null===t?t:\"object\"==typeof t&&\"lat\"in t?new o.LatLng(t.lat,\"lng\"in t?t.lng:t.lon):e===i?null:new o.LatLng(t,e)},o.LatLngBounds=function(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;o>n;n++)this.extend(i[n])},o.LatLngBounds.prototype={extend:function(t){if(!t)return this;var e=o.latLng(t);return t=null!==e?e:o.latLngBounds(t),t instanceof o.LatLng?this._southWest||this._northEast?(this._southWest.lat=Math.min(t.lat,this._southWest.lat),this._southWest.lng=Math.min(t.lng,this._southWest.lng),this._northEast.lat=Math.max(t.lat,this._northEast.lat),this._northEast.lng=Math.max(t.lng,this._northEast.lng)):(this._southWest=new o.LatLng(t.lat,t.lng),this._northEast=new o.LatLng(t.lat,t.lng)):t instanceof o.LatLngBounds&&(this.extend(t._southWest),this.extend(t._northEast)),this},pad:function(t){var e=this._southWest,i=this._northEast,n=Math.abs(e.lat-i.lat)*t,s=Math.abs(e.lng-i.lng)*t;return new o.LatLngBounds(new o.LatLng(e.lat-n,e.lng-s),new o.LatLng(i.lat+n,i.lng+s))},getCenter:function(){return new o.LatLng((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new o.LatLng(this.getNorth(),this.getWest())},getSouthEast:function(){return new o.LatLng(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t=\"number\"==typeof t[0]||t instanceof o.LatLng?o.latLng(t):o.latLngBounds(t);var e,i,n=this._southWest,s=this._northEast;return t instanceof o.LatLngBounds?(e=t.getSouthWest(),i=t.getNorthEast()):e=i=t,e.lat>=n.lat&&i.lat<=s.lat&&e.lng>=n.lng&&i.lng<=s.lng},intersects:function(t){t=o.latLngBounds(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),s=t.getNorthEast(),a=s.lat>=e.lat&&n.lat<=i.lat,r=s.lng>=e.lng&&n.lng<=i.lng;return a&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(\",\")},equals:function(t){return t?(t=o.latLngBounds(t),this._southWest.equals(t.getSouthWest())&&this._northEast.equals(t.getNorthEast())):!1},isValid:function(){return!(!this._southWest||!this._northEast)}},o.latLngBounds=function(t,e){return!t||t instanceof o.LatLngBounds?t:new o.LatLngBounds(t,e)},o.Projection={},o.Projection.SphericalMercator={MAX_LATITUDE:85.0511287798,project:function(t){var e=o.LatLng.DEG_TO_RAD,i=this.MAX_LATITUDE,n=Math.max(Math.min(i,t.lat),-i),s=t.lng*e,a=n*e;return a=Math.log(Math.tan(Math.PI/4+a/2)),new o.Point(s,a)},unproject:function(t){var e=o.LatLng.RAD_TO_DEG,i=t.x*e,n=(2*Math.atan(Math.exp(t.y))-Math.PI/2)*e;return new o.LatLng(n,i)}},o.Projection.LonLat={project:function(t){return new o.Point(t.lng,t.lat)},unproject:function(t){return new o.LatLng(t.y,t.x)}},o.CRS={latLngToPoint:function(t,e){var i=this.projection.project(t),n=this.scale(e);return this.transformation._transform(i,n)},pointToLatLng:function(t,e){var i=this.scale(e),n=this.transformation.untransform(t,i);return this.projection.unproject(n)},project:function(t){return this.projection.project(t)},scale:function(t){return 256*Math.pow(2,t)},getSize:function(t){var e=this.scale(t);return o.point(e,e)}},o.CRS.Simple=o.extend({},o.CRS,{projection:o.Projection.LonLat,transformation:new o.Transformation(1,0,-1,0),scale:function(t){return Math.pow(2,t)}}),o.CRS.EPSG3857=o.extend({},o.CRS,{code:\"EPSG:3857\",projection:o.Projection.SphericalMercator,transformation:new o.Transformation(.5/Math.PI,.5,-.5/Math.PI,.5),project:function(t){var e=this.projection.project(t),i=6378137;return e.multiplyBy(i)}}),o.CRS.EPSG900913=o.extend({},o.CRS.EPSG3857,{code:\"EPSG:900913\"}),o.CRS.EPSG4326=o.extend({},o.CRS,{code:\"EPSG:4326\",projection:o.Projection.LonLat,transformation:new o.Transformation(1/360,.5,-1/360,.5)}),o.Map=o.Class.extend({includes:o.Mixin.Events,options:{crs:o.CRS.EPSG3857,fadeAnimation:o.DomUtil.TRANSITION&&!o.Browser.android23,trackResize:!0,markerZoomAnimation:o.DomUtil.TRANSITION&&o.Browser.any3d},initialize:function(t,e){e=o.setOptions(this,e),this._initContainer(t),this._initLayout(),this._onResize=o.bind(this._onResize,this),this._initEvents(),e.maxBounds&&this.setMaxBounds(e.maxBounds),e.center&&e.zoom!==i&&this.setView(o.latLng(e.center),e.zoom,{reset:!0}),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._tileLayersNum=0,this.callInitHooks(),this._addLayers(e.layers)},setView:function(t,e){return e=e===i?this.getZoom():e,this._resetView(o.latLng(t),this._limitZoom(e)),this},setZoom:function(t,e){return this._loaded?this.setView(this.getCenter(),t,{zoom:e}):(this._zoom=this._limitZoom(t),this)},zoomIn:function(t,e){return this.setZoom(this._zoom+(t||1),e)},zoomOut:function(t,e){return this.setZoom(this._zoom-(t||1),e)},setZoomAround:function(t,e,i){var n=this.getZoomScale(e),s=this.getSize().divideBy(2),a=t instanceof o.Point?t:this.latLngToContainerPoint(t),r=a.subtract(s).multiplyBy(1-1/n),h=this.containerPointToLatLng(s.add(r));return this.setView(h,e,{zoom:i})},fitBounds:function(t,e){e=e||{},t=t.getBounds?t.getBounds():o.latLngBounds(t);var i=o.point(e.paddingTopLeft||e.padding||[0,0]),n=o.point(e.paddingBottomRight||e.padding||[0,0]),s=this.getBoundsZoom(t,!1,i.add(n));s=e.maxZoom?Math.min(e.maxZoom,s):s;var a=n.subtract(i).divideBy(2),r=this.project(t.getSouthWest(),s),h=this.project(t.getNorthEast(),s),l=this.unproject(r.add(h).divideBy(2).add(a),s);return this.setView(l,s,e)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,e){return this.setView(t,this._zoom,{pan:e})},panBy:function(t){return this.fire(\"movestart\"),this._rawPanBy(o.point(t)),this.fire(\"move\"),this.fire(\"moveend\")},setMaxBounds:function(t){return t=o.latLngBounds(t),this.options.maxBounds=t,t?(this._loaded&&this._panInsideMaxBounds(),this.on(\"moveend\",this._panInsideMaxBounds,this)):this.off(\"moveend\",this._panInsideMaxBounds,this)},panInsideBounds:function(t,e){var i=this.getCenter(),n=this._limitCenter(i,this._zoom,t);return i.equals(n)?this:this.panTo(n,e)},addLayer:function(t){var e=o.stamp(t);return this._layers[e]?this:(this._layers[e]=t,!t.options||isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[e]=t,this._updateZoomLevels()),this.options.zoomAnimation&&o.TileLayer&&t instanceof o.TileLayer&&(this._tileLayersNum++,this._tileLayersToLoad++,t.on(\"load\",this._onTileLayerLoad,this)),this._loaded&&this._layerAdd(t),this)},removeLayer:function(t){var e=o.stamp(t);return this._layers[e]?(this._loaded&&t.onRemove(this),delete this._layers[e],this._loaded&&this.fire(\"layerremove\",{layer:t}),this._zoomBoundLayers[e]&&(delete this._zoomBoundLayers[e],this._updateZoomLevels()),this.options.zoomAnimation&&o.TileLayer&&t instanceof o.TileLayer&&(this._tileLayersNum--,this._tileLayersToLoad--,t.off(\"load\",this._onTileLayerLoad,this)),this):this},hasLayer:function(t){return t?o.stamp(t)in this._layers:!1},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},invalidateSize:function(t){if(!this._loaded)return this;t=o.extend({animate:!1,pan:!0},t===!0?{animate:!0}:t);var e=this.getSize();this._sizeChanged=!0,this._initialCenter=null;var i=this.getSize(),n=e.divideBy(2).round(),s=i.divideBy(2).round(),a=n.subtract(s);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire(\"move\"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(o.bind(this.fire,this,\"moveend\"),200)):this.fire(\"moveend\")),this.fire(\"resize\",{oldSize:e,newSize:i})):this},addHandler:function(t,e){if(!e)return this;var i=this[t]=new e(this);return this._handlers.push(i),this.options[t]&&i.enable(),this},remove:function(){this._loaded&&this.fire(\"unload\"),this._initEvents(\"off\");try{delete this._container._leaflet}catch(t){this._container._leaflet=i}return this._clearPanes(),this._clearControlPos&&this._clearControlPos(),this._clearHandlers(),this},getCenter:function(){return this._checkIfLoaded(),this._initialCenter&&!this._moved()?this._initialCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds(),e=this.unproject(t.getBottomLeft()),i=this.unproject(t.getTopRight());return new o.LatLngBounds(e,i)},getMinZoom:function(){return this.options.minZoom===i?this._layersMinZoom===i?0:this._layersMinZoom:this.options.minZoom},getMaxZoom:function(){return this.options.maxZoom===i?this._layersMaxZoom===i?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=o.latLngBounds(t);var n,s=this.getMinZoom()-(e?1:0),a=this.getMaxZoom(),r=this.getSize(),h=t.getNorthWest(),l=t.getSouthEast(),u=!0;i=o.point(i||[0,0]);do s++,n=this.project(l,s).subtract(this.project(h,s)).add(i),u=e?n.x=s);return u&&e?null:e?s:s-1},getSize:function(){return(!this._size||this._sizeChanged)&&(this._size=new o.Point(this._container.clientWidth,this._container.clientHeight),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(){var t=this._getTopLeftPoint();return new o.Bounds(t,t.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._initialTopLeftPoint},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t){var e=this.options.crs;return e.scale(t)/e.scale(this._zoom)},getScaleZoom:function(t){return this._zoom+Math.log(t)/Math.LN2},project:function(t,e){return e=e===i?this._zoom:e,this.options.crs.latLngToPoint(o.latLng(t),e)},unproject:function(t,e){return e=e===i?this._zoom:e,this.options.crs.pointToLatLng(o.point(t),e)},layerPointToLatLng:function(t){var e=o.point(t).add(this.getPixelOrigin());return this.unproject(e)},latLngToLayerPoint:function(t){var e=this.project(o.latLng(t))._round();return e._subtract(this.getPixelOrigin())},containerPointToLayerPoint:function(t){return o.point(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return o.point(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var e=this.containerPointToLayerPoint(o.point(t));return this.layerPointToLatLng(e)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(o.latLng(t)))},mouseEventToContainerPoint:function(t){return o.DomEvent.getMousePosition(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var e=this._container=o.DomUtil.get(t);if(!e)throw new Error(\"Map container not found.\");if(e._leaflet)throw new Error(\"Map container is already initialized.\");e._leaflet=!0},_initLayout:function(){var t=this._container;o.DomUtil.addClass(t,\"leaflet-container\"+(o.Browser.touch?\" leaflet-touch\":\"\")+(o.Browser.retina?\" leaflet-retina\":\"\")+(o.Browser.ielt9?\" leaflet-oldie\":\"\")+(this.options.fadeAnimation?\" leaflet-fade-anim\":\"\"));var e=o.DomUtil.getStyle(t,\"position\");\"absolute\"!==e&&\"relative\"!==e&&\"fixed\"!==e&&(t.style.position=\"relative\"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._mapPane=t.mapPane=this._createPane(\"leaflet-map-pane\",this._container),this._tilePane=t.tilePane=this._createPane(\"leaflet-tile-pane\",this._mapPane),t.objectsPane=this._createPane(\"leaflet-objects-pane\",this._mapPane),t.shadowPane=this._createPane(\"leaflet-shadow-pane\"),t.overlayPane=this._createPane(\"leaflet-overlay-pane\"),t.markerPane=this._createPane(\"leaflet-marker-pane\"),t.popupPane=this._createPane(\"leaflet-popup-pane\");var e=\" leaflet-zoom-hide\";this.options.markerZoomAnimation||(o.DomUtil.addClass(t.markerPane,e),o.DomUtil.addClass(t.shadowPane,e),o.DomUtil.addClass(t.popupPane,e))},_createPane:function(t,e){return o.DomUtil.create(\"div\",t,e||this._panes.objectsPane)},_clearPanes:function(){this._container.removeChild(this._mapPane)},_addLayers:function(t){t=t?o.Util.isArray(t)?t:[t]:[];for(var e=0,i=t.length;i>e;e++)this.addLayer(t[e])},_resetView:function(t,e,i,n){var s=this._zoom!==e;n||(this.fire(\"movestart\"),s&&this.fire(\"zoomstart\")),this._zoom=e,this._initialCenter=t,this._initialTopLeftPoint=this._getNewTopLeftPoint(t),i?this._initialTopLeftPoint._add(this._getMapPanePos()):o.DomUtil.setPosition(this._mapPane,new o.Point(0,0)),this._tileLayersToLoad=this._tileLayersNum;var a=!this._loaded;this._loaded=!0,this.fire(\"viewreset\",{hard:!i}),a&&(this.fire(\"load\"),this.eachLayer(this._layerAdd,this)),this.fire(\"move\"),(s||n)&&this.fire(\"zoomend\"),this.fire(\"moveend\",{hard:!i})},_rawPanBy:function(t){o.DomUtil.setPosition(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_updateZoomLevels:function(){var t,e=1/0,n=-(1/0),o=this._getZoomSpan();for(t in this._zoomBoundLayers){var s=this._zoomBoundLayers[t];isNaN(s.options.minZoom)||(e=Math.min(e,s.options.minZoom)),isNaN(s.options.maxZoom)||(n=Math.max(n,s.options.maxZoom))}t===i?this._layersMaxZoom=this._layersMinZoom=i:(this._layersMaxZoom=n,this._layersMinZoom=e),o!==this._getZoomSpan()&&this.fire(\"zoomlevelschange\")},_panInsideMaxBounds:function(){this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error(\"Set map center and zoom first.\")},_initEvents:function(e){if(o.DomEvent){e=e||\"on\",o.DomEvent[e](this._container,\"click\",this._onMouseClick,this);var i,n,s=[\"dblclick\",\"mousedown\",\"mouseup\",\"mouseenter\",\"mouseleave\",\"mousemove\",\"contextmenu\"];for(i=0,n=s.length;n>i;i++)o.DomEvent[e](this._container,s[i],this._fireMouseEvent,this);this.options.trackResize&&o.DomEvent[e](t,\"resize\",this._onResize,this)}},_onResize:function(){o.Util.cancelAnimFrame(this._resizeRequest),this._resizeRequest=o.Util.requestAnimFrame(function(){this.invalidateSize({debounceMoveend:!0})},this,!1,this._container)},_onMouseClick:function(t){!this._loaded||!t._simulated&&(this.dragging&&this.dragging.moved()||this.boxZoom&&this.boxZoom.moved())||o.DomEvent._skipped(t)||(this.fire(\"preclick\"),this._fireMouseEvent(t))},_fireMouseEvent:function(t){if(this._loaded&&!o.DomEvent._skipped(t)){var e=t.type;if(e=\"mouseenter\"===e?\"mouseover\":\"mouseleave\"===e?\"mouseout\":e,this.hasEventListeners(e)){\"contextmenu\"===e&&o.DomEvent.preventDefault(t);var i=this.mouseEventToContainerPoint(t),n=this.containerPointToLayerPoint(i),s=this.layerPointToLatLng(n);this.fire(e,{latlng:s,layerPoint:n,containerPoint:i,originalEvent:t})}}},_onTileLayerLoad:function(){this._tileLayersToLoad--,this._tileLayersNum&&!this._tileLayersToLoad&&this.fire(\"tilelayersload\")},_clearHandlers:function(){for(var t=0,e=this._handlers.length;e>t;t++)this._handlers[t].disable()},whenReady:function(t,e){return this._loaded?t.call(e||this,this):this.on(\"load\",t,e),this},_layerAdd:function(t){t.onAdd(this),this.fire(\"layeradd\",{layer:t})},_getMapPanePos:function(){return o.DomUtil.getPosition(this._mapPane)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(){return this.getPixelOrigin().subtract(this._getMapPanePos())},_getNewTopLeftPoint:function(t,e){var i=this.getSize()._divideBy(2);return this.project(t,e)._subtract(i)._round()},_latLngToNewLayerPoint:function(t,e,i){var n=this._getNewTopLeftPoint(i,e).add(this._getMapPanePos());return this.project(t,e)._subtract(n)},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,e,i){if(!i)return t;var n=this.project(t,e),s=this.getSize().divideBy(2),a=new o.Bounds(n.subtract(s),n.add(s)),r=this._getBoundsOffset(a,i,e);return this.unproject(n.add(r),e)},_limitOffset:function(t,e){if(!e)return t;var i=this.getPixelBounds(),n=new o.Bounds(i.min.add(t),i.max.add(t));return t.add(this._getBoundsOffset(n,e))},_getBoundsOffset:function(t,e,i){var n=this.project(e.getNorthWest(),i).subtract(t.min),s=this.project(e.getSouthEast(),i).subtract(t.max),a=this._rebound(n.x,-s.x),r=this._rebound(n.y,-s.y);return new o.Point(a,r)},_rebound:function(t,e){return t+e>0?Math.round(t-e)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(e))},_limitZoom:function(t){var e=this.getMinZoom(),i=this.getMaxZoom();return Math.max(e,Math.min(i,t))}}),o.map=function(t,e){return new o.Map(t,e)},o.Projection.Mercator={MAX_LATITUDE:85.0840591556,R_MINOR:6356752.314245179,R_MAJOR:6378137,project:function(t){var e=o.LatLng.DEG_TO_RAD,i=this.MAX_LATITUDE,n=Math.max(Math.min(i,t.lat),-i),s=this.R_MAJOR,a=this.R_MINOR,r=t.lng*e*s,h=n*e,l=a/s,u=Math.sqrt(1-l*l),c=u*Math.sin(h);c=Math.pow((1-c)/(1+c),.5*u);var d=Math.tan(.5*(.5*Math.PI-h))/c;return h=-s*Math.log(d),new o.Point(r,h)},unproject:function(t){for(var e,i=o.LatLng.RAD_TO_DEG,n=this.R_MAJOR,s=this.R_MINOR,a=t.x*i/n,r=s/n,h=Math.sqrt(1-r*r),l=Math.exp(-t.y/n),u=Math.PI/2-2*Math.atan(l),c=15,d=1e-7,p=c,_=.1;Math.abs(_)>d&&--p>0;)e=h*Math.sin(u),_=Math.PI/2-2*Math.atan(l*Math.pow((1-e)/(1+e),.5*h))-u,u+=_;return new o.LatLng(u*i,a)}},o.CRS.EPSG3395=o.extend({},o.CRS,{code:\"EPSG:3395\",projection:o.Projection.Mercator,\ntransformation:function(){var t=o.Projection.Mercator,e=t.R_MAJOR,i=.5/(Math.PI*e);return new o.Transformation(i,.5,-i,.5)}()}),o.TileLayer=o.Class.extend({includes:o.Mixin.Events,options:{minZoom:0,maxZoom:18,tileSize:256,subdomains:\"abc\",errorTileUrl:\"\",attribution:\"\",zoomOffset:0,opacity:1,unloadInvisibleTiles:o.Browser.mobile,updateWhenIdle:o.Browser.mobile},initialize:function(t,e){e=o.setOptions(this,e),e.detectRetina&&o.Browser.retina&&e.maxZoom>0&&(e.tileSize=Math.floor(e.tileSize/2),e.zoomOffset++,e.minZoom>0&&e.minZoom--,this.options.maxZoom--),e.bounds&&(e.bounds=o.latLngBounds(e.bounds)),this._url=t;var i=this.options.subdomains;\"string\"==typeof i&&(this.options.subdomains=i.split(\"\"))},onAdd:function(t){this._map=t,this._animated=t._zoomAnimated,this._initContainer(),t.on({viewreset:this._reset,moveend:this._update},this),this._animated&&t.on({zoomanim:this._animateZoom,zoomend:this._endZoomAnim},this),this.options.updateWhenIdle||(this._limitedUpdate=o.Util.limitExecByInterval(this._update,150,this),t.on(\"move\",this._limitedUpdate,this)),this._reset(),this._update()},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){this._container.parentNode.removeChild(this._container),t.off({viewreset:this._reset,moveend:this._update},this),this._animated&&t.off({zoomanim:this._animateZoom,zoomend:this._endZoomAnim},this),this.options.updateWhenIdle||t.off(\"move\",this._limitedUpdate,this),this._container=null,this._map=null},bringToFront:function(){var t=this._map._panes.tilePane;return this._container&&(t.appendChild(this._container),this._setAutoZIndex(t,Math.max)),this},bringToBack:function(){var t=this._map._panes.tilePane;return this._container&&(t.insertBefore(this._container,t.firstChild),this._setAutoZIndex(t,Math.min)),this},getAttribution:function(){return this.options.attribution},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},setUrl:function(t,e){return this._url=t,e||this.redraw(),this},redraw:function(){return this._map&&(this._reset({hard:!0}),this._update()),this},_updateZIndex:function(){this._container&&this.options.zIndex!==i&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t,e){var i,n,o,s=t.children,a=-e(1/0,-(1/0));for(n=0,o=s.length;o>n;n++)s[n]!==this._container&&(i=parseInt(s[n].style.zIndex,10),isNaN(i)||(a=e(a,i)));this.options.zIndex=this._container.style.zIndex=(isFinite(a)?a:0)+e(1,-1)},_updateOpacity:function(){var t,e=this._tiles;if(o.Browser.ielt9)for(t in e)o.DomUtil.setOpacity(e[t],this.options.opacity);else o.DomUtil.setOpacity(this._container,this.options.opacity)},_initContainer:function(){var t=this._map._panes.tilePane;if(!this._container){if(this._container=o.DomUtil.create(\"div\",\"leaflet-layer\"),this._updateZIndex(),this._animated){var e=\"leaflet-tile-container\";this._bgBuffer=o.DomUtil.create(\"div\",e,this._container),this._tileContainer=o.DomUtil.create(\"div\",e,this._container)}else this._tileContainer=this._container;t.appendChild(this._container),this.options.opacity<1&&this._updateOpacity()}},_reset:function(t){for(var e in this._tiles)this.fire(\"tileunload\",{tile:this._tiles[e]});this._tiles={},this._tilesToLoad=0,this.options.reuseTiles&&(this._unusedTiles=[]),this._tileContainer.innerHTML=\"\",this._animated&&t&&t.hard&&this._clearBgBuffer(),this._initContainer()},_getTileSize:function(){var t=this._map,e=t.getZoom()+this.options.zoomOffset,i=this.options.maxNativeZoom,n=this.options.tileSize;return i&&e>i&&(n=Math.round(t.getZoomScale(e)/t.getZoomScale(i)*n)),n},_update:function(){if(this._map){var t=this._map,e=t.getPixelBounds(),i=t.getZoom(),n=this._getTileSize();if(!(i>this.options.maxZoom||in;n++)this._addTile(a[n],l);this._tileContainer.appendChild(l)}},_tileShouldBeLoaded:function(t){if(t.x+\":\"+t.y in this._tiles)return!1;var e=this.options;if(!e.continuousWorld){var i=this._getWrapTileNum();if(e.noWrap&&(t.x<0||t.x>=i.x)||t.y<0||t.y>=i.y)return!1}if(e.bounds){var n=this._getTileSize(),o=t.multiplyBy(n),s=o.add([n,n]),a=this._map.unproject(o),r=this._map.unproject(s);if(e.continuousWorld||e.noWrap||(a=a.wrap(),r=r.wrap()),!e.bounds.intersects([a,r]))return!1}return!0},_removeOtherTiles:function(t){var e,i,n,o;for(o in this._tiles)e=o.split(\":\"),i=parseInt(e[0],10),n=parseInt(e[1],10),(it.max.x||nt.max.y)&&this._removeTile(o)},_removeTile:function(t){var e=this._tiles[t];this.fire(\"tileunload\",{tile:e,url:e.src}),this.options.reuseTiles?(o.DomUtil.removeClass(e,\"leaflet-tile-loaded\"),this._unusedTiles.push(e)):e.parentNode===this._tileContainer&&this._tileContainer.removeChild(e),o.Browser.android||(e.onload=null,e.src=o.Util.emptyImageUrl),delete this._tiles[t]},_addTile:function(t,e){var i=this._getTilePos(t),n=this._getTile();o.DomUtil.setPosition(n,i,o.Browser.chrome),this._tiles[t.x+\":\"+t.y]=n,this._loadTile(n,t),n.parentNode!==this._tileContainer&&e.appendChild(n)},_getZoomForUrl:function(){var t=this.options,e=this._map.getZoom();return t.zoomReverse&&(e=t.maxZoom-e),e+=t.zoomOffset,t.maxNativeZoom?Math.min(e,t.maxNativeZoom):e},_getTilePos:function(t){var e=this._map.getPixelOrigin(),i=this._getTileSize();return t.multiplyBy(i).subtract(e)},getTileUrl:function(t){return o.Util.template(this._url,o.extend({s:this._getSubdomain(t),z:t.z,x:t.x,y:t.y},this.options))},_getWrapTileNum:function(){var t=this._map.options.crs,e=t.getSize(this._map.getZoom());return e.divideBy(this._getTileSize())._floor()},_adjustTilePoint:function(t){var e=this._getWrapTileNum();this.options.continuousWorld||this.options.noWrap||(t.x=(t.x%e.x+e.x)%e.x),this.options.tms&&(t.y=e.y-t.y-1),t.z=this._getZoomForUrl()},_getSubdomain:function(t){var e=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[e]},_getTile:function(){if(this.options.reuseTiles&&this._unusedTiles.length>0){var t=this._unusedTiles.pop();return this._resetTile(t),t}return this._createTile()},_resetTile:function(){},_createTile:function(){var t=o.DomUtil.create(\"img\",\"leaflet-tile\");return t.style.width=t.style.height=this._getTileSize()+\"px\",t.galleryimg=\"no\",t.onselectstart=t.onmousemove=o.Util.falseFn,o.Browser.ielt9&&this.options.opacity!==i&&o.DomUtil.setOpacity(t,this.options.opacity),o.Browser.mobileWebkit3d&&(t.style.WebkitBackfaceVisibility=\"hidden\"),t},_loadTile:function(t,e){t._layer=this,t.onload=this._tileOnLoad,t.onerror=this._tileOnError,this._adjustTilePoint(e),t.src=this.getTileUrl(e),this.fire(\"tileloadstart\",{tile:t,url:t.src})},_tileLoaded:function(){this._tilesToLoad--,this._animated&&o.DomUtil.addClass(this._tileContainer,\"leaflet-zoom-animated\"),this._tilesToLoad||(this.fire(\"load\"),this._animated&&(clearTimeout(this._clearBgBufferTimer),this._clearBgBufferTimer=setTimeout(o.bind(this._clearBgBuffer,this),500)))},_tileOnLoad:function(){var t=this._layer;this.src!==o.Util.emptyImageUrl&&(o.DomUtil.addClass(this,\"leaflet-tile-loaded\"),t.fire(\"tileload\",{tile:this,url:this.src})),t._tileLoaded()},_tileOnError:function(){var t=this._layer;t.fire(\"tileerror\",{tile:this,url:this.src});var e=t.options.errorTileUrl;e&&(this.src=e),t._tileLoaded()}}),o.tileLayer=function(t,e){return new o.TileLayer(t,e)},o.TileLayer.WMS=o.TileLayer.extend({defaultWmsParams:{service:\"WMS\",request:\"GetMap\",version:\"1.1.1\",layers:\"\",styles:\"\",format:\"image/jpeg\",transparent:!1},initialize:function(t,e){this._url=t;var i=o.extend({},this.defaultWmsParams),n=e.tileSize||this.options.tileSize;e.detectRetina&&o.Browser.retina?i.width=i.height=2*n:i.width=i.height=n;for(var s in e)this.options.hasOwnProperty(s)||\"crs\"===s||(i[s]=e[s]);this.wmsParams=i,o.setOptions(this,e)},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var e=this._wmsVersion>=1.3?\"crs\":\"srs\";this.wmsParams[e]=this._crs.code,o.TileLayer.prototype.onAdd.call(this,t)},getTileUrl:function(t){var e=this._map,i=this.options.tileSize,n=t.multiplyBy(i),s=n.add([i,i]),a=this._crs.project(e.unproject(n,t.z)),r=this._crs.project(e.unproject(s,t.z)),h=this._wmsVersion>=1.3&&this._crs===o.CRS.EPSG4326?[r.y,a.x,a.y,r.x].join(\",\"):[a.x,r.y,r.x,a.y].join(\",\"),l=o.Util.template(this._url,{s:this._getSubdomain(t)});return l+o.Util.getParamString(this.wmsParams,l,!0)+\"&BBOX=\"+h},setParams:function(t,e){return o.extend(this.wmsParams,t),e||this.redraw(),this}}),o.tileLayer.wms=function(t,e){return new o.TileLayer.WMS(t,e)},o.TileLayer.Canvas=o.TileLayer.extend({options:{async:!1},initialize:function(t){o.setOptions(this,t)},redraw:function(){this._map&&(this._reset({hard:!0}),this._update());for(var t in this._tiles)this._redrawTile(this._tiles[t]);return this},_redrawTile:function(t){this.drawTile(t,t._tilePoint,this._map._zoom)},_createTile:function(){var t=o.DomUtil.create(\"canvas\",\"leaflet-tile\");return t.width=t.height=this.options.tileSize,t.onselectstart=t.onmousemove=o.Util.falseFn,t},_loadTile:function(t,e){t._layer=this,t._tilePoint=e,this._redrawTile(t),this.options.async||this.tileDrawn(t)},drawTile:function(){},tileDrawn:function(t){this._tileOnLoad.call(t)}}),o.tileLayer.canvas=function(t){return new o.TileLayer.Canvas(t)},o.ImageOverlay=o.Class.extend({includes:o.Mixin.Events,options:{opacity:1},initialize:function(t,e,i){this._url=t,this._bounds=o.latLngBounds(e),o.setOptions(this,i)},onAdd:function(t){this._map=t,this._image||this._initImage(),t._panes.overlayPane.appendChild(this._image),t.on(\"viewreset\",this._reset,this),t.options.zoomAnimation&&o.Browser.any3d&&t.on(\"zoomanim\",this._animateZoom,this),this._reset()},onRemove:function(t){t.getPanes().overlayPane.removeChild(this._image),t.off(\"viewreset\",this._reset,this),t.options.zoomAnimation&&t.off(\"zoomanim\",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},bringToFront:function(){return this._image&&this._map._panes.overlayPane.appendChild(this._image),this},bringToBack:function(){var t=this._map._panes.overlayPane;return this._image&&t.insertBefore(this._image,t.firstChild),this},setUrl:function(t){this._url=t,this._image.src=this._url},getAttribution:function(){return this.options.attribution},_initImage:function(){this._image=o.DomUtil.create(\"img\",\"leaflet-image-layer\"),this._map.options.zoomAnimation&&o.Browser.any3d?o.DomUtil.addClass(this._image,\"leaflet-zoom-animated\"):o.DomUtil.addClass(this._image,\"leaflet-zoom-hide\"),this._updateOpacity(),o.extend(this._image,{galleryimg:\"no\",onselectstart:o.Util.falseFn,onmousemove:o.Util.falseFn,onload:o.bind(this._onImageLoad,this),src:this._url})},_animateZoom:function(t){var e=this._map,i=this._image,n=e.getZoomScale(t.zoom),s=this._bounds.getNorthWest(),a=this._bounds.getSouthEast(),r=e._latLngToNewLayerPoint(s,t.zoom,t.center),h=e._latLngToNewLayerPoint(a,t.zoom,t.center)._subtract(r),l=r._add(h._multiplyBy(.5*(1-1/n)));i.style[o.DomUtil.TRANSFORM]=o.DomUtil.getTranslateString(l)+\" scale(\"+n+\") \"},_reset:function(){var t=this._image,e=this._map.latLngToLayerPoint(this._bounds.getNorthWest()),i=this._map.latLngToLayerPoint(this._bounds.getSouthEast())._subtract(e);o.DomUtil.setPosition(t,e),t.style.width=i.x+\"px\",t.style.height=i.y+\"px\"},_onImageLoad:function(){this.fire(\"load\")},_updateOpacity:function(){o.DomUtil.setOpacity(this._image,this.options.opacity)}}),o.imageOverlay=function(t,e,i){return new o.ImageOverlay(t,e,i)},o.Icon=o.Class.extend({options:{className:\"\"},initialize:function(t){o.setOptions(this,t)},createIcon:function(t){return this._createIcon(\"icon\",t)},createShadow:function(t){return this._createIcon(\"shadow\",t)},_createIcon:function(t,e){var i=this._getIconUrl(t);if(!i){if(\"icon\"===t)throw new Error(\"iconUrl not set in Icon options (see the docs).\");return null}var n;return n=e&&\"IMG\"===e.tagName?this._createImg(i,e):this._createImg(i),this._setIconStyles(n,t),n},_setIconStyles:function(t,e){var i,n=this.options,s=o.point(n[e+\"Size\"]);i=\"shadow\"===e?o.point(n.shadowAnchor||n.iconAnchor):o.point(n.iconAnchor),!i&&s&&(i=s.divideBy(2,!0)),t.className=\"leaflet-marker-\"+e+\" \"+n.className,i&&(t.style.marginLeft=-i.x+\"px\",t.style.marginTop=-i.y+\"px\"),s&&(t.style.width=s.x+\"px\",t.style.height=s.y+\"px\")},_createImg:function(t,i){return i=i||e.createElement(\"img\"),i.src=t,i},_getIconUrl:function(t){return o.Browser.retina&&this.options[t+\"RetinaUrl\"]?this.options[t+\"RetinaUrl\"]:this.options[t+\"Url\"]}}),o.icon=function(t){return new o.Icon(t)},o.Icon.Default=o.Icon.extend({options:{iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],shadowSize:[41,41]},_getIconUrl:function(t){var e=t+\"Url\";if(this.options[e])return this.options[e];o.Browser.retina&&\"icon\"===t&&(t+=\"-2x\");var i=o.Icon.Default.imagePath;if(!i)throw new Error(\"Couldn't autodetect L.Icon.Default.imagePath, set it manually.\");return i+\"/marker-\"+t+\".png\"}}),o.Icon.Default.imagePath=function(){var t,i,n,o,s,a=e.getElementsByTagName(\"script\"),r=/[\\/^]leaflet[\\-\\._]?([\\w\\-\\._]*)\\.js\\??/;for(t=0,i=a.length;i>t;t++)if(n=a[t].src,o=n.match(r))return s=n.split(r)[0],(s?s+\"/\":\"\")+\"images\"}(),o.Marker=o.Class.extend({includes:o.Mixin.Events,options:{icon:new o.Icon.Default,title:\"\",alt:\"\",clickable:!0,draggable:!1,keyboard:!0,zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250},initialize:function(t,e){o.setOptions(this,e),this._latlng=o.latLng(t)},onAdd:function(t){this._map=t,t.on(\"viewreset\",this.update,this),this._initIcon(),this.update(),this.fire(\"add\"),t.options.zoomAnimation&&t.options.markerZoomAnimation&&t.on(\"zoomanim\",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){this.dragging&&this.dragging.disable(),this._removeIcon(),this._removeShadow(),this.fire(\"remove\"),t.off({viewreset:this.update,zoomanim:this._animateZoom},this),this._map=null},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=o.latLng(t),this.update(),this.fire(\"move\",{latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update(),this},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup),this},update:function(){return this._icon&&this._setPos(this._map.latLngToLayerPoint(this._latlng).round()),this},_initIcon:function(){var t=this.options,e=this._map,i=e.options.zoomAnimation&&e.options.markerZoomAnimation,n=i?\"leaflet-zoom-animated\":\"leaflet-zoom-hide\",s=t.icon.createIcon(this._icon),a=!1;s!==this._icon&&(this._icon&&this._removeIcon(),a=!0,t.title&&(s.title=t.title),t.alt&&(s.alt=t.alt)),o.DomUtil.addClass(s,n),t.keyboard&&(s.tabIndex=\"0\"),this._icon=s,this._initInteraction(),t.riseOnHover&&o.DomEvent.on(s,\"mouseover\",this._bringToFront,this).on(s,\"mouseout\",this._resetZIndex,this);var r=t.icon.createShadow(this._shadow),h=!1;r!==this._shadow&&(this._removeShadow(),h=!0),r&&o.DomUtil.addClass(r,n),this._shadow=r,t.opacity<1&&this._updateOpacity();var l=this._map._panes;a&&l.markerPane.appendChild(this._icon),r&&h&&l.shadowPane.appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&o.DomEvent.off(this._icon,\"mouseover\",this._bringToFront).off(this._icon,\"mouseout\",this._resetZIndex),this._map._panes.markerPane.removeChild(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&this._map._panes.shadowPane.removeChild(this._shadow),this._shadow=null},_setPos:function(t){o.DomUtil.setPosition(this._icon,t),this._shadow&&o.DomUtil.setPosition(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(e)},_initInteraction:function(){if(this.options.clickable){var t=this._icon,e=[\"dblclick\",\"mousedown\",\"mouseover\",\"mouseout\",\"contextmenu\"];o.DomUtil.addClass(t,\"leaflet-clickable\"),o.DomEvent.on(t,\"click\",this._onMouseClick,this),o.DomEvent.on(t,\"keypress\",this._onKeyPress,this);for(var i=0;is?(e.height=s+\"px\",o.DomUtil.addClass(t,a)):o.DomUtil.removeClass(t,a),this._containerWidth=this._container.offsetWidth},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),e=this._animated,i=o.point(this.options.offset);e&&o.DomUtil.setPosition(this._container,t),this._containerBottom=-i.y-(e?0:t.y),this._containerLeft=-Math.round(this._containerWidth/2)+i.x+(e?0:t.x),this._container.style.bottom=this._containerBottom+\"px\",this._container.style.left=this._containerLeft+\"px\"}},_zoomAnimation:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);o.DomUtil.setPosition(this._container,e)},_adjustPan:function(){if(this.options.autoPan){var t=this._map,e=this._container.offsetHeight,i=this._containerWidth,n=new o.Point(this._containerLeft,-e-this._containerBottom);this._animated&&n._add(o.DomUtil.getPosition(this._container));var s=t.layerPointToContainerPoint(n),a=o.point(this.options.autoPanPadding),r=o.point(this.options.autoPanPaddingTopLeft||a),h=o.point(this.options.autoPanPaddingBottomRight||a),l=t.getSize(),u=0,c=0;s.x+i+h.x>l.x&&(u=s.x+i-l.x+h.x),s.x-u-r.x<0&&(u=s.x-r.x),s.y+e+h.y>l.y&&(c=s.y+e-l.y+h.y),s.y-c-r.y<0&&(c=s.y-r.y),(u||c)&&t.fire(\"autopanstart\").panBy([u,c])}},_onCloseButtonClick:function(t){this._close(),o.DomEvent.stop(t)}}),o.popup=function(t,e){return new o.Popup(t,e)},o.Map.include({openPopup:function(t,e,i){if(this.closePopup(),!(t instanceof o.Popup)){var n=t;t=new o.Popup(i).setLatLng(e).setContent(n)}return t._isOpen=!0,this._popup=t,this.addLayer(t)},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&(this.removeLayer(t),t._isOpen=!1),this}}),o.Marker.include({openPopup:function(){return this._popup&&this._map&&!this._map.hasLayer(this._popup)&&(this._popup.setLatLng(this._latlng),this._map.openPopup(this._popup)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(){return this._popup&&(this._popup._isOpen?this.closePopup():this.openPopup()),this},bindPopup:function(t,e){var i=o.point(this.options.icon.options.popupAnchor||[0,0]);return i=i.add(o.Popup.prototype.options.offset),e&&e.offset&&(i=i.add(e.offset)),e=o.extend({offset:i},e),this._popupHandlersAdded||(this.on(\"click\",this.togglePopup,this).on(\"remove\",this.closePopup,this).on(\"move\",this._movePopup,this),this._popupHandlersAdded=!0),t instanceof o.Popup?(o.setOptions(t,e),this._popup=t,t._source=this):this._popup=new o.Popup(e,this).setContent(t),this},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},unbindPopup:function(){return this._popup&&(this._popup=null,this.off(\"click\",this.togglePopup,this).off(\"remove\",this.closePopup,this).off(\"move\",this._movePopup,this),this._popupHandlersAdded=!1),this},getPopup:function(){return this._popup},_movePopup:function(t){this._popup.setLatLng(t.latlng)}}),o.LayerGroup=o.Class.extend({initialize:function(t){this._layers={};var e,i;if(t)for(e=0,i=t.length;i>e;e++)this.addLayer(t[e])},addLayer:function(t){var e=this.getLayerId(t);return this._layers[e]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var e=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[e]&&this._map.removeLayer(this._layers[e]),delete this._layers[e],this},hasLayer:function(t){return t?t in this._layers||this.getLayerId(t)in this._layers:!1},clearLayers:function(){return this.eachLayer(this.removeLayer,this),this},invoke:function(t){var e,i,n=Array.prototype.slice.call(arguments,1);for(e in this._layers)i=this._layers[e],i[t]&&i[t].apply(i,n);return this},onAdd:function(t){this._map=t,this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t),this._map=null},addTo:function(t){return t.addLayer(this),this},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];for(var e in this._layers)t.push(this._layers[e]);return t},setZIndex:function(t){return this.invoke(\"setZIndex\",t)},getLayerId:function(t){return o.stamp(t)}}),o.layerGroup=function(t){return new o.LayerGroup(t)},o.FeatureGroup=o.LayerGroup.extend({includes:o.Mixin.Events,statics:{EVENTS:\"click dblclick mouseover mouseout mousemove contextmenu popupopen popupclose\"},addLayer:function(t){return this.hasLayer(t)?this:(\"on\"in t&&t.on(o.FeatureGroup.EVENTS,this._propagateEvent,this),o.LayerGroup.prototype.addLayer.call(this,t),this._popupContent&&t.bindPopup&&t.bindPopup(this._popupContent,this._popupOptions),this.fire(\"layeradd\",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),\"off\"in t&&t.off(o.FeatureGroup.EVENTS,this._propagateEvent,this),o.LayerGroup.prototype.removeLayer.call(this,t),this._popupContent&&this.invoke(\"unbindPopup\"),this.fire(\"layerremove\",{layer:t})):this},bindPopup:function(t,e){return this._popupContent=t,this._popupOptions=e,this.invoke(\"bindPopup\",t,e)},openPopup:function(t){for(var e in this._layers){this._layers[e].openPopup(t);break}return this},setStyle:function(t){return this.invoke(\"setStyle\",t)},bringToFront:function(){return this.invoke(\"bringToFront\")},bringToBack:function(){return this.invoke(\"bringToBack\")},getBounds:function(){var t=new o.LatLngBounds;return this.eachLayer(function(e){t.extend(e instanceof o.Marker?e.getLatLng():e.getBounds())}),t},_propagateEvent:function(t){t=o.extend({layer:t.target,target:this},t),this.fire(t.type,t)}}),o.featureGroup=function(t){return new o.FeatureGroup(t)},o.Path=o.Class.extend({includes:[o.Mixin.Events],statics:{CLIP_PADDING:function(){var e=o.Browser.mobile?1280:2e3,i=(e/Math.max(t.outerWidth,t.outerHeight)-1)/2;return Math.max(0,Math.min(.5,i))}()},options:{stroke:!0,color:\"#0033ff\",dashArray:null,lineCap:null,lineJoin:null,weight:5,opacity:.5,fill:!1,fillColor:null,fillOpacity:.2,clickable:!0},initialize:function(t){o.setOptions(this,t)},onAdd:function(t){this._map=t,this._container||(this._initElements(),this._initEvents()),this.projectLatlngs(),this._updatePath(),this._container&&this._map._pathRoot.appendChild(this._container),this.fire(\"add\"),t.on({viewreset:this.projectLatlngs,moveend:this._updatePath},this)},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){t._pathRoot.removeChild(this._container),this.fire(\"remove\"),this._map=null,o.Browser.vml&&(this._container=null,this._stroke=null,this._fill=null),t.off({viewreset:this.projectLatlngs,moveend:this._updatePath},this)},projectLatlngs:function(){},setStyle:function(t){return o.setOptions(this,t),this._container&&this._updateStyle(),this},redraw:function(){return this._map&&(this.projectLatlngs(),this._updatePath()),this}}),o.Map.include({_updatePathViewport:function(){var t=o.Path.CLIP_PADDING,e=this.getSize(),i=o.DomUtil.getPosition(this._mapPane),n=i.multiplyBy(-1)._subtract(e.multiplyBy(t)._round()),s=n.add(e.multiplyBy(1+2*t)._round());this._pathViewport=new o.Bounds(n,s)}}),o.Path.SVG_NS=\"http://www.w3.org/2000/svg\",o.Browser.svg=!(!e.createElementNS||!e.createElementNS(o.Path.SVG_NS,\"svg\").createSVGRect),o.Path=o.Path.extend({statics:{SVG:o.Browser.svg},bringToFront:function(){var t=this._map._pathRoot,e=this._container;return e&&t.lastChild!==e&&t.appendChild(e),this},bringToBack:function(){var t=this._map._pathRoot,e=this._container,i=t.firstChild;return e&&i!==e&&t.insertBefore(e,i),this},getPathString:function(){},_createElement:function(t){return e.createElementNS(o.Path.SVG_NS,t)},_initElements:function(){this._map._initPathRoot(),this._initPath(),this._initStyle()},_initPath:function(){this._container=this._createElement(\"g\"),this._path=this._createElement(\"path\"),this.options.className&&o.DomUtil.addClass(this._path,this.options.className),this._container.appendChild(this._path)},_initStyle:function(){this.options.stroke&&(this._path.setAttribute(\"stroke-linejoin\",\"round\"),this._path.setAttribute(\"stroke-linecap\",\"round\")),this.options.fill&&this._path.setAttribute(\"fill-rule\",\"evenodd\"),this.options.pointerEvents&&this._path.setAttribute(\"pointer-events\",this.options.pointerEvents),this.options.clickable||this.options.pointerEvents||this._path.setAttribute(\"pointer-events\",\"none\"),this._updateStyle()},_updateStyle:function(){this.options.stroke?(this._path.setAttribute(\"stroke\",this.options.color),this._path.setAttribute(\"stroke-opacity\",this.options.opacity),this._path.setAttribute(\"stroke-width\",this.options.weight),this.options.dashArray?this._path.setAttribute(\"stroke-dasharray\",this.options.dashArray):this._path.removeAttribute(\"stroke-dasharray\"),this.options.lineCap&&this._path.setAttribute(\"stroke-linecap\",this.options.lineCap),this.options.lineJoin&&this._path.setAttribute(\"stroke-linejoin\",this.options.lineJoin)):this._path.setAttribute(\"stroke\",\"none\"),this.options.fill?(this._path.setAttribute(\"fill\",this.options.fillColor||this.options.color),this._path.setAttribute(\"fill-opacity\",this.options.fillOpacity)):this._path.setAttribute(\"fill\",\"none\")},_updatePath:function(){var t=this.getPathString();t||(t=\"M0 0\"),this._path.setAttribute(\"d\",t)},_initEvents:function(){if(this.options.clickable){(o.Browser.svg||!o.Browser.vml)&&o.DomUtil.addClass(this._path,\"leaflet-clickable\"),o.DomEvent.on(this._container,\"click\",this._onMouseClick,this);for(var t=[\"dblclick\",\"mousedown\",\"mouseover\",\"mouseout\",\"mousemove\",\"contextmenu\"],e=0;e';var i=t.firstChild;return i.style.behavior=\"url(#default#VML)\",i&&\"object\"==typeof i.adj}catch(n){return!1}}(),o.Path=o.Browser.svg||!o.Browser.vml?o.Path:o.Path.extend({statics:{VML:!0,CLIP_PADDING:.02},_createElement:function(){try{return e.namespaces.add(\"lvml\",\"urn:schemas-microsoft-com:vml\"),function(t){return e.createElement(\"')}}catch(t){return function(t){return e.createElement(\"<\"+t+' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"lvml\">')}}}(),_initPath:function(){var t=this._container=this._createElement(\"shape\");o.DomUtil.addClass(t,\"leaflet-vml-shape\"+(this.options.className?\" \"+this.options.className:\"\")),this.options.clickable&&o.DomUtil.addClass(t,\"leaflet-clickable\"),t.coordsize=\"1 1\",this._path=this._createElement(\"path\"),t.appendChild(this._path),this._map._pathRoot.appendChild(t)},_initStyle:function(){this._updateStyle()},_updateStyle:function(){var t=this._stroke,e=this._fill,i=this.options,n=this._container;n.stroked=i.stroke,n.filled=i.fill,i.stroke?(t||(t=this._stroke=this._createElement(\"stroke\"),t.endcap=\"round\",n.appendChild(t)),t.weight=i.weight+\"px\",t.color=i.color,t.opacity=i.opacity,i.dashArray?t.dashStyle=o.Util.isArray(i.dashArray)?i.dashArray.join(\" \"):i.dashArray.replace(/( *, *)/g,\" \"):t.dashStyle=\"\",i.lineCap&&(t.endcap=i.lineCap.replace(\"butt\",\"flat\")),i.lineJoin&&(t.joinstyle=i.lineJoin)):t&&(n.removeChild(t),this._stroke=null),i.fill?(e||(e=this._fill=this._createElement(\"fill\"),n.appendChild(e)),e.color=i.fillColor||i.color,e.opacity=i.fillOpacity):e&&(n.removeChild(e),this._fill=null)},_updatePath:function(){var t=this._container.style;t.display=\"none\",this._path.v=this.getPathString()+\" \",t.display=\"\"}}),o.Map.include(o.Browser.svg||!o.Browser.vml?{}:{_initPathRoot:function(){if(!this._pathRoot){var t=this._pathRoot=e.createElement(\"div\");t.className=\"leaflet-vml-container\",this._panes.overlayPane.appendChild(t),this.on(\"moveend\",this._updatePathViewport),this._updatePathViewport()}}}),o.Browser.canvas=function(){return!!e.createElement(\"canvas\").getContext}(),o.Path=o.Path.SVG&&!t.L_PREFER_CANVAS||!o.Browser.canvas?o.Path:o.Path.extend({statics:{CANVAS:!0,SVG:!1},redraw:function(){return this._map&&(this.projectLatlngs(),this._requestUpdate()),this},setStyle:function(t){return o.setOptions(this,t),this._map&&(this._updateStyle(),this._requestUpdate()),this},onRemove:function(t){t.off(\"viewreset\",this.projectLatlngs,this).off(\"moveend\",this._updatePath,this),this.options.clickable&&(this._map.off(\"click\",this._onClick,this),this._map.off(\"mousemove\",this._onMouseMove,this)),this._requestUpdate(),this.fire(\"remove\"),this._map=null},_requestUpdate:function(){this._map&&!o.Path._updateRequest&&(o.Path._updateRequest=o.Util.requestAnimFrame(this._fireMapMoveEnd,this._map))},_fireMapMoveEnd:function(){o.Path._updateRequest=null,this.fire(\"moveend\")},_initElements:function(){this._map._initPathRoot(),this._ctx=this._map._canvasCtx},_updateStyle:function(){var t=this.options;t.stroke&&(this._ctx.lineWidth=t.weight,this._ctx.strokeStyle=t.color),t.fill&&(this._ctx.fillStyle=t.fillColor||t.color),t.lineCap&&(this._ctx.lineCap=t.lineCap),t.lineJoin&&(this._ctx.lineJoin=t.lineJoin)},_drawPath:function(){var t,e,i,n,s,a;for(this._ctx.beginPath(),t=0,i=this._parts.length;i>t;t++){for(e=0,n=this._parts[t].length;n>e;e++)s=this._parts[t][e],a=(0===e?\"move\":\"line\")+\"To\",this._ctx[a](s.x,s.y);this instanceof o.Polygon&&this._ctx.closePath()}},_checkIfEmpty:function(){return!this._parts.length},_updatePath:function(){if(!this._checkIfEmpty()){var t=this._ctx,e=this.options;this._drawPath(),t.save(),this._updateStyle(),e.fill&&(t.globalAlpha=e.fillOpacity,t.fill(e.fillRule||\"evenodd\")),e.stroke&&(t.globalAlpha=e.opacity,t.stroke()),t.restore()}},_initEvents:function(){this.options.clickable&&(this._map.on(\"mousemove\",this._onMouseMove,this),this._map.on(\"click dblclick contextmenu\",this._fireMouseEvent,this))},_fireMouseEvent:function(t){this._containsPoint(t.layerPoint)&&this.fire(t.type,t)},_onMouseMove:function(t){this._map&&!this._map._animatingZoom&&(this._containsPoint(t.layerPoint)?(this._ctx.canvas.style.cursor=\"pointer\",this._mouseInside=!0,this.fire(\"mouseover\",t)):this._mouseInside&&(this._ctx.canvas.style.cursor=\"\",this._mouseInside=!1,this.fire(\"mouseout\",t)))}}),o.Map.include(o.Path.SVG&&!t.L_PREFER_CANVAS||!o.Browser.canvas?{}:{_initPathRoot:function(){var t,i=this._pathRoot;i||(i=this._pathRoot=e.createElement(\"canvas\"),i.style.position=\"absolute\",t=this._canvasCtx=i.getContext(\"2d\"),t.lineCap=\"round\",t.lineJoin=\"round\",this._panes.overlayPane.appendChild(i),this.options.zoomAnimation&&(this._pathRoot.className=\"leaflet-zoom-animated\",this.on(\"zoomanim\",this._animatePathZoom),this.on(\"zoomend\",this._endPathZoom)),this.on(\"moveend\",this._updateCanvasViewport),this._updateCanvasViewport())},_updateCanvasViewport:function(){if(!this._pathZooming){this._updatePathViewport();var t=this._pathViewport,e=t.min,i=t.max.subtract(e),n=this._pathRoot;o.DomUtil.setPosition(n,e),n.width=i.x,n.height=i.y,n.getContext(\"2d\").translate(-e.x,-e.y)}}}),o.LineUtil={simplify:function(t,e){if(!e||!t.length)return t.slice();var i=e*e;return t=this._reducePoints(t,i),t=this._simplifyDP(t,i)},pointToSegmentDistance:function(t,e,i){return Math.sqrt(this._sqClosestPointOnSegment(t,e,i,!0))},closestPointOnSegment:function(t,e,i){return this._sqClosestPointOnSegment(t,e,i)},_simplifyDP:function(t,e){var n=t.length,o=typeof Uint8Array!=i+\"\"?Uint8Array:Array,s=new o(n);s[0]=s[n-1]=1,this._simplifyDPStep(t,s,e,0,n-1);var a,r=[];for(a=0;n>a;a++)s[a]&&r.push(t[a]);return r},_simplifyDPStep:function(t,e,i,n,o){var s,a,r,h=0;for(a=n+1;o-1>=a;a++)r=this._sqClosestPointOnSegment(t[a],t[n],t[o],!0),r>h&&(s=a,h=r);h>i&&(e[s]=1,this._simplifyDPStep(t,e,i,n,s),this._simplifyDPStep(t,e,i,s,o))},_reducePoints:function(t,e){for(var i=[t[0]],n=1,o=0,s=t.length;s>n;n++)this._sqDist(t[n],t[o])>e&&(i.push(t[n]),o=n);return s-1>o&&i.push(t[s-1]),i},clipSegment:function(t,e,i,n){var o,s,a,r=n?this._lastCode:this._getBitCode(t,i),h=this._getBitCode(e,i);for(this._lastCode=h;;){if(!(r|h))return[t,e];if(r&h)return!1;o=r||h,s=this._getEdgeIntersection(t,e,o,i),a=this._getBitCode(s,i),o===r?(t=s,r=a):(e=s,h=a)}},_getEdgeIntersection:function(t,e,i,n){var s=e.x-t.x,a=e.y-t.y,r=n.min,h=n.max;return 8&i?new o.Point(t.x+s*(h.y-t.y)/a,h.y):4&i?new o.Point(t.x+s*(r.y-t.y)/a,r.y):2&i?new o.Point(h.x,t.y+a*(h.x-t.x)/s):1&i?new o.Point(r.x,t.y+a*(r.x-t.x)/s):void 0},_getBitCode:function(t,e){var i=0;return t.xe.max.x&&(i|=2),t.ye.max.y&&(i|=8),i},_sqDist:function(t,e){var i=e.x-t.x,n=e.y-t.y;return i*i+n*n},_sqClosestPointOnSegment:function(t,e,i,n){var s,a=e.x,r=e.y,h=i.x-a,l=i.y-r,u=h*h+l*l;return u>0&&(s=((t.x-a)*h+(t.y-r)*l)/u,s>1?(a=i.x,r=i.y):s>0&&(a+=h*s,r+=l*s)),h=t.x-a,l=t.y-r,n?h*h+l*l:new o.Point(a,r)}},o.Polyline=o.Path.extend({initialize:function(t,e){o.Path.prototype.initialize.call(this,e),this._latlngs=this._convertLatLngs(t)},options:{smoothFactor:1,noClip:!1},projectLatlngs:function(){this._originalPoints=[];for(var t=0,e=this._latlngs.length;e>t;t++)this._originalPoints[t]=this._map.latLngToLayerPoint(this._latlngs[t])},getPathString:function(){for(var t=0,e=this._parts.length,i=\"\";e>t;t++)i+=this._getPathPartStr(this._parts[t]);return i},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._latlngs=this._convertLatLngs(t),this.redraw()},addLatLng:function(t){return this._latlngs.push(o.latLng(t)),this.redraw()},spliceLatLngs:function(){var t=[].splice.apply(this._latlngs,arguments);return this._convertLatLngs(this._latlngs,!0),this.redraw(),t},closestLayerPoint:function(t){for(var e,i,n=1/0,s=this._parts,a=null,r=0,h=s.length;h>r;r++)for(var l=s[r],u=1,c=l.length;c>u;u++){e=l[u-1],i=l[u];var d=o.LineUtil._sqClosestPointOnSegment(t,e,i,!0);n>d&&(n=d,a=o.LineUtil._sqClosestPointOnSegment(t,e,i))}return a&&(a.distance=Math.sqrt(n)),a},getBounds:function(){return new o.LatLngBounds(this.getLatLngs())},_convertLatLngs:function(t,e){var i,n,s=e?t:[];for(i=0,n=t.length;n>i;i++){if(o.Util.isArray(t[i])&&\"number\"!=typeof t[i][0])return;s[i]=o.latLng(t[i])}return s},_initEvents:function(){o.Path.prototype._initEvents.call(this)},_getPathPartStr:function(t){for(var e,i=o.Path.VML,n=0,s=t.length,a=\"\";s>n;n++)e=t[n],i&&e._round(),a+=(n?\"L\":\"M\")+e.x+\" \"+e.y;return a},_clipPoints:function(){var t,e,i,n=this._originalPoints,s=n.length;if(this.options.noClip)return void(this._parts=[n]);this._parts=[];var a=this._parts,r=this._map._pathViewport,h=o.LineUtil;for(t=0,e=0;s-1>t;t++)i=h.clipSegment(n[t],n[t+1],r,t),i&&(a[e]=a[e]||[],a[e].push(i[0]),(i[1]!==n[t+1]||t===s-2)&&(a[e].push(i[1]),e++))},_simplifyPoints:function(){for(var t=this._parts,e=o.LineUtil,i=0,n=t.length;n>i;i++)t[i]=e.simplify(t[i],this.options.smoothFactor)},_updatePath:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),o.Path.prototype._updatePath.call(this))}}),o.polyline=function(t,e){return new o.Polyline(t,e)},o.PolyUtil={},o.PolyUtil.clipPolygon=function(t,e){var i,n,s,a,r,h,l,u,c,d=[1,4,2,8],p=o.LineUtil;for(n=0,l=t.length;l>n;n++)t[n]._code=p._getBitCode(t[n],e);for(a=0;4>a;a++){for(u=d[a],i=[],n=0,l=t.length,s=l-1;l>n;s=n++)r=t[n],h=t[s],r._code&u?h._code&u||(c=p._getEdgeIntersection(h,r,u,e),c._code=p._getBitCode(c,e),i.push(c)):(h._code&u&&(c=p._getEdgeIntersection(h,r,u,e),c._code=p._getBitCode(c,e),i.push(c)),i.push(r));t=i}return t},o.Polygon=o.Polyline.extend({options:{fill:!0},initialize:function(t,e){o.Polyline.prototype.initialize.call(this,t,e),this._initWithHoles(t)},_initWithHoles:function(t){var e,i,n;if(t&&o.Util.isArray(t[0])&&\"number\"!=typeof t[0][0])for(this._latlngs=this._convertLatLngs(t[0]),this._holes=t.slice(1),e=0,i=this._holes.length;i>e;e++)n=this._holes[e]=this._convertLatLngs(this._holes[e]),n[0].equals(n[n.length-1])&&n.pop();t=this._latlngs,t.length>=2&&t[0].equals(t[t.length-1])&&t.pop()},projectLatlngs:function(){if(o.Polyline.prototype.projectLatlngs.call(this),this._holePoints=[],this._holes){var t,e,i,n;for(t=0,i=this._holes.length;i>t;t++)for(this._holePoints[t]=[],e=0,n=this._holes[t].length;n>e;e++)this._holePoints[t][e]=this._map.latLngToLayerPoint(this._holes[t][e])}},setLatLngs:function(t){return t&&o.Util.isArray(t[0])&&\"number\"!=typeof t[0][0]?(this._initWithHoles(t),this.redraw()):o.Polyline.prototype.setLatLngs.call(this,t)},_clipPoints:function(){var t=this._originalPoints,e=[];if(this._parts=[t].concat(this._holePoints),!this.options.noClip){for(var i=0,n=this._parts.length;n>i;i++){var s=o.PolyUtil.clipPolygon(this._parts[i],this._map._pathViewport);s.length&&e.push(s)}this._parts=e}},_getPathPartStr:function(t){var e=o.Polyline.prototype._getPathPartStr.call(this,t);return e+(o.Browser.svg?\"z\":\"x\")}}),o.polygon=function(t,e){return new o.Polygon(t,e)},function(){function t(t){return o.FeatureGroup.extend({initialize:function(t,e){this._layers={},this._options=e,this.setLatLngs(t)},setLatLngs:function(e){var i=0,n=e.length;for(this.eachLayer(function(t){n>i?t.setLatLngs(e[i++]):this.removeLayer(t)},this);n>i;)this.addLayer(new t(e[i++],this._options));return this},getLatLngs:function(){var t=[];return this.eachLayer(function(e){t.push(e.getLatLngs())}),t}})}o.MultiPolyline=t(o.Polyline),o.MultiPolygon=t(o.Polygon),o.multiPolyline=function(t,e){return new o.MultiPolyline(t,e)},o.multiPolygon=function(t,e){return new o.MultiPolygon(t,e)}}(),o.Rectangle=o.Polygon.extend({initialize:function(t,e){o.Polygon.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=o.latLngBounds(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}}),o.rectangle=function(t,e){return new o.Rectangle(t,e)},o.Circle=o.Path.extend({initialize:function(t,e,i){o.Path.prototype.initialize.call(this,i),this._latlng=o.latLng(t),this._mRadius=e},options:{fill:!0},setLatLng:function(t){return this._latlng=o.latLng(t),this.redraw()},setRadius:function(t){return this._mRadius=t,this.redraw()},projectLatlngs:function(){var t=this._getLngRadius(),e=this._latlng,i=this._map.latLngToLayerPoint([e.lat,e.lng-t]);this._point=this._map.latLngToLayerPoint(e),this._radius=Math.max(this._point.x-i.x,1)},getBounds:function(){var t=this._getLngRadius(),e=this._mRadius/40075017*360,i=this._latlng;return new o.LatLngBounds([i.lat-e,i.lng-t],[i.lat+e,i.lng+t])},getLatLng:function(){return this._latlng},getPathString:function(){var t=this._point,e=this._radius;return this._checkIfEmpty()?\"\":o.Browser.svg?\"M\"+t.x+\",\"+(t.y-e)+\"A\"+e+\",\"+e+\",0,1,1,\"+(t.x-.1)+\",\"+(t.y-e)+\" z\":(t._round(),e=Math.round(e),\"AL \"+t.x+\",\"+t.y+\" \"+e+\",\"+e+\" 0,23592600\")},getRadius:function(){return this._mRadius},_getLatRadius:function(){return this._mRadius/40075017*360},_getLngRadius:function(){return this._getLatRadius()/Math.cos(o.LatLng.DEG_TO_RAD*this._latlng.lat)},_checkIfEmpty:function(){if(!this._map)return!1;var t=this._map._pathViewport,e=this._radius,i=this._point;return i.x-e>t.max.x||i.y-e>t.max.y||i.x+ei;i++)for(l=this._parts[i],n=0,r=l.length,s=r-1;r>n;s=n++)if((e||0!==n)&&(h=o.LineUtil.pointToSegmentDistance(t,l[s],l[n]),u>=h))return!0;return!1}}:{}),o.Polygon.include(o.Path.CANVAS?{_containsPoint:function(t){var e,i,n,s,a,r,h,l,u=!1;if(o.Polyline.prototype._containsPoint.call(this,t,!0))return!0;for(s=0,h=this._parts.length;h>s;s++)for(e=this._parts[s],a=0,l=e.length,r=l-1;l>a;r=a++)i=e[a],n=e[r],i.y>t.y!=n.y>t.y&&t.x<(n.x-i.x)*(t.y-i.y)/(n.y-i.y)+i.x&&(u=!u);return u}}:{}),o.Circle.include(o.Path.CANVAS?{_drawPath:function(){var t=this._point;this._ctx.beginPath(),this._ctx.arc(t.x,t.y,this._radius,0,2*Math.PI,!1)},_containsPoint:function(t){var e=this._point,i=this.options.stroke?this.options.weight/2:0;return t.distanceTo(e)<=this._radius+i}}:{}),o.CircleMarker.include(o.Path.CANVAS?{_updateStyle:function(){o.Path.prototype._updateStyle.call(this)}}:{}),o.GeoJSON=o.FeatureGroup.extend({initialize:function(t,e){o.setOptions(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,n,s=o.Util.isArray(t)?t:t.features;if(s){for(e=0,i=s.length;i>e;e++)n=s[e],(n.geometries||n.geometry||n.features||n.coordinates)&&this.addData(s[e]);return this}var a=this.options;if(!a.filter||a.filter(t)){var r=o.GeoJSON.geometryToLayer(t,a.pointToLayer,a.coordsToLatLng,a);return r.feature=o.GeoJSON.asFeature(t),r.defaultOptions=r.options,this.resetStyle(r),a.onEachFeature&&a.onEachFeature(t,r),this.addLayer(r)}},resetStyle:function(t){var e=this.options.style;e&&(o.Util.extend(t.options,t.defaultOptions),this._setLayerStyle(t,e))},setStyle:function(t){this.eachLayer(function(e){this._setLayerStyle(e,t)},this)},_setLayerStyle:function(t,e){\"function\"==typeof e&&(e=e(t.feature)),t.setStyle&&t.setStyle(e)}}),o.extend(o.GeoJSON,{geometryToLayer:function(t,e,i,n){var s,a,r,h,l=\"Feature\"===t.type?t.geometry:t,u=l.coordinates,c=[];switch(i=i||this.coordsToLatLng,l.type){case\"Point\":return s=i(u),e?e(t,s):new o.Marker(s);case\"MultiPoint\":for(r=0,h=u.length;h>r;r++)s=i(u[r]),c.push(e?e(t,s):new o.Marker(s));return new o.FeatureGroup(c);case\"LineString\":return a=this.coordsToLatLngs(u,0,i),new o.Polyline(a,n);case\"Polygon\":if(2===u.length&&!u[1].length)throw new Error(\"Invalid GeoJSON object.\");return a=this.coordsToLatLngs(u,1,i),new o.Polygon(a,n);case\"MultiLineString\":return a=this.coordsToLatLngs(u,1,i),new o.MultiPolyline(a,n);case\"MultiPolygon\":return a=this.coordsToLatLngs(u,2,i),new o.MultiPolygon(a,n);case\"GeometryCollection\":for(r=0,h=l.geometries.length;h>r;r++)c.push(this.geometryToLayer({geometry:l.geometries[r],type:\"Feature\",properties:t.properties},e,i,n));return new o.FeatureGroup(c);default:throw new Error(\"Invalid GeoJSON object.\")}},coordsToLatLng:function(t){return new o.LatLng(t[1],t[0],t[2])},coordsToLatLngs:function(t,e,i){var n,o,s,a=[];for(o=0,s=t.length;s>o;o++)n=e?this.coordsToLatLngs(t[o],e-1,i):(i||this.coordsToLatLng)(t[o]),a.push(n);return a},latLngToCoords:function(t){var e=[t.lng,t.lat];return t.alt!==i&&e.push(t.alt),e},latLngsToCoords:function(t){for(var e=[],i=0,n=t.length;n>i;i++)e.push(o.GeoJSON.latLngToCoords(t[i]));return e},getFeature:function(t,e){return t.feature?o.extend({},t.feature,{geometry:e}):o.GeoJSON.asFeature(e)},asFeature:function(t){return\"Feature\"===t.type?t:{type:\"Feature\",properties:{},geometry:t}}});var a={toGeoJSON:function(){return o.GeoJSON.getFeature(this,{type:\"Point\",coordinates:o.GeoJSON.latLngToCoords(this.getLatLng())})}};o.Marker.include(a),o.Circle.include(a),o.CircleMarker.include(a),o.Polyline.include({toGeoJSON:function(){return o.GeoJSON.getFeature(this,{type:\"LineString\",coordinates:o.GeoJSON.latLngsToCoords(this.getLatLngs())})}}),o.Polygon.include({toGeoJSON:function(){var t,e,i,n=[o.GeoJSON.latLngsToCoords(this.getLatLngs())];if(n[0].push(n[0][0]),this._holes)for(t=0,e=this._holes.length;e>t;t++)i=o.GeoJSON.latLngsToCoords(this._holes[t]),i.push(i[0]),n.push(i);return o.GeoJSON.getFeature(this,{type:\"Polygon\",coordinates:n})}}),function(){function t(t){return function(){var e=[];return this.eachLayer(function(t){e.push(t.toGeoJSON().geometry.coordinates)}),o.GeoJSON.getFeature(this,{type:t,coordinates:e})}}o.MultiPolyline.include({toGeoJSON:t(\"MultiLineString\")}),o.MultiPolygon.include({toGeoJSON:t(\"MultiPolygon\")}),o.LayerGroup.include({toGeoJSON:function(){var e,i=this.feature&&this.feature.geometry,n=[];if(i&&\"MultiPoint\"===i.type)return t(\"MultiPoint\").call(this);var s=i&&\"GeometryCollection\"===i.type;return this.eachLayer(function(t){t.toGeoJSON&&(e=t.toGeoJSON(),n.push(s?e.geometry:o.GeoJSON.asFeature(e)))}),s?o.GeoJSON.getFeature(this,{geometries:n,type:\"GeometryCollection\"}):{type:\"FeatureCollection\",features:n}}})}(),o.geoJson=function(t,e){return new o.GeoJSON(t,e)},o.DomEvent={addListener:function(t,e,i,n){var s,a,r,h=o.stamp(i),l=\"_leaflet_\"+e+h;return t[l]?this:(s=function(e){return i.call(n||t,e||o.DomEvent._getEvent())},o.Browser.pointer&&0===e.indexOf(\"touch\")?this.addPointerListener(t,e,s,h):(o.Browser.touch&&\"dblclick\"===e&&this.addDoubleTapListener&&this.addDoubleTapListener(t,s,h),\"addEventListener\"in t?\"mousewheel\"===e?(t.addEventListener(\"DOMMouseScroll\",s,!1),t.addEventListener(e,s,!1)):\"mouseenter\"===e||\"mouseleave\"===e?(a=s,r=\"mouseenter\"===e?\"mouseover\":\"mouseout\",s=function(e){return o.DomEvent._checkMouse(t,e)?a(e):void 0},t.addEventListener(r,s,!1)):\"click\"===e&&o.Browser.android?(a=s,s=function(t){return o.DomEvent._filterClick(t,a)},t.addEventListener(e,s,!1)):t.addEventListener(e,s,!1):\"attachEvent\"in t&&t.attachEvent(\"on\"+e,s),t[l]=s,this))},removeListener:function(t,e,i){var n=o.stamp(i),s=\"_leaflet_\"+e+n,a=t[s];return a?(o.Browser.pointer&&0===e.indexOf(\"touch\")?this.removePointerListener(t,e,n):o.Browser.touch&&\"dblclick\"===e&&this.removeDoubleTapListener?this.removeDoubleTapListener(t,n):\"removeEventListener\"in t?\"mousewheel\"===e?(t.removeEventListener(\"DOMMouseScroll\",a,!1),t.removeEventListener(e,a,!1)):\"mouseenter\"===e||\"mouseleave\"===e?t.removeEventListener(\"mouseenter\"===e?\"mouseover\":\"mouseout\",a,!1):t.removeEventListener(e,a,!1):\"detachEvent\"in t&&t.detachEvent(\"on\"+e,a),t[s]=null,this):this},stopPropagation:function(t){return t.stopPropagation?t.stopPropagation():t.cancelBubble=!0,o.DomEvent._skipped(t),this},disableScrollPropagation:function(t){var e=o.DomEvent.stopPropagation;return o.DomEvent.on(t,\"mousewheel\",e).on(t,\"MozMousePixelScroll\",e)},disableClickPropagation:function(t){for(var e=o.DomEvent.stopPropagation,i=o.Draggable.START.length-1;i>=0;i--)o.DomEvent.on(t,o.Draggable.START[i],e);return o.DomEvent.on(t,\"click\",o.DomEvent._fakeStop).on(t,\"dblclick\",e)},preventDefault:function(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this},stop:function(t){return o.DomEvent.preventDefault(t).stopPropagation(t)},getMousePosition:function(t,e){if(!e)return new o.Point(t.clientX,t.clientY);var i=e.getBoundingClientRect();return new o.Point(t.clientX-i.left-e.clientLeft,t.clientY-i.top-e.clientTop)},getWheelDelta:function(t){var e=0;return t.wheelDelta&&(e=t.wheelDelta/120),t.detail&&(e=-t.detail/3),e},_skipEvents:{},_fakeStop:function(t){o.DomEvent._skipEvents[t.type]=!0},_skipped:function(t){var e=this._skipEvents[t.type];return this._skipEvents[t.type]=!1,e},_checkMouse:function(t,e){var i=e.relatedTarget;if(!i)return!0;try{for(;i&&i!==t;)i=i.parentNode}catch(n){return!1}return i!==t},_getEvent:function(){var e=t.event;if(!e)for(var i=arguments.callee.caller;i&&(e=i.arguments[0],!e||t.Event!==e.constructor);)i=i.caller;return e},_filterClick:function(t,e){var i=t.timeStamp||t.originalEvent.timeStamp,n=o.DomEvent._lastClick&&i-o.DomEvent._lastClick;return n&&n>100&&500>n||t.target._simulatedClick&&!t._simulated?void o.DomEvent.stop(t):(o.DomEvent._lastClick=i,e(t))}},o.DomEvent.on=o.DomEvent.addListener,o.DomEvent.off=o.DomEvent.removeListener,o.Draggable=o.Class.extend({includes:o.Mixin.Events,statics:{START:o.Browser.touch?[\"touchstart\",\"mousedown\"]:[\"mousedown\"],END:{mousedown:\"mouseup\",touchstart:\"touchend\",pointerdown:\"touchend\",MSPointerDown:\"touchend\"},MOVE:{mousedown:\"mousemove\",touchstart:\"touchmove\",pointerdown:\"touchmove\",MSPointerDown:\"touchmove\"}},initialize:function(t,e){this._element=t,this._dragStartTarget=e||t},enable:function(){if(!this._enabled){for(var t=o.Draggable.START.length-1;t>=0;t--)o.DomEvent.on(this._dragStartTarget,o.Draggable.START[t],this._onDown,this);this._enabled=!0}},disable:function(){if(this._enabled){for(var t=o.Draggable.START.length-1;t>=0;t--)o.DomEvent.off(this._dragStartTarget,o.Draggable.START[t],this._onDown,this);this._enabled=!1,this._moved=!1}},_onDown:function(t){if(this._moved=!1,!t.shiftKey&&(1===t.which||1===t.button||t.touches)&&(o.DomEvent.stopPropagation(t),!o.Draggable._disabled&&(o.DomUtil.disableImageDrag(),o.DomUtil.disableTextSelection(),!this._moving))){var i=t.touches?t.touches[0]:t;this._startPoint=new o.Point(i.clientX,i.clientY),this._startPos=this._newPos=o.DomUtil.getPosition(this._element),o.DomEvent.on(e,o.Draggable.MOVE[t.type],this._onMove,this).on(e,o.Draggable.END[t.type],this._onUp,this)}},_onMove:function(t){if(t.touches&&t.touches.length>1)return void(this._moved=!0);var i=t.touches&&1===t.touches.length?t.touches[0]:t,n=new o.Point(i.clientX,i.clientY),s=n.subtract(this._startPoint);(s.x||s.y)&&(o.Browser.touch&&Math.abs(s.x)+Math.abs(s.y)<3||(o.DomEvent.preventDefault(t),this._moved||(this.fire(\"dragstart\"),this._moved=!0,this._startPos=o.DomUtil.getPosition(this._element).subtract(s),o.DomUtil.addClass(e.body,\"leaflet-dragging\"),this._lastTarget=t.target||t.srcElement,o.DomUtil.addClass(this._lastTarget,\"leaflet-drag-target\")),this._newPos=this._startPos.add(s),this._moving=!0,o.Util.cancelAnimFrame(this._animRequest),this._animRequest=o.Util.requestAnimFrame(this._updatePosition,this,!0,this._dragStartTarget)))},_updatePosition:function(){this.fire(\"predrag\"),o.DomUtil.setPosition(this._element,this._newPos),this.fire(\"drag\")},_onUp:function(){o.DomUtil.removeClass(e.body,\"leaflet-dragging\"),this._lastTarget&&(o.DomUtil.removeClass(this._lastTarget,\"leaflet-drag-target\"),this._lastTarget=null);for(var t in o.Draggable.MOVE)o.DomEvent.off(e,o.Draggable.MOVE[t],this._onMove).off(e,o.Draggable.END[t],this._onUp);o.DomUtil.enableImageDrag(),o.DomUtil.enableTextSelection(),this._moved&&this._moving&&(o.Util.cancelAnimFrame(this._animRequest),this.fire(\"dragend\",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1}}),o.Handler=o.Class.extend({initialize:function(t){this._map=t},enable:function(){this._enabled||(this._enabled=!0,this.addHooks())},disable:function(){this._enabled&&(this._enabled=!1,this.removeHooks())},enabled:function(){return!!this._enabled}}),o.Map.mergeOptions({dragging:!0,inertia:!o.Browser.android23,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,inertiaThreshold:o.Browser.touch?32:18,easeLinearity:.25,worldCopyJump:!1}),o.Map.Drag=o.Handler.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new o.Draggable(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),t.options.worldCopyJump&&(this._draggable.on(\"predrag\",this._onPreDrag,this),t.on(\"viewreset\",this._onViewReset,this),t.whenReady(this._onViewReset,this))}this._draggable.enable()},removeHooks:function(){this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){var t=this._map;t._panAnim&&t._panAnim.stop(),t.fire(\"movestart\").fire(\"dragstart\"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(){if(this._map.options.inertia){var t=this._lastTime=+new Date,e=this._lastPos=this._draggable._newPos;this._positions.push(e),this._times.push(t),t-this._times[0]>200&&(this._positions.shift(),this._times.shift())}this._map.fire(\"move\").fire(\"drag\")},_onViewReset:function(){var t=this._map.getSize()._divideBy(2),e=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=e.subtract(t).x,this._worldWidth=this._map.project([0,180]).x},_onPreDrag:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-e+i)%t+e-i,s=(n+e+i)%t-e-i,a=Math.abs(o+i)i.inertiaThreshold||!this._positions[0];if(e.fire(\"dragend\",t),s)e.fire(\"moveend\");else{var a=this._lastPos.subtract(this._positions[0]),r=(this._lastTime+n-this._times[0])/1e3,h=i.easeLinearity,l=a.multiplyBy(h/r),u=l.distanceTo([0,0]),c=Math.min(i.inertiaMaxSpeed,u),d=l.multiplyBy(c/u),p=c/(i.inertiaDeceleration*h),_=d.multiplyBy(-p/2).round();_.x&&_.y?(_=e._limitOffset(_,e.options.maxBounds),o.Util.requestAnimFrame(function(){e.panBy(_,{duration:p,easeLinearity:h,noMoveStart:!0})})):e.fire(\"moveend\")}}}),o.Map.addInitHook(\"addHandler\",\"dragging\",o.Map.Drag),o.Map.mergeOptions({doubleClickZoom:!0}),o.Map.DoubleClickZoom=o.Handler.extend({addHooks:function(){this._map.on(\"dblclick\",this._onDoubleClick,this)},removeHooks:function(){this._map.off(\"dblclick\",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom()+(t.originalEvent.shiftKey?-1:1);\"center\"===e.options.doubleClickZoom?e.setZoom(i):e.setZoomAround(t.containerPoint,i)}}),o.Map.addInitHook(\"addHandler\",\"doubleClickZoom\",o.Map.DoubleClickZoom),o.Map.mergeOptions({scrollWheelZoom:!0}),o.Map.ScrollWheelZoom=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,\"mousewheel\",this._onWheelScroll,this),o.DomEvent.on(this._map._container,\"MozMousePixelScroll\",o.DomEvent.preventDefault),this._delta=0},removeHooks:function(){o.DomEvent.off(this._map._container,\"mousewheel\",this._onWheelScroll),o.DomEvent.off(this._map._container,\"MozMousePixelScroll\",o.DomEvent.preventDefault)},_onWheelScroll:function(t){var e=o.DomEvent.getWheelDelta(t);this._delta+=e,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var i=Math.max(40-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(o.bind(this._performZoom,this),i),o.DomEvent.preventDefault(t),o.DomEvent.stopPropagation(t)},_performZoom:function(){var t=this._map,e=this._delta,i=t.getZoom();e=e>0?Math.ceil(e):Math.floor(e),e=Math.max(Math.min(e,4),-4),e=t._limitZoom(i+e)-i,this._delta=0,this._startTime=null,e&&(\"center\"===t.options.scrollWheelZoom?t.setZoom(i+e):t.setZoomAround(this._lastMousePos,i+e))}}),o.Map.addInitHook(\"addHandler\",\"scrollWheelZoom\",o.Map.ScrollWheelZoom),o.extend(o.DomEvent,{_touchstart:o.Browser.msPointer?\"MSPointerDown\":o.Browser.pointer?\"pointerdown\":\"touchstart\",_touchend:o.Browser.msPointer?\"MSPointerUp\":o.Browser.pointer?\"pointerup\":\"touchend\",addDoubleTapListener:function(t,i,n){function s(t){var e;if(o.Browser.pointer?(_.push(t.pointerId),e=_.length):e=t.touches.length,!(e>1)){var i=Date.now(),n=i-(r||i);h=t.touches?t.touches[0]:t,l=n>0&&u>=n,r=i}}function a(t){if(o.Browser.pointer){var e=_.indexOf(t.pointerId);if(-1===e)return;_.splice(e,1)}if(l){if(o.Browser.pointer){var n,s={};for(var a in h)n=h[a],\"function\"==typeof n?s[a]=n.bind(h):s[a]=n;h=s}h.type=\"dblclick\",i(h),r=null}}var r,h,l=!1,u=250,c=\"_leaflet_\",d=this._touchstart,p=this._touchend,_=[];t[c+d+n]=s,t[c+p+n]=a;var m=o.Browser.pointer?e.documentElement:t;return t.addEventListener(d,s,!1),m.addEventListener(p,a,!1),o.Browser.pointer&&m.addEventListener(o.DomEvent.POINTER_CANCEL,a,!1),this},removeDoubleTapListener:function(t,i){var n=\"_leaflet_\";return t.removeEventListener(this._touchstart,t[n+this._touchstart+i],!1),(o.Browser.pointer?e.documentElement:t).removeEventListener(this._touchend,t[n+this._touchend+i],!1),o.Browser.pointer&&e.documentElement.removeEventListener(o.DomEvent.POINTER_CANCEL,t[n+this._touchend+i],!1),this}}),o.extend(o.DomEvent,{POINTER_DOWN:o.Browser.msPointer?\"MSPointerDown\":\"pointerdown\",POINTER_MOVE:o.Browser.msPointer?\"MSPointerMove\":\"pointermove\",POINTER_UP:o.Browser.msPointer?\"MSPointerUp\":\"pointerup\",POINTER_CANCEL:o.Browser.msPointer?\"MSPointerCancel\":\"pointercancel\",_pointers:[],_pointerDocumentListener:!1,addPointerListener:function(t,e,i,n){switch(e){case\"touchstart\":return this.addPointerListenerStart(t,e,i,n);\ncase\"touchend\":return this.addPointerListenerEnd(t,e,i,n);case\"touchmove\":return this.addPointerListenerMove(t,e,i,n);default:throw\"Unknown touch event type\"}},addPointerListenerStart:function(t,i,n,s){var a=\"_leaflet_\",r=this._pointers,h=function(t){\"mouse\"!==t.pointerType&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&o.DomEvent.preventDefault(t);for(var e=!1,i=0;i1))&&(this._moved||(o.DomUtil.addClass(e._mapPane,\"leaflet-touching\"),e.fire(\"movestart\").fire(\"zoomstart\"),this._moved=!0),o.Util.cancelAnimFrame(this._animRequest),this._animRequest=o.Util.requestAnimFrame(this._updateOnMove,this,!0,this._map._container),o.DomEvent.preventDefault(t))}},_updateOnMove:function(){var t=this._map,e=this._getScaleOrigin(),i=t.layerPointToLatLng(e),n=t.getScaleZoom(this._scale);t._animateZoom(i,n,this._startCenter,this._scale,this._delta,!1,!0)},_onTouchEnd:function(){if(!this._moved||!this._zooming)return void(this._zooming=!1);var t=this._map;this._zooming=!1,o.DomUtil.removeClass(t._mapPane,\"leaflet-touching\"),o.Util.cancelAnimFrame(this._animRequest),o.DomEvent.off(e,\"touchmove\",this._onTouchMove).off(e,\"touchend\",this._onTouchEnd);var i=this._getScaleOrigin(),n=t.layerPointToLatLng(i),s=t.getZoom(),a=t.getScaleZoom(this._scale)-s,r=a>0?Math.ceil(a):Math.floor(a),h=t._limitZoom(s+r),l=t.getZoomScale(h)/this._scale;t._animateZoom(n,h,i,l)},_getScaleOrigin:function(){var t=this._centerOffset.subtract(this._delta).divideBy(this._scale);return this._startCenter.add(t)}}),o.Map.addInitHook(\"addHandler\",\"touchZoom\",o.Map.TouchZoom),o.Map.mergeOptions({tap:!0,tapTolerance:15}),o.Map.Tap=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,\"touchstart\",this._onDown,this)},removeHooks:function(){o.DomEvent.off(this._map._container,\"touchstart\",this._onDown,this)},_onDown:function(t){if(t.touches){if(o.DomEvent.preventDefault(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new o.Point(i.clientX,i.clientY),n.tagName&&\"a\"===n.tagName.toLowerCase()&&o.DomUtil.addClass(n,\"leaflet-active\"),this._holdTimeout=setTimeout(o.bind(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent(\"contextmenu\",i))},this),1e3),o.DomEvent.on(e,\"touchmove\",this._onMove,this).on(e,\"touchend\",this._onUp,this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),o.DomEvent.off(e,\"touchmove\",this._onMove,this).off(e,\"touchend\",this._onUp,this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],n=i.target;n&&n.tagName&&\"a\"===n.tagName.toLowerCase()&&o.DomUtil.removeClass(n,\"leaflet-active\"),this._isTapValid()&&this._simulateEvent(\"click\",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var e=t.touches[0];this._newPos=new o.Point(e.clientX,e.clientY)},_simulateEvent:function(i,n){var o=e.createEvent(\"MouseEvents\");o._simulated=!0,n.target._simulatedClick=!0,o.initMouseEvent(i,!0,!0,t,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),n.target.dispatchEvent(o)}}),o.Browser.touch&&!o.Browser.pointer&&o.Map.addInitHook(\"addHandler\",\"tap\",o.Map.Tap),o.Map.mergeOptions({boxZoom:!0}),o.Map.BoxZoom=o.Handler.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._moved=!1},addHooks:function(){o.DomEvent.on(this._container,\"mousedown\",this._onMouseDown,this)},removeHooks:function(){o.DomEvent.off(this._container,\"mousedown\",this._onMouseDown),this._moved=!1},moved:function(){return this._moved},_onMouseDown:function(t){return this._moved=!1,!t.shiftKey||1!==t.which&&1!==t.button?!1:(o.DomUtil.disableTextSelection(),o.DomUtil.disableImageDrag(),this._startLayerPoint=this._map.mouseEventToLayerPoint(t),void o.DomEvent.on(e,\"mousemove\",this._onMouseMove,this).on(e,\"mouseup\",this._onMouseUp,this).on(e,\"keydown\",this._onKeyDown,this))},_onMouseMove:function(t){this._moved||(this._box=o.DomUtil.create(\"div\",\"leaflet-zoom-box\",this._pane),o.DomUtil.setPosition(this._box,this._startLayerPoint),this._container.style.cursor=\"crosshair\",this._map.fire(\"boxzoomstart\"));var e=this._startLayerPoint,i=this._box,n=this._map.mouseEventToLayerPoint(t),s=n.subtract(e),a=new o.Point(Math.min(n.x,e.x),Math.min(n.y,e.y));o.DomUtil.setPosition(i,a),this._moved=!0,i.style.width=Math.max(0,Math.abs(s.x)-4)+\"px\",i.style.height=Math.max(0,Math.abs(s.y)-4)+\"px\"},_finish:function(){this._moved&&(this._pane.removeChild(this._box),this._container.style.cursor=\"\"),o.DomUtil.enableTextSelection(),o.DomUtil.enableImageDrag(),o.DomEvent.off(e,\"mousemove\",this._onMouseMove).off(e,\"mouseup\",this._onMouseUp).off(e,\"keydown\",this._onKeyDown)},_onMouseUp:function(t){this._finish();var e=this._map,i=e.mouseEventToLayerPoint(t);if(!this._startLayerPoint.equals(i)){var n=new o.LatLngBounds(e.layerPointToLatLng(this._startLayerPoint),e.layerPointToLatLng(i));e.fitBounds(n),e.fire(\"boxzoomend\",{boxZoomBounds:n})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}}),o.Map.addInitHook(\"addHandler\",\"boxZoom\",o.Map.BoxZoom),o.Map.mergeOptions({keyboard:!0,keyboardPanOffset:80,keyboardZoomOffset:1}),o.Map.Keyboard=o.Handler.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,173]},initialize:function(t){this._map=t,this._setPanOffset(t.options.keyboardPanOffset),this._setZoomOffset(t.options.keyboardZoomOffset)},addHooks:function(){var t=this._map._container;-1===t.tabIndex&&(t.tabIndex=\"0\"),o.DomEvent.on(t,\"focus\",this._onFocus,this).on(t,\"blur\",this._onBlur,this).on(t,\"mousedown\",this._onMouseDown,this),this._map.on(\"focus\",this._addHooks,this).on(\"blur\",this._removeHooks,this)},removeHooks:function(){this._removeHooks();var t=this._map._container;o.DomEvent.off(t,\"focus\",this._onFocus,this).off(t,\"blur\",this._onBlur,this).off(t,\"mousedown\",this._onMouseDown,this),this._map.off(\"focus\",this._addHooks,this).off(\"blur\",this._removeHooks,this)},_onMouseDown:function(){if(!this._focused){var i=e.body,n=e.documentElement,o=i.scrollTop||n.scrollTop,s=i.scrollLeft||n.scrollLeft;this._map._container.focus(),t.scrollTo(s,o)}},_onFocus:function(){this._focused=!0,this._map.fire(\"focus\")},_onBlur:function(){this._focused=!1,this._map.fire(\"blur\")},_setPanOffset:function(t){var e,i,n=this._panKeys={},o=this.keyCodes;for(e=0,i=o.left.length;i>e;e++)n[o.left[e]]=[-1*t,0];for(e=0,i=o.right.length;i>e;e++)n[o.right[e]]=[t,0];for(e=0,i=o.down.length;i>e;e++)n[o.down[e]]=[0,t];for(e=0,i=o.up.length;i>e;e++)n[o.up[e]]=[0,-1*t]},_setZoomOffset:function(t){var e,i,n=this._zoomKeys={},o=this.keyCodes;for(e=0,i=o.zoomIn.length;i>e;e++)n[o.zoomIn[e]]=t;for(e=0,i=o.zoomOut.length;i>e;e++)n[o.zoomOut[e]]=-t},_addHooks:function(){o.DomEvent.on(e,\"keydown\",this._onKeyDown,this)},_removeHooks:function(){o.DomEvent.off(e,\"keydown\",this._onKeyDown,this)},_onKeyDown:function(t){var e=t.keyCode,i=this._map;if(e in this._panKeys){if(i._panAnim&&i._panAnim._inProgress)return;i.panBy(this._panKeys[e]),i.options.maxBounds&&i.panInsideBounds(i.options.maxBounds)}else{if(!(e in this._zoomKeys))return;i.setZoom(i.getZoom()+this._zoomKeys[e])}o.DomEvent.stop(t)}}),o.Map.addInitHook(\"addHandler\",\"keyboard\",o.Map.Keyboard),o.Handler.MarkerDrag=o.Handler.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new o.Draggable(t,t)),this._draggable.on(\"dragstart\",this._onDragStart,this).on(\"drag\",this._onDrag,this).on(\"dragend\",this._onDragEnd,this),this._draggable.enable(),o.DomUtil.addClass(this._marker._icon,\"leaflet-marker-draggable\")},removeHooks:function(){this._draggable.off(\"dragstart\",this._onDragStart,this).off(\"drag\",this._onDrag,this).off(\"dragend\",this._onDragEnd,this),this._draggable.disable(),o.DomUtil.removeClass(this._marker._icon,\"leaflet-marker-draggable\")},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){this._marker.closePopup().fire(\"movestart\").fire(\"dragstart\")},_onDrag:function(){var t=this._marker,e=t._shadow,i=o.DomUtil.getPosition(t._icon),n=t._map.layerPointToLatLng(i);e&&o.DomUtil.setPosition(e,i),t._latlng=n,t.fire(\"move\",{latlng:n}).fire(\"drag\")},_onDragEnd:function(t){this._marker.fire(\"moveend\").fire(\"dragend\",t)}}),o.Control=o.Class.extend({options:{position:\"topright\"},initialize:function(t){o.setOptions(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),n=t._controlCorners[i];return o.DomUtil.addClass(e,\"leaflet-control\"),-1!==i.indexOf(\"bottom\")?n.insertBefore(e,n.firstChild):n.appendChild(e),this},removeFrom:function(t){var e=this.getPosition(),i=t._controlCorners[e];return i.removeChild(this._container),this._map=null,this.onRemove&&this.onRemove(t),this},_refocusOnMap:function(){this._map&&this._map.getContainer().focus()}}),o.control=function(t){return new o.Control(t)},o.Map.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.removeFrom(this),this},_initControlPos:function(){function t(t,s){var a=i+t+\" \"+i+s;e[t+s]=o.DomUtil.create(\"div\",a,n)}var e=this._controlCorners={},i=\"leaflet-\",n=this._controlContainer=o.DomUtil.create(\"div\",i+\"control-container\",this._container);t(\"top\",\"left\"),t(\"top\",\"right\"),t(\"bottom\",\"left\"),t(\"bottom\",\"right\")},_clearControlPos:function(){this._container.removeChild(this._controlContainer)}}),o.Control.Zoom=o.Control.extend({options:{position:\"topleft\",zoomInText:\"+\",zoomInTitle:\"Zoom in\",zoomOutText:\"-\",zoomOutTitle:\"Zoom out\"},onAdd:function(t){var e=\"leaflet-control-zoom\",i=o.DomUtil.create(\"div\",e+\" leaflet-bar\");return this._map=t,this._zoomInButton=this._createButton(this.options.zoomInText,this.options.zoomInTitle,e+\"-in\",i,this._zoomIn,this),this._zoomOutButton=this._createButton(this.options.zoomOutText,this.options.zoomOutTitle,e+\"-out\",i,this._zoomOut,this),this._updateDisabled(),t.on(\"zoomend zoomlevelschange\",this._updateDisabled,this),i},onRemove:function(t){t.off(\"zoomend zoomlevelschange\",this._updateDisabled,this)},_zoomIn:function(t){this._map.zoomIn(t.shiftKey?3:1)},_zoomOut:function(t){this._map.zoomOut(t.shiftKey?3:1)},_createButton:function(t,e,i,n,s,a){var r=o.DomUtil.create(\"a\",i,n);r.innerHTML=t,r.href=\"#\",r.title=e;var h=o.DomEvent.stopPropagation;return o.DomEvent.on(r,\"click\",h).on(r,\"mousedown\",h).on(r,\"dblclick\",h).on(r,\"click\",o.DomEvent.preventDefault).on(r,\"click\",s,a).on(r,\"click\",this._refocusOnMap,a),r},_updateDisabled:function(){var t=this._map,e=\"leaflet-disabled\";o.DomUtil.removeClass(this._zoomInButton,e),o.DomUtil.removeClass(this._zoomOutButton,e),t._zoom===t.getMinZoom()&&o.DomUtil.addClass(this._zoomOutButton,e),t._zoom===t.getMaxZoom()&&o.DomUtil.addClass(this._zoomInButton,e)}}),o.Map.mergeOptions({zoomControl:!0}),o.Map.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new o.Control.Zoom,this.addControl(this.zoomControl))}),o.control.zoom=function(t){return new o.Control.Zoom(t)},o.Control.Attribution=o.Control.extend({options:{position:\"bottomright\",prefix:'Leaflet'},initialize:function(t){o.setOptions(this,t),this._attributions={}},onAdd:function(t){this._container=o.DomUtil.create(\"div\",\"leaflet-control-attribution\"),o.DomEvent.disableClickPropagation(this._container);for(var e in t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return t.on(\"layeradd\",this._onLayerAdd,this).on(\"layerremove\",this._onLayerRemove,this),this._update(),this._container},onRemove:function(t){t.off(\"layeradd\",this._onLayerAdd).off(\"layerremove\",this._onLayerRemove)},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):void 0},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):void 0},_update:function(){if(this._map){var t=[];for(var e in this._attributions)this._attributions[e]&&t.push(e);var i=[];this.options.prefix&&i.push(this.options.prefix),t.length&&i.push(t.join(\", \")),this._container.innerHTML=i.join(\" | \")}},_onLayerAdd:function(t){t.layer.getAttribution&&this.addAttribution(t.layer.getAttribution())},_onLayerRemove:function(t){t.layer.getAttribution&&this.removeAttribution(t.layer.getAttribution())}}),o.Map.mergeOptions({attributionControl:!0}),o.Map.addInitHook(function(){this.options.attributionControl&&(this.attributionControl=(new o.Control.Attribution).addTo(this))}),o.control.attribution=function(t){return new o.Control.Attribution(t)},o.Control.Scale=o.Control.extend({options:{position:\"bottomleft\",maxWidth:100,metric:!0,imperial:!0,updateWhenIdle:!1},onAdd:function(t){this._map=t;var e=\"leaflet-control-scale\",i=o.DomUtil.create(\"div\",e),n=this.options;return this._addScales(n,e,i),t.on(n.updateWhenIdle?\"moveend\":\"move\",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?\"moveend\":\"move\",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=o.DomUtil.create(\"div\",e+\"-line\",i)),t.imperial&&(this._iScale=o.DomUtil.create(\"div\",e+\"-line\",i))},_update:function(){var t=this._map.getBounds(),e=t.getCenter().lat,i=6378137*Math.PI*Math.cos(e*Math.PI/180),n=i*(t.getNorthEast().lng-t.getSouthWest().lng)/180,o=this._map.getSize(),s=this.options,a=0;o.x>0&&(a=n*(s.maxWidth/o.x)),this._updateScales(s,a)},_updateScales:function(t,e){t.metric&&e&&this._updateMetric(e),t.imperial&&e&&this._updateImperial(e)},_updateMetric:function(t){var e=this._getRoundNum(t);this._mScale.style.width=this._getScaleWidth(e/t)+\"px\",this._mScale.innerHTML=1e3>e?e+\" m\":e/1e3+\" km\"},_updateImperial:function(t){var e,i,n,o=3.2808399*t,s=this._iScale;o>5280?(e=o/5280,i=this._getRoundNum(e),s.style.width=this._getScaleWidth(i/e)+\"px\",s.innerHTML=i+\" mi\"):(n=this._getRoundNum(o),s.style.width=this._getScaleWidth(n/o)+\"px\",s.innerHTML=n+\" ft\")},_getScaleWidth:function(t){return Math.round(this.options.maxWidth*t)-10},_getRoundNum:function(t){var e=Math.pow(10,(Math.floor(t)+\"\").length-1),i=t/e;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:1,e*i}}),o.control.scale=function(t){return new o.Control.Scale(t)},o.Control.Layers=o.Control.extend({options:{collapsed:!0,position:\"topright\",autoZIndex:!0},initialize:function(t,e,i){o.setOptions(this,i),this._layers={},this._lastZIndex=0,this._handlingClick=!1;for(var n in t)this._addLayer(t[n],n);for(n in e)this._addLayer(e[n],n,!0)},onAdd:function(t){return this._initLayout(),this._update(),t.on(\"layeradd\",this._onLayerChange,this).on(\"layerremove\",this._onLayerChange,this),this._container},onRemove:function(t){t.off(\"layeradd\",this._onLayerChange,this).off(\"layerremove\",this._onLayerChange,this)},addBaseLayer:function(t,e){return this._addLayer(t,e),this._update(),this},addOverlay:function(t,e){return this._addLayer(t,e,!0),this._update(),this},removeLayer:function(t){var e=o.stamp(t);return delete this._layers[e],this._update(),this},_initLayout:function(){var t=\"leaflet-control-layers\",e=this._container=o.DomUtil.create(\"div\",t);e.setAttribute(\"aria-haspopup\",!0),o.Browser.touch?o.DomEvent.on(e,\"click\",o.DomEvent.stopPropagation):o.DomEvent.disableClickPropagation(e).disableScrollPropagation(e);var i=this._form=o.DomUtil.create(\"form\",t+\"-list\");if(this.options.collapsed){o.Browser.android||o.DomEvent.on(e,\"mouseover\",this._expand,this).on(e,\"mouseout\",this._collapse,this);var n=this._layersLink=o.DomUtil.create(\"a\",t+\"-toggle\",e);n.href=\"#\",n.title=\"Layers\",o.Browser.touch?o.DomEvent.on(n,\"click\",o.DomEvent.stop).on(n,\"click\",this._expand,this):o.DomEvent.on(n,\"focus\",this._expand,this),o.DomEvent.on(i,\"click\",function(){setTimeout(o.bind(this._onInputClick,this),0)},this),this._map.on(\"click\",this._collapse,this)}else this._expand();this._baseLayersList=o.DomUtil.create(\"div\",t+\"-base\",i),this._separator=o.DomUtil.create(\"div\",t+\"-separator\",i),this._overlaysList=o.DomUtil.create(\"div\",t+\"-overlays\",i),e.appendChild(i)},_addLayer:function(t,e,i){var n=o.stamp(t);this._layers[n]={layer:t,name:e,overlay:i},this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex))},_update:function(){if(this._container){this._baseLayersList.innerHTML=\"\",this._overlaysList.innerHTML=\"\";var t,e,i=!1,n=!1;for(t in this._layers)e=this._layers[t],this._addItem(e),n=n||e.overlay,i=i||!e.overlay;this._separator.style.display=n&&i?\"\":\"none\"}},_onLayerChange:function(t){var e=this._layers[o.stamp(t.layer)];if(e){this._handlingClick||this._update();var i=e.overlay?\"layeradd\"===t.type?\"overlayadd\":\"overlayremove\":\"layeradd\"===t.type?\"baselayerchange\":null;i&&this._map.fire(i,e)}},_createRadioElement:function(t,i){var n='\";var o=e.createElement(\"div\");return o.innerHTML=n,o.firstChild},_addItem:function(t){var i,n=e.createElement(\"label\"),s=this._map.hasLayer(t.layer);t.overlay?(i=e.createElement(\"input\"),i.type=\"checkbox\",i.className=\"leaflet-control-layers-selector\",i.defaultChecked=s):i=this._createRadioElement(\"leaflet-base-layers\",s),i.layerId=o.stamp(t.layer),o.DomEvent.on(i,\"click\",this._onInputClick,this);var a=e.createElement(\"span\");a.innerHTML=\" \"+t.name,n.appendChild(i),n.appendChild(a);var r=t.overlay?this._overlaysList:this._baseLayersList;return r.appendChild(n),n},_onInputClick:function(){var t,e,i,n=this._form.getElementsByTagName(\"input\"),o=n.length;for(this._handlingClick=!0,t=0;o>t;t++)e=n[t],i=this._layers[e.layerId],e.checked&&!this._map.hasLayer(i.layer)?this._map.addLayer(i.layer):!e.checked&&this._map.hasLayer(i.layer)&&this._map.removeLayer(i.layer);this._handlingClick=!1,this._refocusOnMap()},_expand:function(){o.DomUtil.addClass(this._container,\"leaflet-control-layers-expanded\")},_collapse:function(){this._container.className=this._container.className.replace(\" leaflet-control-layers-expanded\",\"\")}}),o.control.layers=function(t,e,i){return new o.Control.Layers(t,e,i)},o.PosAnimation=o.Class.extend({includes:o.Mixin.Events,run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._newPos=e,this.fire(\"start\"),t.style[o.DomUtil.TRANSITION]=\"all \"+(i||.25)+\"s cubic-bezier(0,0,\"+(n||.5)+\",1)\",o.DomEvent.on(t,o.DomUtil.TRANSITION_END,this._onTransitionEnd,this),o.DomUtil.setPosition(t,e),o.Util.falseFn(t.offsetWidth),this._stepTimer=setInterval(o.bind(this._onStep,this),50)},stop:function(){this._inProgress&&(o.DomUtil.setPosition(this._el,this._getPos()),this._onTransitionEnd(),o.Util.falseFn(this._el.offsetWidth))},_onStep:function(){var t=this._getPos();return t?(this._el._leaflet_pos=t,void this.fire(\"step\")):void this._onTransitionEnd()},_transformRe:/([-+]?(?:\\d*\\.)?\\d+)\\D*, ([-+]?(?:\\d*\\.)?\\d+)\\D*\\)/,_getPos:function(){var e,i,n,s=this._el,a=t.getComputedStyle(s);if(o.Browser.any3d){if(n=a[o.DomUtil.TRANSFORM].match(this._transformRe),!n)return;e=parseFloat(n[1]),i=parseFloat(n[2])}else e=parseFloat(a.left),i=parseFloat(a.top);return new o.Point(e,i,!0)},_onTransitionEnd:function(){o.DomEvent.off(this._el,o.DomUtil.TRANSITION_END,this._onTransitionEnd,this),this._inProgress&&(this._inProgress=!1,this._el.style[o.DomUtil.TRANSITION]=\"\",this._el._leaflet_pos=this._newPos,clearInterval(this._stepTimer),this.fire(\"step\").fire(\"end\"))}}),o.Map.include({setView:function(t,e,n){if(e=e===i?this._zoom:this._limitZoom(e),t=this._limitCenter(o.latLng(t),e,this.options.maxBounds),n=n||{},this._panAnim&&this._panAnim.stop(),this._loaded&&!n.reset&&n!==!0){n.animate!==i&&(n.zoom=o.extend({animate:n.animate},n.zoom),n.pan=o.extend({animate:n.animate},n.pan));var s=this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,n.zoom):this._tryAnimatedPan(t,n.pan);if(s)return clearTimeout(this._sizeTimer),this}return this._resetView(t,e),this},panBy:function(t,e){if(t=o.point(t).round(),e=e||{},!t.x&&!t.y)return this;if(this._panAnim||(this._panAnim=new o.PosAnimation,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),e.noMoveStart||this.fire(\"movestart\"),e.animate!==!1){o.DomUtil.addClass(this._mapPane,\"leaflet-pan-anim\");var i=this._getMapPanePos().subtract(t);this._panAnim.run(this._mapPane,i,e.duration||.25,e.easeLinearity)}else this._rawPanBy(t),this.fire(\"move\").fire(\"moveend\");return this},_onPanTransitionStep:function(){this.fire(\"move\")},_onPanTransitionEnd:function(){o.DomUtil.removeClass(this._mapPane,\"leaflet-pan-anim\"),this.fire(\"moveend\")},_tryAnimatedPan:function(t,e){var i=this._getCenterOffset(t)._floor();return(e&&e.animate)===!0||this.getSize().contains(i)?(this.panBy(i,e),!0):!1}}),o.PosAnimation=o.DomUtil.TRANSITION?o.PosAnimation:o.PosAnimation.extend({run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=i||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=o.DomUtil.getPosition(t),this._offset=e.subtract(this._startPos),this._startTime=+new Date,this.fire(\"start\"),this._animate()},stop:function(){this._inProgress&&(this._step(),this._complete())},_animate:function(){this._animId=o.Util.requestAnimFrame(this._animate,this),this._step()},_step:function(){var t=+new Date-this._startTime,e=1e3*this._duration;e>t?this._runFrame(this._easeOut(t/e)):(this._runFrame(1),this._complete())},_runFrame:function(t){var e=this._startPos.add(this._offset.multiplyBy(t));o.DomUtil.setPosition(this._el,e),this.fire(\"step\")},_complete:function(){o.Util.cancelAnimFrame(this._animId),this._inProgress=!1,this.fire(\"end\")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),o.Map.mergeOptions({zoomAnimation:!0,zoomAnimationThreshold:4}),o.DomUtil.TRANSITION&&o.Map.addInitHook(function(){this._zoomAnimated=this.options.zoomAnimation&&o.DomUtil.TRANSITION&&o.Browser.any3d&&!o.Browser.android23&&!o.Browser.mobileOpera,this._zoomAnimated&&o.DomEvent.on(this._mapPane,o.DomUtil.TRANSITION_END,this._catchTransitionEnd,this)}),o.Map.include(o.DomUtil.TRANSITION?{_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf(\"transform\")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName(\"leaflet-zoom-animated\").length},_tryAnimatedZoom:function(t,e,i){if(this._animatingZoom)return!0;if(i=i||{},!this._zoomAnimated||i.animate===!1||this._nothingToAnimate()||Math.abs(e-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),o=this._getCenterOffset(t)._divideBy(1-1/n),s=this._getCenterLayerPoint()._add(o);return i.animate===!0||this.getSize().contains(o)?(this.fire(\"movestart\").fire(\"zoomstart\"),this._animateZoom(t,e,s,n,null,!0),!0):!1},_animateZoom:function(t,e,i,n,s,a,r){r||(this._animatingZoom=!0),o.DomUtil.addClass(this._mapPane,\"leaflet-zoom-anim\"),this._animateToCenter=t,this._animateToZoom=e,o.Draggable&&(o.Draggable._disabled=!0),o.Util.requestAnimFrame(function(){this.fire(\"zoomanim\",{center:t,zoom:e,origin:i,scale:n,delta:s,backwards:a}),setTimeout(o.bind(this._onZoomTransitionEnd,this),250)},this)},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._animatingZoom=!1,o.DomUtil.removeClass(this._mapPane,\"leaflet-zoom-anim\"),o.Util.requestAnimFrame(function(){this._resetView(this._animateToCenter,this._animateToZoom,!0,!0),o.Draggable&&(o.Draggable._disabled=!1)},this))}}:{}),o.TileLayer.include({_animateZoom:function(t){this._animating||(this._animating=!0,this._prepareBgBuffer());var e=this._bgBuffer,i=o.DomUtil.TRANSFORM,n=t.delta?o.DomUtil.getTranslateString(t.delta):e.style[i],s=o.DomUtil.getScaleString(t.scale,t.origin);e.style[i]=t.backwards?s+\" \"+n:n+\" \"+s},_endZoomAnim:function(){var t=this._tileContainer,e=this._bgBuffer;t.style.visibility=\"\",t.parentNode.appendChild(t),o.Util.falseFn(e.offsetWidth);var i=this._map.getZoom();(i>this.options.maxZoom||i.5&&.5>n?(t.style.visibility=\"hidden\",void this._stopLoadingImages(t)):(e.style.visibility=\"hidden\",e.style[o.DomUtil.TRANSFORM]=\"\",this._tileContainer=e,e=this._bgBuffer=t,this._stopLoadingImages(e),void clearTimeout(this._clearBgBufferTimer))},_getLoadedTilesPercentage:function(t){var e,i,n=t.getElementsByTagName(\"img\"),o=0;for(e=0,i=n.length;i>e;e++)n[e].complete&&o++;return o/i},_stopLoadingImages:function(t){var e,i,n,s=Array.prototype.slice.call(t.getElementsByTagName(\"img\"));for(e=0,i=s.length;i>e;e++)n=s[e],n.complete||(n.onload=o.Util.falseFn,n.onerror=o.Util.falseFn,n.src=o.Util.emptyImageUrl,n.parentNode.removeChild(n))}}),o.Map.include({_defaultLocateOptions:{watch:!1,setView:!1,maxZoom:1/0,timeout:1e4,maximumAge:0,enableHighAccuracy:!1},locate:function(t){if(t=this._locateOptions=o.extend(this._defaultLocateOptions,t),!navigator.geolocation)return this._handleGeolocationError({code:0,message:\"Geolocation not supported.\"}),this;var e=o.bind(this._handleGeolocationResponse,this),i=o.bind(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e=t.code,i=t.message||(1===e?\"permission denied\":2===e?\"position unavailable\":\"timeout\");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire(\"locationerror\",{code:e,message:\"Geolocation error: \"+i+\".\"})},_handleGeolocationResponse:function(t){var e=t.coords.latitude,i=t.coords.longitude,n=new o.LatLng(e,i),s=180*t.coords.accuracy/40075017,a=s/Math.cos(o.LatLng.DEG_TO_RAD*e),r=o.latLngBounds([e-s,i-a],[e+s,i+a]),h=this._locateOptions;if(h.setView){var l=Math.min(this.getBoundsZoom(r),h.maxZoom);this.setView(n,l)}var u={latlng:n,bounds:r,timestamp:t.timestamp};for(var c in t.coords)\"number\"==typeof t.coords[c]&&(u[c]=t.coords[c]);this.fire(\"locationfound\",u)}})}(window,document);"]} \ No newline at end of file diff --git a/dist/map_renderer.js b/dist/map_renderer.js deleted file mode 100644 index 4309874..0000000 --- a/dist/map_renderer.js +++ /dev/null @@ -1,45 +0,0 @@ -'use strict'; - -System.register(['./css/leaflet.css!', './worldmap'], function (_export, _context) { - "use strict"; - - var WorldMap; - function link(scope, elem, attrs, ctrl) { - ctrl.events.on('render', function () { - render(); - ctrl.renderingCompleted(); - }); - - function render() { - if (!ctrl.data) return; - - var mapContainer = elem.find('.mapcontainer'); - - if (mapContainer[0].id.indexOf('{{') > -1) { - return; - } - - if (!ctrl.map) { - ctrl.map = new WorldMap(ctrl, mapContainer[0]); - } - - ctrl.map.resize(); - - if (ctrl.mapCenterMoved) ctrl.map.panToMapCenter(); - - if (!ctrl.map.legend && ctrl.panel.showLegend) ctrl.map.createLegend(); - - ctrl.map.drawCircles(); - } - } - - _export('default', link); - - return { - setters: [function (_cssLeafletCss) {}, function (_worldmap) { - WorldMap = _worldmap.default; - }], - execute: function () {} - }; -}); -//# sourceMappingURL=map_renderer.js.map diff --git a/dist/map_renderer.js.map b/dist/map_renderer.js.map deleted file mode 100644 index 6ad2346..0000000 --- a/dist/map_renderer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/map_renderer.js"],"names":["link","scope","elem","attrs","ctrl","events","on","render","renderingCompleted","data","mapContainer","find","id","indexOf","map","WorldMap","resize","mapCenterMoved","panToMapCenter","legend","panel","showLegend","createLegend","drawCircles"],"mappings":";;;;;;AAGe,WAASA,IAAT,CAAcC,KAAd,EAAqBC,IAArB,EAA2BC,KAA3B,EAAkCC,IAAlC,EAAwC;AACrDA,SAAKC,MAAL,CAAYC,EAAZ,CAAe,QAAf,EAAyB,YAAM;AAC7BC;AACAH,WAAKI,kBAAL;AACD,KAHD;;AAKA,aAASD,MAAT,GAAkB;AAChB,UAAI,CAACH,KAAKK,IAAV,EAAgB;;AAEhB,UAAMC,eAAeR,KAAKS,IAAL,CAAU,eAAV,CAArB;;AAEA,UAAID,aAAa,CAAb,EAAgBE,EAAhB,CAAmBC,OAAnB,CAA2B,IAA3B,IAAmC,CAAC,CAAxC,EAA2C;AACzC;AACD;;AAED,UAAI,CAACT,KAAKU,GAAV,EAAe;AACbV,aAAKU,GAAL,GAAW,IAAIC,QAAJ,CAAaX,IAAb,EAAmBM,aAAa,CAAb,CAAnB,CAAX;AACD;;AAEDN,WAAKU,GAAL,CAASE,MAAT;;AAEA,UAAIZ,KAAKa,cAAT,EAAyBb,KAAKU,GAAL,CAASI,cAAT;;AAEzB,UAAI,CAACd,KAAKU,GAAL,CAASK,MAAV,IAAoBf,KAAKgB,KAAL,CAAWC,UAAnC,EAA+CjB,KAAKU,GAAL,CAASQ,YAAT;;AAE/ClB,WAAKU,GAAL,CAASS,WAAT;AACD;AACF;;qBA3BuBvB,I;;;;AAFjBe,c","file":"map_renderer.js","sourcesContent":["import './css/leaflet.css!';\nimport WorldMap from './worldmap';\n\nexport default function link(scope, elem, attrs, ctrl) {\n ctrl.events.on('render', () => {\n render();\n ctrl.renderingCompleted();\n });\n\n function render() {\n if (!ctrl.data) return;\n\n const mapContainer = elem.find('.mapcontainer');\n\n if (mapContainer[0].id.indexOf('{{') > -1) {\n return;\n }\n\n if (!ctrl.map) {\n ctrl.map = new WorldMap(ctrl, mapContainer[0]);\n }\n\n ctrl.map.resize();\n\n if (ctrl.mapCenterMoved) ctrl.map.panToMapCenter();\n\n if (!ctrl.map.legend && ctrl.panel.showLegend) ctrl.map.createLegend();\n\n ctrl.map.drawCircles();\n }\n}\n"]} \ No newline at end of file diff --git a/dist/module.html b/dist/module.html deleted file mode 100644 index 4a5e3a9..0000000 --- a/dist/module.html +++ /dev/null @@ -1 +0,0 @@ -
\ No newline at end of file diff --git a/dist/module.js b/dist/module.js index 6246b8b..096c2b9 100644 --- a/dist/module.js +++ b/dist/module.js @@ -1,26 +1,7 @@ -'use strict'; - -System.register(['app/plugins/sdk', './worldmap_ctrl'], function (_export, _context) { - "use strict"; - - var loadPluginCss, WorldmapCtrl; - return { - setters: [function (_appPluginsSdk) { - loadPluginCss = _appPluginsSdk.loadPluginCss; - }, function (_worldmap_ctrl) { - WorldmapCtrl = _worldmap_ctrl.default; - }], - execute: function () { - /* eslint import/no-extraneous-dependencies: 0 */ - loadPluginCss({ - dark: 'plugins/grafana-worldmap-panel/css/worldmap.dark.css', - light: 'plugins/grafana-worldmap-panel/css/worldmap.light.css' - }); - - /* eslint import/prefer-default-export: 0 */ - - _export('PanelCtrl', WorldmapCtrl); - } - }; -}); -//# sourceMappingURL=module.js.map +define(["lodash","app/plugins/sdk","app/core/time_series2","app/core/utils/kbn","jquery"],function(t,e,n,i,o){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=4)}([function(e,n){e.exports=t},function(t,n){t.exports=e},function(t,e){t.exports=function(t){var e=[];return e.toString=function(){return this.map(function(e){var n=function(t,e){var n=t[1]||"",i=t[3];if(!i)return n;if(e&&"function"==typeof btoa){var o=function(t){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t))))+" */"}(i),r=i.sources.map(function(t){return"/*# sourceURL="+i.sourceRoot+t+" */"});return[n].concat(r).concat([o]).join("\n")}return[n].join("\n")}(e,t);return e[2]?"@media "+e[2]+"{"+n+"}":n}).join("")},e.i=function(t,n){"string"==typeof t&&(t=[[null,t,""]]);for(var i={},o=0;or.size(this.data.thresholds)+1;)this.panel.colors.pop();for(;r.size(this.panel.colors)n&&(n=u.value),u.valuei&&(i=p.value),p.valuei&&(i=c.value),c.valuei&&(i=p.value),p.valuee&&(e=o.value),o.value svg,\r\n.leaflet-pane > canvas,\r\n.leaflet-zoom-box,\r\n.leaflet-image-layer,\r\n.leaflet-layer {\r\n\tposition: absolute;\r\n\tleft: 0;\r\n\ttop: 0;\r\n\t}\r\n.leaflet-container {\r\n\toverflow: hidden;\r\n\t}\r\n.leaflet-tile,\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow {\r\n\t-webkit-user-select: none;\r\n\t -moz-user-select: none;\r\n\t user-select: none;\r\n\t -webkit-user-drag: none;\r\n\t}\r\n/* Safari renders non-retina tile on retina better with this, but Chrome is worse */\r\n.leaflet-safari .leaflet-tile {\r\n\timage-rendering: -webkit-optimize-contrast;\r\n\t}\r\n/* hack that prevents hw layers \"stretching\" when loading new tiles */\r\n.leaflet-safari .leaflet-tile-container {\r\n\twidth: 1600px;\r\n\theight: 1600px;\r\n\t-webkit-transform-origin: 0 0;\r\n\t}\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow {\r\n\tdisplay: block;\r\n\t}\r\n/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */\r\n/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */\r\n.leaflet-container .leaflet-overlay-pane svg,\r\n.leaflet-container .leaflet-marker-pane img,\r\n.leaflet-container .leaflet-shadow-pane img,\r\n.leaflet-container .leaflet-tile-pane img,\r\n.leaflet-container img.leaflet-image-layer {\r\n\tmax-width: none !important;\r\n\tmax-height: none !important;\r\n\t}\r\n\r\n.leaflet-container.leaflet-touch-zoom {\r\n\t-ms-touch-action: pan-x pan-y;\r\n\ttouch-action: pan-x pan-y;\r\n\t}\r\n.leaflet-container.leaflet-touch-drag {\r\n\t-ms-touch-action: pinch-zoom;\r\n\t/* Fallback for FF which doesn't support pinch-zoom */\r\n\ttouch-action: none;\r\n\ttouch-action: pinch-zoom;\r\n}\r\n.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {\r\n\t-ms-touch-action: none;\r\n\ttouch-action: none;\r\n}\r\n.leaflet-container {\r\n\t-webkit-tap-highlight-color: transparent;\r\n}\r\n.leaflet-container a {\r\n\t-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);\r\n}\r\n.leaflet-tile {\r\n\tfilter: inherit;\r\n\tvisibility: hidden;\r\n\t}\r\n.leaflet-tile-loaded {\r\n\tvisibility: inherit;\r\n\t}\r\n.leaflet-zoom-box {\r\n\twidth: 0;\r\n\theight: 0;\r\n\t-moz-box-sizing: border-box;\r\n\t box-sizing: border-box;\r\n\tz-index: 800;\r\n\t}\r\n/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */\r\n.leaflet-overlay-pane svg {\r\n\t-moz-user-select: none;\r\n\t}\r\n\r\n.leaflet-pane { z-index: 400; }\r\n\r\n.leaflet-tile-pane { z-index: 200; }\r\n.leaflet-overlay-pane { z-index: 400; }\r\n.leaflet-shadow-pane { z-index: 500; }\r\n.leaflet-marker-pane { z-index: 600; }\r\n.leaflet-tooltip-pane { z-index: 650; }\r\n.leaflet-popup-pane { z-index: 700; }\r\n\r\n.leaflet-map-pane canvas { z-index: 100; }\r\n.leaflet-map-pane svg { z-index: 200; }\r\n\r\n.leaflet-vml-shape {\r\n\twidth: 1px;\r\n\theight: 1px;\r\n\t}\r\n.lvml {\r\n\tbehavior: url(#default#VML);\r\n\tdisplay: inline-block;\r\n\tposition: absolute;\r\n\t}\r\n\r\n\r\n/* control positioning */\r\n\r\n.leaflet-control {\r\n\tposition: relative;\r\n\tz-index: 800;\r\n\tpointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\r\n\tpointer-events: auto;\r\n\t}\r\n.leaflet-top,\r\n.leaflet-bottom {\r\n\tposition: absolute;\r\n\tz-index: 1000;\r\n\tpointer-events: none;\r\n\t}\r\n.leaflet-top {\r\n\ttop: 0;\r\n\t}\r\n.leaflet-right {\r\n\tright: 0;\r\n\t}\r\n.leaflet-bottom {\r\n\tbottom: 0;\r\n\t}\r\n.leaflet-left {\r\n\tleft: 0;\r\n\t}\r\n.leaflet-control {\r\n\tfloat: left;\r\n\tclear: both;\r\n\t}\r\n.leaflet-right .leaflet-control {\r\n\tfloat: right;\r\n\t}\r\n.leaflet-top .leaflet-control {\r\n\tmargin-top: 10px;\r\n\t}\r\n.leaflet-bottom .leaflet-control {\r\n\tmargin-bottom: 10px;\r\n\t}\r\n.leaflet-left .leaflet-control {\r\n\tmargin-left: 10px;\r\n\t}\r\n.leaflet-right .leaflet-control {\r\n\tmargin-right: 10px;\r\n\t}\r\n\r\n\r\n/* zoom and fade animations */\r\n\r\n.leaflet-fade-anim .leaflet-tile {\r\n\twill-change: opacity;\r\n\t}\r\n.leaflet-fade-anim .leaflet-popup {\r\n\topacity: 0;\r\n\t-webkit-transition: opacity 0.2s linear;\r\n\t -moz-transition: opacity 0.2s linear;\r\n\t -o-transition: opacity 0.2s linear;\r\n\t transition: opacity 0.2s linear;\r\n\t}\r\n.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {\r\n\topacity: 1;\r\n\t}\r\n.leaflet-zoom-animated {\r\n\t-webkit-transform-origin: 0 0;\r\n\t -ms-transform-origin: 0 0;\r\n\t transform-origin: 0 0;\r\n\t}\r\n.leaflet-zoom-anim .leaflet-zoom-animated {\r\n\twill-change: transform;\r\n\t}\r\n.leaflet-zoom-anim .leaflet-zoom-animated {\r\n\t-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);\r\n\t -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);\r\n\t -o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1);\r\n\t transition: transform 0.25s cubic-bezier(0,0,0.25,1);\r\n\t}\r\n.leaflet-zoom-anim .leaflet-tile,\r\n.leaflet-pan-anim .leaflet-tile {\r\n\t-webkit-transition: none;\r\n\t -moz-transition: none;\r\n\t -o-transition: none;\r\n\t transition: none;\r\n\t}\r\n\r\n.leaflet-zoom-anim .leaflet-zoom-hide {\r\n\tvisibility: hidden;\r\n\t}\r\n\r\n\r\n/* cursors */\r\n\r\n.leaflet-interactive {\r\n\tcursor: pointer;\r\n\t}\r\n.leaflet-grab {\r\n\tcursor: -webkit-grab;\r\n\tcursor: -moz-grab;\r\n\t}\r\n.leaflet-crosshair,\r\n.leaflet-crosshair .leaflet-interactive {\r\n\tcursor: crosshair;\r\n\t}\r\n.leaflet-popup-pane,\r\n.leaflet-control {\r\n\tcursor: auto;\r\n\t}\r\n.leaflet-dragging .leaflet-grab,\r\n.leaflet-dragging .leaflet-grab .leaflet-interactive,\r\n.leaflet-dragging .leaflet-marker-draggable {\r\n\tcursor: move;\r\n\tcursor: -webkit-grabbing;\r\n\tcursor: -moz-grabbing;\r\n\t}\r\n\r\n/* marker & overlays interactivity */\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow,\r\n.leaflet-image-layer,\r\n.leaflet-pane > svg path,\r\n.leaflet-tile-container {\r\n\tpointer-events: none;\r\n\t}\r\n\r\n.leaflet-marker-icon.leaflet-interactive,\r\n.leaflet-image-layer.leaflet-interactive,\r\n.leaflet-pane > svg path.leaflet-interactive {\r\n\tpointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\r\n\tpointer-events: auto;\r\n\t}\r\n\r\n/* visual tweaks */\r\n\r\n.leaflet-container {\r\n\tbackground: #ddd;\r\n\toutline: 0;\r\n\t}\r\n.leaflet-container a {\r\n\tcolor: #0078A8;\r\n\t}\r\n.leaflet-container a.leaflet-active {\r\n\toutline: 2px solid orange;\r\n\t}\r\n.leaflet-zoom-box {\r\n\tborder: 2px dotted #38f;\r\n\tbackground: rgba(255,255,255,0.5);\r\n\t}\r\n\r\n\r\n/* general typography */\r\n.leaflet-container {\r\n\tfont: 12px/1.5 \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n\t}\r\n\r\n\r\n/* general toolbar styles */\r\n\r\n.leaflet-bar {\r\n\tbox-shadow: 0 1px 5px rgba(0,0,0,0.65);\r\n\tborder-radius: 4px;\r\n\t}\r\n.leaflet-bar a,\r\n.leaflet-bar a:hover {\r\n\tbackground-color: #fff;\r\n\tborder-bottom: 1px solid #ccc;\r\n\twidth: 26px;\r\n\theight: 26px;\r\n\tline-height: 26px;\r\n\tdisplay: block;\r\n\ttext-align: center;\r\n\ttext-decoration: none;\r\n\tcolor: black;\r\n\t}\r\n.leaflet-bar a,\r\n.leaflet-control-layers-toggle {\r\n\tbackground-position: 50% 50%;\r\n\tbackground-repeat: no-repeat;\r\n\tdisplay: block;\r\n\t}\r\n.leaflet-bar a:hover {\r\n\tbackground-color: #f4f4f4;\r\n\t}\r\n.leaflet-bar a:first-child {\r\n\tborder-top-left-radius: 4px;\r\n\tborder-top-right-radius: 4px;\r\n\t}\r\n.leaflet-bar a:last-child {\r\n\tborder-bottom-left-radius: 4px;\r\n\tborder-bottom-right-radius: 4px;\r\n\tborder-bottom: none;\r\n\t}\r\n.leaflet-bar a.leaflet-disabled {\r\n\tcursor: default;\r\n\tbackground-color: #f4f4f4;\r\n\tcolor: #bbb;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-bar a {\r\n\twidth: 30px;\r\n\theight: 30px;\r\n\tline-height: 30px;\r\n\t}\r\n.leaflet-touch .leaflet-bar a:first-child {\r\n\tborder-top-left-radius: 2px;\r\n\tborder-top-right-radius: 2px;\r\n\t}\r\n.leaflet-touch .leaflet-bar a:last-child {\r\n\tborder-bottom-left-radius: 2px;\r\n\tborder-bottom-right-radius: 2px;\r\n\t}\r\n\r\n/* zoom control */\r\n\r\n.leaflet-control-zoom-in,\r\n.leaflet-control-zoom-out {\r\n\tfont: bold 18px 'Lucida Console', Monaco, monospace;\r\n\ttext-indent: 1px;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {\r\n\tfont-size: 22px;\r\n\t}\r\n\r\n\r\n/* layers control */\r\n\r\n.leaflet-control-layers {\r\n\tbox-shadow: 0 1px 5px rgba(0,0,0,0.4);\r\n\tbackground: #fff;\r\n\tborder-radius: 5px;\r\n\t}\r\n.leaflet-control-layers-toggle {\r\n\tbackground-image: url("+i(n(17))+");\r\n\twidth: 36px;\r\n\theight: 36px;\r\n\t}\r\n.leaflet-retina .leaflet-control-layers-toggle {\r\n\tbackground-image: url("+i(n(18))+");\r\n\tbackground-size: 26px 26px;\r\n\t}\r\n.leaflet-touch .leaflet-control-layers-toggle {\r\n\twidth: 44px;\r\n\theight: 44px;\r\n\t}\r\n.leaflet-control-layers .leaflet-control-layers-list,\r\n.leaflet-control-layers-expanded .leaflet-control-layers-toggle {\r\n\tdisplay: none;\r\n\t}\r\n.leaflet-control-layers-expanded .leaflet-control-layers-list {\r\n\tdisplay: block;\r\n\tposition: relative;\r\n\t}\r\n.leaflet-control-layers-expanded {\r\n\tpadding: 6px 10px 6px 6px;\r\n\tcolor: #333;\r\n\tbackground: #fff;\r\n\t}\r\n.leaflet-control-layers-scrollbar {\r\n\toverflow-y: scroll;\r\n\toverflow-x: hidden;\r\n\tpadding-right: 5px;\r\n\t}\r\n.leaflet-control-layers-selector {\r\n\tmargin-top: 2px;\r\n\tposition: relative;\r\n\ttop: 1px;\r\n\t}\r\n.leaflet-control-layers label {\r\n\tdisplay: block;\r\n\t}\r\n.leaflet-control-layers-separator {\r\n\theight: 0;\r\n\tborder-top: 1px solid #ddd;\r\n\tmargin: 5px -10px 5px -6px;\r\n\t}\r\n\r\n/* Default icon URLs */\r\n.leaflet-default-icon-path {\r\n\tbackground-image: url("+i(n(19))+');\r\n\t}\r\n\r\n\r\n/* attribution and scale controls */\r\n\r\n.leaflet-container .leaflet-control-attribution {\r\n\tbackground: #fff;\r\n\tbackground: rgba(255, 255, 255, 0.7);\r\n\tmargin: 0;\r\n\t}\r\n.leaflet-control-attribution,\r\n.leaflet-control-scale-line {\r\n\tpadding: 0 5px;\r\n\tcolor: #333;\r\n\t}\r\n.leaflet-control-attribution a {\r\n\ttext-decoration: none;\r\n\t}\r\n.leaflet-control-attribution a:hover {\r\n\ttext-decoration: underline;\r\n\t}\r\n.leaflet-container .leaflet-control-attribution,\r\n.leaflet-container .leaflet-control-scale {\r\n\tfont-size: 11px;\r\n\t}\r\n.leaflet-left .leaflet-control-scale {\r\n\tmargin-left: 5px;\r\n\t}\r\n.leaflet-bottom .leaflet-control-scale {\r\n\tmargin-bottom: 5px;\r\n\t}\r\n.leaflet-control-scale-line {\r\n\tborder: 2px solid #777;\r\n\tborder-top: none;\r\n\tline-height: 1.1;\r\n\tpadding: 2px 5px 1px;\r\n\tfont-size: 11px;\r\n\twhite-space: nowrap;\r\n\toverflow: hidden;\r\n\t-moz-box-sizing: border-box;\r\n\t box-sizing: border-box;\r\n\r\n\tbackground: #fff;\r\n\tbackground: rgba(255, 255, 255, 0.5);\r\n\t}\r\n.leaflet-control-scale-line:not(:first-child) {\r\n\tborder-top: 2px solid #777;\r\n\tborder-bottom: none;\r\n\tmargin-top: -2px;\r\n\t}\r\n.leaflet-control-scale-line:not(:first-child):not(:last-child) {\r\n\tborder-bottom: 2px solid #777;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-control-attribution,\r\n.leaflet-touch .leaflet-control-layers,\r\n.leaflet-touch .leaflet-bar {\r\n\tbox-shadow: none;\r\n\t}\r\n.leaflet-touch .leaflet-control-layers,\r\n.leaflet-touch .leaflet-bar {\r\n\tborder: 2px solid rgba(0,0,0,0.2);\r\n\tbackground-clip: padding-box;\r\n\t}\r\n\r\n\r\n/* popup */\r\n\r\n.leaflet-popup {\r\n\tposition: absolute;\r\n\ttext-align: center;\r\n\tmargin-bottom: 20px;\r\n\t}\r\n.leaflet-popup-content-wrapper {\r\n\tpadding: 1px;\r\n\ttext-align: left;\r\n\tborder-radius: 12px;\r\n\t}\r\n.leaflet-popup-content {\r\n\tmargin: 13px 19px;\r\n\tline-height: 1.4;\r\n\t}\r\n.leaflet-popup-content p {\r\n\tmargin: 18px 0;\r\n\t}\r\n.leaflet-popup-tip-container {\r\n\twidth: 40px;\r\n\theight: 20px;\r\n\tposition: absolute;\r\n\tleft: 50%;\r\n\tmargin-left: -20px;\r\n\toverflow: hidden;\r\n\tpointer-events: none;\r\n\t}\r\n.leaflet-popup-tip {\r\n\twidth: 17px;\r\n\theight: 17px;\r\n\tpadding: 1px;\r\n\r\n\tmargin: -10px auto 0;\r\n\r\n\t-webkit-transform: rotate(45deg);\r\n\t -moz-transform: rotate(45deg);\r\n\t -ms-transform: rotate(45deg);\r\n\t -o-transform: rotate(45deg);\r\n\t transform: rotate(45deg);\r\n\t}\r\n.leaflet-popup-content-wrapper,\r\n.leaflet-popup-tip {\r\n\tbackground: white;\r\n\tcolor: #333;\r\n\tbox-shadow: 0 3px 14px rgba(0,0,0,0.4);\r\n\t}\r\n.leaflet-container a.leaflet-popup-close-button {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tright: 0;\r\n\tpadding: 4px 4px 0 0;\r\n\tborder: none;\r\n\ttext-align: center;\r\n\twidth: 18px;\r\n\theight: 14px;\r\n\tfont: 16px/14px Tahoma, Verdana, sans-serif;\r\n\tcolor: #c3c3c3;\r\n\ttext-decoration: none;\r\n\tfont-weight: bold;\r\n\tbackground: transparent;\r\n\t}\r\n.leaflet-container a.leaflet-popup-close-button:hover {\r\n\tcolor: #999;\r\n\t}\r\n.leaflet-popup-scrolled {\r\n\toverflow: auto;\r\n\tborder-bottom: 1px solid #ddd;\r\n\tborder-top: 1px solid #ddd;\r\n\t}\r\n\r\n.leaflet-oldie .leaflet-popup-content-wrapper {\r\n\tzoom: 1;\r\n\t}\r\n.leaflet-oldie .leaflet-popup-tip {\r\n\twidth: 24px;\r\n\tmargin: 0 auto;\r\n\r\n\t-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";\r\n\tfilter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);\r\n\t}\r\n.leaflet-oldie .leaflet-popup-tip-container {\r\n\tmargin-top: -1px;\r\n\t}\r\n\r\n.leaflet-oldie .leaflet-control-zoom,\r\n.leaflet-oldie .leaflet-control-layers,\r\n.leaflet-oldie .leaflet-popup-content-wrapper,\r\n.leaflet-oldie .leaflet-popup-tip {\r\n\tborder: 1px solid #999;\r\n\t}\r\n\r\n\r\n/* div icon */\r\n\r\n.leaflet-div-icon {\r\n\tbackground: #fff;\r\n\tborder: 1px solid #666;\r\n\t}\r\n\r\n\r\n/* Tooltip */\r\n/* Base styles for the element that has a tooltip */\r\n.leaflet-tooltip {\r\n\tposition: absolute;\r\n\tpadding: 6px;\r\n\tbackground-color: #fff;\r\n\tborder: 1px solid #fff;\r\n\tborder-radius: 3px;\r\n\tcolor: #222;\r\n\twhite-space: nowrap;\r\n\t-webkit-user-select: none;\r\n\t-moz-user-select: none;\r\n\t-ms-user-select: none;\r\n\tuser-select: none;\r\n\tpointer-events: none;\r\n\tbox-shadow: 0 1px 3px rgba(0,0,0,0.4);\r\n\t}\r\n.leaflet-tooltip.leaflet-clickable {\r\n\tcursor: pointer;\r\n\tpointer-events: auto;\r\n\t}\r\n.leaflet-tooltip-top:before,\r\n.leaflet-tooltip-bottom:before,\r\n.leaflet-tooltip-left:before,\r\n.leaflet-tooltip-right:before {\r\n\tposition: absolute;\r\n\tpointer-events: none;\r\n\tborder: 6px solid transparent;\r\n\tbackground: transparent;\r\n\tcontent: "";\r\n\t}\r\n\r\n/* Directions */\r\n\r\n.leaflet-tooltip-bottom {\r\n\tmargin-top: 6px;\r\n}\r\n.leaflet-tooltip-top {\r\n\tmargin-top: -6px;\r\n}\r\n.leaflet-tooltip-bottom:before,\r\n.leaflet-tooltip-top:before {\r\n\tleft: 50%;\r\n\tmargin-left: -6px;\r\n\t}\r\n.leaflet-tooltip-top:before {\r\n\tbottom: 0;\r\n\tmargin-bottom: -12px;\r\n\tborder-top-color: #fff;\r\n\t}\r\n.leaflet-tooltip-bottom:before {\r\n\ttop: 0;\r\n\tmargin-top: -12px;\r\n\tmargin-left: -6px;\r\n\tborder-bottom-color: #fff;\r\n\t}\r\n.leaflet-tooltip-left {\r\n\tmargin-left: -6px;\r\n}\r\n.leaflet-tooltip-right {\r\n\tmargin-left: 6px;\r\n}\r\n.leaflet-tooltip-left:before,\r\n.leaflet-tooltip-right:before {\r\n\ttop: 50%;\r\n\tmargin-top: -6px;\r\n\t}\r\n.leaflet-tooltip-left:before {\r\n\tright: 0;\r\n\tmargin-right: -12px;\r\n\tborder-left-color: #fff;\r\n\t}\r\n.leaflet-tooltip-right:before {\r\n\tleft: 0;\r\n\tmargin-left: -12px;\r\n\tborder-right-color: #fff;\r\n\t}\r\n',"",{version:3,sources:["/home/leo/smart-parking/SmartParking.worldmap/src/css/leaflet.css"],names:[],mappings:"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",file:"leaflet.css",sourcesContent:['/* required styles */\r\n\r\n.leaflet-pane,\r\n.leaflet-tile,\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow,\r\n.leaflet-tile-container,\r\n.leaflet-pane > svg,\r\n.leaflet-pane > canvas,\r\n.leaflet-zoom-box,\r\n.leaflet-image-layer,\r\n.leaflet-layer {\r\n\tposition: absolute;\r\n\tleft: 0;\r\n\ttop: 0;\r\n\t}\r\n.leaflet-container {\r\n\toverflow: hidden;\r\n\t}\r\n.leaflet-tile,\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow {\r\n\t-webkit-user-select: none;\r\n\t -moz-user-select: none;\r\n\t user-select: none;\r\n\t -webkit-user-drag: none;\r\n\t}\r\n/* Safari renders non-retina tile on retina better with this, but Chrome is worse */\r\n.leaflet-safari .leaflet-tile {\r\n\timage-rendering: -webkit-optimize-contrast;\r\n\t}\r\n/* hack that prevents hw layers "stretching" when loading new tiles */\r\n.leaflet-safari .leaflet-tile-container {\r\n\twidth: 1600px;\r\n\theight: 1600px;\r\n\t-webkit-transform-origin: 0 0;\r\n\t}\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow {\r\n\tdisplay: block;\r\n\t}\r\n/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */\r\n/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */\r\n.leaflet-container .leaflet-overlay-pane svg,\r\n.leaflet-container .leaflet-marker-pane img,\r\n.leaflet-container .leaflet-shadow-pane img,\r\n.leaflet-container .leaflet-tile-pane img,\r\n.leaflet-container img.leaflet-image-layer {\r\n\tmax-width: none !important;\r\n\tmax-height: none !important;\r\n\t}\r\n\r\n.leaflet-container.leaflet-touch-zoom {\r\n\t-ms-touch-action: pan-x pan-y;\r\n\ttouch-action: pan-x pan-y;\r\n\t}\r\n.leaflet-container.leaflet-touch-drag {\r\n\t-ms-touch-action: pinch-zoom;\r\n\t/* Fallback for FF which doesn\'t support pinch-zoom */\r\n\ttouch-action: none;\r\n\ttouch-action: pinch-zoom;\r\n}\r\n.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {\r\n\t-ms-touch-action: none;\r\n\ttouch-action: none;\r\n}\r\n.leaflet-container {\r\n\t-webkit-tap-highlight-color: transparent;\r\n}\r\n.leaflet-container a {\r\n\t-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);\r\n}\r\n.leaflet-tile {\r\n\tfilter: inherit;\r\n\tvisibility: hidden;\r\n\t}\r\n.leaflet-tile-loaded {\r\n\tvisibility: inherit;\r\n\t}\r\n.leaflet-zoom-box {\r\n\twidth: 0;\r\n\theight: 0;\r\n\t-moz-box-sizing: border-box;\r\n\t box-sizing: border-box;\r\n\tz-index: 800;\r\n\t}\r\n/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */\r\n.leaflet-overlay-pane svg {\r\n\t-moz-user-select: none;\r\n\t}\r\n\r\n.leaflet-pane { z-index: 400; }\r\n\r\n.leaflet-tile-pane { z-index: 200; }\r\n.leaflet-overlay-pane { z-index: 400; }\r\n.leaflet-shadow-pane { z-index: 500; }\r\n.leaflet-marker-pane { z-index: 600; }\r\n.leaflet-tooltip-pane { z-index: 650; }\r\n.leaflet-popup-pane { z-index: 700; }\r\n\r\n.leaflet-map-pane canvas { z-index: 100; }\r\n.leaflet-map-pane svg { z-index: 200; }\r\n\r\n.leaflet-vml-shape {\r\n\twidth: 1px;\r\n\theight: 1px;\r\n\t}\r\n.lvml {\r\n\tbehavior: url(#default#VML);\r\n\tdisplay: inline-block;\r\n\tposition: absolute;\r\n\t}\r\n\r\n\r\n/* control positioning */\r\n\r\n.leaflet-control {\r\n\tposition: relative;\r\n\tz-index: 800;\r\n\tpointer-events: visiblePainted; /* IE 9-10 doesn\'t have auto */\r\n\tpointer-events: auto;\r\n\t}\r\n.leaflet-top,\r\n.leaflet-bottom {\r\n\tposition: absolute;\r\n\tz-index: 1000;\r\n\tpointer-events: none;\r\n\t}\r\n.leaflet-top {\r\n\ttop: 0;\r\n\t}\r\n.leaflet-right {\r\n\tright: 0;\r\n\t}\r\n.leaflet-bottom {\r\n\tbottom: 0;\r\n\t}\r\n.leaflet-left {\r\n\tleft: 0;\r\n\t}\r\n.leaflet-control {\r\n\tfloat: left;\r\n\tclear: both;\r\n\t}\r\n.leaflet-right .leaflet-control {\r\n\tfloat: right;\r\n\t}\r\n.leaflet-top .leaflet-control {\r\n\tmargin-top: 10px;\r\n\t}\r\n.leaflet-bottom .leaflet-control {\r\n\tmargin-bottom: 10px;\r\n\t}\r\n.leaflet-left .leaflet-control {\r\n\tmargin-left: 10px;\r\n\t}\r\n.leaflet-right .leaflet-control {\r\n\tmargin-right: 10px;\r\n\t}\r\n\r\n\r\n/* zoom and fade animations */\r\n\r\n.leaflet-fade-anim .leaflet-tile {\r\n\twill-change: opacity;\r\n\t}\r\n.leaflet-fade-anim .leaflet-popup {\r\n\topacity: 0;\r\n\t-webkit-transition: opacity 0.2s linear;\r\n\t -moz-transition: opacity 0.2s linear;\r\n\t -o-transition: opacity 0.2s linear;\r\n\t transition: opacity 0.2s linear;\r\n\t}\r\n.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {\r\n\topacity: 1;\r\n\t}\r\n.leaflet-zoom-animated {\r\n\t-webkit-transform-origin: 0 0;\r\n\t -ms-transform-origin: 0 0;\r\n\t transform-origin: 0 0;\r\n\t}\r\n.leaflet-zoom-anim .leaflet-zoom-animated {\r\n\twill-change: transform;\r\n\t}\r\n.leaflet-zoom-anim .leaflet-zoom-animated {\r\n\t-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);\r\n\t -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1);\r\n\t -o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1);\r\n\t transition: transform 0.25s cubic-bezier(0,0,0.25,1);\r\n\t}\r\n.leaflet-zoom-anim .leaflet-tile,\r\n.leaflet-pan-anim .leaflet-tile {\r\n\t-webkit-transition: none;\r\n\t -moz-transition: none;\r\n\t -o-transition: none;\r\n\t transition: none;\r\n\t}\r\n\r\n.leaflet-zoom-anim .leaflet-zoom-hide {\r\n\tvisibility: hidden;\r\n\t}\r\n\r\n\r\n/* cursors */\r\n\r\n.leaflet-interactive {\r\n\tcursor: pointer;\r\n\t}\r\n.leaflet-grab {\r\n\tcursor: -webkit-grab;\r\n\tcursor: -moz-grab;\r\n\t}\r\n.leaflet-crosshair,\r\n.leaflet-crosshair .leaflet-interactive {\r\n\tcursor: crosshair;\r\n\t}\r\n.leaflet-popup-pane,\r\n.leaflet-control {\r\n\tcursor: auto;\r\n\t}\r\n.leaflet-dragging .leaflet-grab,\r\n.leaflet-dragging .leaflet-grab .leaflet-interactive,\r\n.leaflet-dragging .leaflet-marker-draggable {\r\n\tcursor: move;\r\n\tcursor: -webkit-grabbing;\r\n\tcursor: -moz-grabbing;\r\n\t}\r\n\r\n/* marker & overlays interactivity */\r\n.leaflet-marker-icon,\r\n.leaflet-marker-shadow,\r\n.leaflet-image-layer,\r\n.leaflet-pane > svg path,\r\n.leaflet-tile-container {\r\n\tpointer-events: none;\r\n\t}\r\n\r\n.leaflet-marker-icon.leaflet-interactive,\r\n.leaflet-image-layer.leaflet-interactive,\r\n.leaflet-pane > svg path.leaflet-interactive {\r\n\tpointer-events: visiblePainted; /* IE 9-10 doesn\'t have auto */\r\n\tpointer-events: auto;\r\n\t}\r\n\r\n/* visual tweaks */\r\n\r\n.leaflet-container {\r\n\tbackground: #ddd;\r\n\toutline: 0;\r\n\t}\r\n.leaflet-container a {\r\n\tcolor: #0078A8;\r\n\t}\r\n.leaflet-container a.leaflet-active {\r\n\toutline: 2px solid orange;\r\n\t}\r\n.leaflet-zoom-box {\r\n\tborder: 2px dotted #38f;\r\n\tbackground: rgba(255,255,255,0.5);\r\n\t}\r\n\r\n\r\n/* general typography */\r\n.leaflet-container {\r\n\tfont: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;\r\n\t}\r\n\r\n\r\n/* general toolbar styles */\r\n\r\n.leaflet-bar {\r\n\tbox-shadow: 0 1px 5px rgba(0,0,0,0.65);\r\n\tborder-radius: 4px;\r\n\t}\r\n.leaflet-bar a,\r\n.leaflet-bar a:hover {\r\n\tbackground-color: #fff;\r\n\tborder-bottom: 1px solid #ccc;\r\n\twidth: 26px;\r\n\theight: 26px;\r\n\tline-height: 26px;\r\n\tdisplay: block;\r\n\ttext-align: center;\r\n\ttext-decoration: none;\r\n\tcolor: black;\r\n\t}\r\n.leaflet-bar a,\r\n.leaflet-control-layers-toggle {\r\n\tbackground-position: 50% 50%;\r\n\tbackground-repeat: no-repeat;\r\n\tdisplay: block;\r\n\t}\r\n.leaflet-bar a:hover {\r\n\tbackground-color: #f4f4f4;\r\n\t}\r\n.leaflet-bar a:first-child {\r\n\tborder-top-left-radius: 4px;\r\n\tborder-top-right-radius: 4px;\r\n\t}\r\n.leaflet-bar a:last-child {\r\n\tborder-bottom-left-radius: 4px;\r\n\tborder-bottom-right-radius: 4px;\r\n\tborder-bottom: none;\r\n\t}\r\n.leaflet-bar a.leaflet-disabled {\r\n\tcursor: default;\r\n\tbackground-color: #f4f4f4;\r\n\tcolor: #bbb;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-bar a {\r\n\twidth: 30px;\r\n\theight: 30px;\r\n\tline-height: 30px;\r\n\t}\r\n.leaflet-touch .leaflet-bar a:first-child {\r\n\tborder-top-left-radius: 2px;\r\n\tborder-top-right-radius: 2px;\r\n\t}\r\n.leaflet-touch .leaflet-bar a:last-child {\r\n\tborder-bottom-left-radius: 2px;\r\n\tborder-bottom-right-radius: 2px;\r\n\t}\r\n\r\n/* zoom control */\r\n\r\n.leaflet-control-zoom-in,\r\n.leaflet-control-zoom-out {\r\n\tfont: bold 18px \'Lucida Console\', Monaco, monospace;\r\n\ttext-indent: 1px;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {\r\n\tfont-size: 22px;\r\n\t}\r\n\r\n\r\n/* layers control */\r\n\r\n.leaflet-control-layers {\r\n\tbox-shadow: 0 1px 5px rgba(0,0,0,0.4);\r\n\tbackground: #fff;\r\n\tborder-radius: 5px;\r\n\t}\r\n.leaflet-control-layers-toggle {\r\n\tbackground-image: url(../images/layers.png);\r\n\twidth: 36px;\r\n\theight: 36px;\r\n\t}\r\n.leaflet-retina .leaflet-control-layers-toggle {\r\n\tbackground-image: url(../images/layers-2x.png);\r\n\tbackground-size: 26px 26px;\r\n\t}\r\n.leaflet-touch .leaflet-control-layers-toggle {\r\n\twidth: 44px;\r\n\theight: 44px;\r\n\t}\r\n.leaflet-control-layers .leaflet-control-layers-list,\r\n.leaflet-control-layers-expanded .leaflet-control-layers-toggle {\r\n\tdisplay: none;\r\n\t}\r\n.leaflet-control-layers-expanded .leaflet-control-layers-list {\r\n\tdisplay: block;\r\n\tposition: relative;\r\n\t}\r\n.leaflet-control-layers-expanded {\r\n\tpadding: 6px 10px 6px 6px;\r\n\tcolor: #333;\r\n\tbackground: #fff;\r\n\t}\r\n.leaflet-control-layers-scrollbar {\r\n\toverflow-y: scroll;\r\n\toverflow-x: hidden;\r\n\tpadding-right: 5px;\r\n\t}\r\n.leaflet-control-layers-selector {\r\n\tmargin-top: 2px;\r\n\tposition: relative;\r\n\ttop: 1px;\r\n\t}\r\n.leaflet-control-layers label {\r\n\tdisplay: block;\r\n\t}\r\n.leaflet-control-layers-separator {\r\n\theight: 0;\r\n\tborder-top: 1px solid #ddd;\r\n\tmargin: 5px -10px 5px -6px;\r\n\t}\r\n\r\n/* Default icon URLs */\r\n.leaflet-default-icon-path {\r\n\tbackground-image: url(../images/marker-icon.png);\r\n\t}\r\n\r\n\r\n/* attribution and scale controls */\r\n\r\n.leaflet-container .leaflet-control-attribution {\r\n\tbackground: #fff;\r\n\tbackground: rgba(255, 255, 255, 0.7);\r\n\tmargin: 0;\r\n\t}\r\n.leaflet-control-attribution,\r\n.leaflet-control-scale-line {\r\n\tpadding: 0 5px;\r\n\tcolor: #333;\r\n\t}\r\n.leaflet-control-attribution a {\r\n\ttext-decoration: none;\r\n\t}\r\n.leaflet-control-attribution a:hover {\r\n\ttext-decoration: underline;\r\n\t}\r\n.leaflet-container .leaflet-control-attribution,\r\n.leaflet-container .leaflet-control-scale {\r\n\tfont-size: 11px;\r\n\t}\r\n.leaflet-left .leaflet-control-scale {\r\n\tmargin-left: 5px;\r\n\t}\r\n.leaflet-bottom .leaflet-control-scale {\r\n\tmargin-bottom: 5px;\r\n\t}\r\n.leaflet-control-scale-line {\r\n\tborder: 2px solid #777;\r\n\tborder-top: none;\r\n\tline-height: 1.1;\r\n\tpadding: 2px 5px 1px;\r\n\tfont-size: 11px;\r\n\twhite-space: nowrap;\r\n\toverflow: hidden;\r\n\t-moz-box-sizing: border-box;\r\n\t box-sizing: border-box;\r\n\r\n\tbackground: #fff;\r\n\tbackground: rgba(255, 255, 255, 0.5);\r\n\t}\r\n.leaflet-control-scale-line:not(:first-child) {\r\n\tborder-top: 2px solid #777;\r\n\tborder-bottom: none;\r\n\tmargin-top: -2px;\r\n\t}\r\n.leaflet-control-scale-line:not(:first-child):not(:last-child) {\r\n\tborder-bottom: 2px solid #777;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-control-attribution,\r\n.leaflet-touch .leaflet-control-layers,\r\n.leaflet-touch .leaflet-bar {\r\n\tbox-shadow: none;\r\n\t}\r\n.leaflet-touch .leaflet-control-layers,\r\n.leaflet-touch .leaflet-bar {\r\n\tborder: 2px solid rgba(0,0,0,0.2);\r\n\tbackground-clip: padding-box;\r\n\t}\r\n\r\n\r\n/* popup */\r\n\r\n.leaflet-popup {\r\n\tposition: absolute;\r\n\ttext-align: center;\r\n\tmargin-bottom: 20px;\r\n\t}\r\n.leaflet-popup-content-wrapper {\r\n\tpadding: 1px;\r\n\ttext-align: left;\r\n\tborder-radius: 12px;\r\n\t}\r\n.leaflet-popup-content {\r\n\tmargin: 13px 19px;\r\n\tline-height: 1.4;\r\n\t}\r\n.leaflet-popup-content p {\r\n\tmargin: 18px 0;\r\n\t}\r\n.leaflet-popup-tip-container {\r\n\twidth: 40px;\r\n\theight: 20px;\r\n\tposition: absolute;\r\n\tleft: 50%;\r\n\tmargin-left: -20px;\r\n\toverflow: hidden;\r\n\tpointer-events: none;\r\n\t}\r\n.leaflet-popup-tip {\r\n\twidth: 17px;\r\n\theight: 17px;\r\n\tpadding: 1px;\r\n\r\n\tmargin: -10px auto 0;\r\n\r\n\t-webkit-transform: rotate(45deg);\r\n\t -moz-transform: rotate(45deg);\r\n\t -ms-transform: rotate(45deg);\r\n\t -o-transform: rotate(45deg);\r\n\t transform: rotate(45deg);\r\n\t}\r\n.leaflet-popup-content-wrapper,\r\n.leaflet-popup-tip {\r\n\tbackground: white;\r\n\tcolor: #333;\r\n\tbox-shadow: 0 3px 14px rgba(0,0,0,0.4);\r\n\t}\r\n.leaflet-container a.leaflet-popup-close-button {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tright: 0;\r\n\tpadding: 4px 4px 0 0;\r\n\tborder: none;\r\n\ttext-align: center;\r\n\twidth: 18px;\r\n\theight: 14px;\r\n\tfont: 16px/14px Tahoma, Verdana, sans-serif;\r\n\tcolor: #c3c3c3;\r\n\ttext-decoration: none;\r\n\tfont-weight: bold;\r\n\tbackground: transparent;\r\n\t}\r\n.leaflet-container a.leaflet-popup-close-button:hover {\r\n\tcolor: #999;\r\n\t}\r\n.leaflet-popup-scrolled {\r\n\toverflow: auto;\r\n\tborder-bottom: 1px solid #ddd;\r\n\tborder-top: 1px solid #ddd;\r\n\t}\r\n\r\n.leaflet-oldie .leaflet-popup-content-wrapper {\r\n\tzoom: 1;\r\n\t}\r\n.leaflet-oldie .leaflet-popup-tip {\r\n\twidth: 24px;\r\n\tmargin: 0 auto;\r\n\r\n\t-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";\r\n\tfilter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);\r\n\t}\r\n.leaflet-oldie .leaflet-popup-tip-container {\r\n\tmargin-top: -1px;\r\n\t}\r\n\r\n.leaflet-oldie .leaflet-control-zoom,\r\n.leaflet-oldie .leaflet-control-layers,\r\n.leaflet-oldie .leaflet-popup-content-wrapper,\r\n.leaflet-oldie .leaflet-popup-tip {\r\n\tborder: 1px solid #999;\r\n\t}\r\n\r\n\r\n/* div icon */\r\n\r\n.leaflet-div-icon {\r\n\tbackground: #fff;\r\n\tborder: 1px solid #666;\r\n\t}\r\n\r\n\r\n/* Tooltip */\r\n/* Base styles for the element that has a tooltip */\r\n.leaflet-tooltip {\r\n\tposition: absolute;\r\n\tpadding: 6px;\r\n\tbackground-color: #fff;\r\n\tborder: 1px solid #fff;\r\n\tborder-radius: 3px;\r\n\tcolor: #222;\r\n\twhite-space: nowrap;\r\n\t-webkit-user-select: none;\r\n\t-moz-user-select: none;\r\n\t-ms-user-select: none;\r\n\tuser-select: none;\r\n\tpointer-events: none;\r\n\tbox-shadow: 0 1px 3px rgba(0,0,0,0.4);\r\n\t}\r\n.leaflet-tooltip.leaflet-clickable {\r\n\tcursor: pointer;\r\n\tpointer-events: auto;\r\n\t}\r\n.leaflet-tooltip-top:before,\r\n.leaflet-tooltip-bottom:before,\r\n.leaflet-tooltip-left:before,\r\n.leaflet-tooltip-right:before {\r\n\tposition: absolute;\r\n\tpointer-events: none;\r\n\tborder: 6px solid transparent;\r\n\tbackground: transparent;\r\n\tcontent: "";\r\n\t}\r\n\r\n/* Directions */\r\n\r\n.leaflet-tooltip-bottom {\r\n\tmargin-top: 6px;\r\n}\r\n.leaflet-tooltip-top {\r\n\tmargin-top: -6px;\r\n}\r\n.leaflet-tooltip-bottom:before,\r\n.leaflet-tooltip-top:before {\r\n\tleft: 50%;\r\n\tmargin-left: -6px;\r\n\t}\r\n.leaflet-tooltip-top:before {\r\n\tbottom: 0;\r\n\tmargin-bottom: -12px;\r\n\tborder-top-color: #fff;\r\n\t}\r\n.leaflet-tooltip-bottom:before {\r\n\ttop: 0;\r\n\tmargin-top: -12px;\r\n\tmargin-left: -6px;\r\n\tborder-bottom-color: #fff;\r\n\t}\r\n.leaflet-tooltip-left {\r\n\tmargin-left: -6px;\r\n}\r\n.leaflet-tooltip-right {\r\n\tmargin-left: 6px;\r\n}\r\n.leaflet-tooltip-left:before,\r\n.leaflet-tooltip-right:before {\r\n\ttop: 50%;\r\n\tmargin-top: -6px;\r\n\t}\r\n.leaflet-tooltip-left:before {\r\n\tright: 0;\r\n\tmargin-right: -12px;\r\n\tborder-left-color: #fff;\r\n\t}\r\n.leaflet-tooltip-right:before {\r\n\tleft: 0;\r\n\tmargin-left: -12px;\r\n\tborder-right-color: #fff;\r\n\t}\r\n'],sourceRoot:""}])},function(t,e){t.exports=function(t){return"string"!=typeof t?t:(/^['"].*['"]$/.test(t)&&(t=t.slice(1,-1)),/["'() \t\n]/.test(t)?'"'+t.replace(/"/g,'\\"').replace(/\n/g,"\\n")+'"':t)}},function(t,e,n){t.exports=n.p+"images/layers.png"},function(t,e,n){t.exports=n.p+"images/layers-2x.png"},function(t,e,n){t.exports=n.p+"images/marker-icon.png"},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=r(n(0)),o=r(n(21));function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)){var i=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(t,n):{};i.get||i.set?Object.defineProperty(e,n,i):e[n]=t[n]}return e.default=t,e}var a={"CartoDB Positron":{url:"https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png",attribution:'© OpenStreetMap © CartoDB',subdomains:"abcd"},"CartoDB Dark":{url:"https://cartodb-basemaps-{s}.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png",attribution:'© OpenStreetMap © CartoDB',subdomains:"abcd"}},s=function(){function t(t,e){this.ctrl=t,this.mapContainer=e,this.circles=[]}return t.prototype.createMap=function(){var t=window.L.latLng(parseFloat(this.ctrl.panel.mapCenterLatitude),parseFloat(this.ctrl.panel.mapCenterLongitude));this.map=o.map(this.mapContainer,{worldCopyJump:!0,preferCanvas:!0,center:t,zoom:parseInt(this.ctrl.panel.initialZoom,10)||1}),this.setMouseWheelZoom();var e=a[this.ctrl.tileServer];window.L.tileLayer(e.url,{maxZoom:18,subdomains:e.subdomains,reuseTiles:!0,detectRetina:!0,attribution:e.attribution}).addTo(this.map)},t.prototype.createLegend=function(){var t=this;this.legend=window.L.control({position:"bottomleft"}),this.legend.onAdd=function(){return t.legend._div=window.L.DomUtil.create("div","info legend"),t.legend.update(),t.legend._div},this.legend.update=function(){var e=t.ctrl.data.thresholds,n="";n+='
< '+e[0]+"
";for(var i=0;i '+e[i]+(e[i+1]?"–"+e[i+1]+"":"+");t.legend._div.innerHTML=n},this.legend.addTo(this.map)},t.prototype.needToRedrawCircles=function(t){if(0===this.circles.length&&0=this.ctrl.data.thresholds[e-1])return this.ctrl.panel.colors[e];return i.first(this.ctrl.panel.colors)},t.prototype.resize=function(){this.map.invalidateSize()},t.prototype.panToMapCenter=function(){this.map.panTo([parseFloat(this.ctrl.panel.mapCenterLatitude),parseFloat(this.ctrl.panel.mapCenterLongitude)]),this.ctrl.mapCenterMoved=!1},t.prototype.removeLegend=function(){this.legend.remove(this.map),this.legend=null},t.prototype.setMouseWheelZoom=function(){this.ctrl.panel.mouseWheelZoom?this.map.scrollWheelZoom.enable():this.map.scrollWheelZoom.disable()},t.prototype.addCircles=function(t){return window.L.layerGroup(t).addTo(this.map)},t.prototype.removeCircles=function(){this.map.removeLayer(this.circlesLayer)},t.prototype.setZoom=function(t){this.map.setZoom(parseInt(t,10))},t.prototype.remove=function(){this.circles=[],this.circlesLayer&&this.removeCircles(),this.legend&&this.removeLegend(),this.map.remove()},t}();e.default=s},function(t,e,n){ +/* @preserve + * Leaflet 1.3.1+Detached: ba6f97fff8647e724e4dfe66d2ed7da11f908989.ba6f97f, a JS library for interactive maps. http://leafletjs.com + * (c) 2010-2017 Vladimir Agafonkin, (c) 2010-2011 CloudMade + */ +window,function(t){"use strict";var e=Object.freeze;function n(t){var e,n,i,o;for(n=1,i=arguments.length;n=this.min.x&&n.x<=this.max.x&&e.y>=this.min.y&&n.y<=this.max.y},intersects:function(t){t=I(t);var e=this.min,n=this.max,i=t.min,o=t.max,r=o.x>=e.x&&i.x<=n.x,a=o.y>=e.y&&i.y<=n.y;return r&&a},overlaps:function(t){t=I(t);var e=this.min,n=this.max,i=t.min,o=t.max,r=o.x>e.x&&i.xe.y&&i.y=i.lat&&n.lat<=o.lat&&e.lng>=i.lng&&n.lng<=o.lng},intersects:function(t){t=F(t);var e=this._southWest,n=this._northEast,i=t.getSouthWest(),o=t.getNorthEast(),r=o.lat>=e.lat&&i.lat<=n.lat,a=o.lng>=e.lng&&i.lng<=n.lng;return r&&a},overlaps:function(t){t=F(t);var e=this._southWest,n=this._northEast,i=t.getSouthWest(),o=t.getNorthEast(),r=o.lat>e.lat&&i.late.lng&&i.lng';var e=t.firstChild;return e.style.behavior="url(#default#VML)",e&&"object"==typeof e.adj}catch(t){return!1}}();function Et(t){return 0<=navigator.userAgent.toLowerCase().indexOf(t)}var zt=(Object.freeze||Object)({ie:J,ielt9:Q,edge:$,webkit:tt,android:et,android23:nt,androidStock:ot,opera:rt,chrome:at,gecko:st,safari:lt,phantom:ht,opera12:ut,win:ct,ie3d:pt,webkit3d:dt,gecko3d:ft,any3d:mt,mobile:_t,mobileWebkit:gt,mobileWebkit3d:At,msPointer:vt,pointer:yt,touch:Ct,mobileOpera:bt,mobileGecko:xt,retina:wt,canvas:Bt,svg:Lt,vml:Pt}),Tt=vt?"MSPointerDown":"pointerdown",kt=vt?"MSPointerMove":"pointermove",Mt=vt?"MSPointerUp":"pointerup",St=vt?"MSPointerCancel":"pointercancel",Zt=["INPUT","SELECT","OPTION"],Ot={},It=!1,Dt=0;function Ft(t){Ot[t.pointerId]=t,Dt++}function jt(t){Ot[t.pointerId]&&(Ot[t.pointerId]=t)}function Rt(t){delete Ot[t.pointerId],Dt--}function Nt(t,e){for(var n in t.touches=[],Ot)t.touches.push(Ot[n]);t.changedTouches=[t],e(t)}var Ut=vt?"MSPointerDown":yt?"pointerdown":"touchstart",Wt=vt?"MSPointerUp":yt?"pointerup":"touchend",Ht="_leaflet_";function qt(t,e,n,i){if("object"==typeof e)for(var o in e)Yt(t,o,e[o],n);else for(var r=0,a=(e=p(e)).length;rthis.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,e){this._enforcingBounds=!0;var n=this.getCenter(),i=this._limitCenter(n,this._zoom,F(t));return n.equals(i)||this.panTo(i,e),this._enforcingBounds=!1,this},invalidateSize:function(t){if(!this._loaded)return this;t=n({animate:!1,pan:!0},!0===t?{animate:!0}:t);var e=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var i=this.getSize(),r=e.divideBy(2).round(),a=i.divideBy(2).round(),s=r.subtract(a);return s.x||s.y?(t.animate&&t.pan?this.panBy(s):(t.pan&&this._rawPanBy(s),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(o(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=n({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var e=o(this._handleGeolocationResponse,this),i=o(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e=t.code,n=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+n+"."})},_handleGeolocationResponse:function(t){var e=new j(t.coords.latitude,t.coords.longitude),n=e.toBounds(t.coords.accuracy),i=this._locateOptions;if(i.setView){var o=this.getBoundsZoom(n);this.setView(e,i.maxZoom?Math.min(o,i.maxZoom):o)}var r={latlng:e,bounds:n,timestamp:t.timestamp};for(var a in t.coords)"number"==typeof t.coords[a]&&(r[a]=t.coords[a]);this.fire("locationfound",r)},addHandler:function(t,e){if(!e)return this;var n=this[t]=new e(this);return this._handlers.push(n),this.options[t]&&n.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}var t;for(t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),Ce(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[t].remove();for(t in this._panes)Ce(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,e){var n=ye("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),e||this._mapPane);return t&&(this._panes[t]=n),n},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new D(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,n){t=F(t),n=Z(n||[0,0]);var i=this.getZoom()||0,o=this.getMinZoom(),r=this.getMaxZoom(),a=t.getNorthWest(),s=t.getSouthEast(),l=this.getSize().subtract(n),h=I(this.project(s,i),this.project(a,i)).getSize(),u=mt?this.options.zoomSnap:1,c=l.x/h.x,p=l.y/h.y,d=e?Math.max(c,p):Math.min(c,p);return i=this.getScaleZoom(d,i),u&&(i=Math.round(i/(u/100))*(u/100),i=e?Math.ceil(i/u)*u:Math.floor(i/u)*u),Math.max(o,Math.min(r,i))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new M(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,e){var n=this._getTopLeftPoint(t,e);return new O(n,n.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,e){var n=this.options.crs;return e=void 0===e?this._zoom:e,n.scale(t)/n.scale(e)},getScaleZoom:function(t,e){var n=this.options.crs;e=void 0===e?this._zoom:e;var i=n.zoom(t*n.scale(e));return isNaN(i)?1/0:i},project:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.latLngToPoint(R(t),e)},unproject:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.pointToLatLng(Z(t),e)},layerPointToLatLng:function(t){var e=Z(t).add(this.getPixelOrigin());return this.unproject(e)},latLngToLayerPoint:function(t){return this.project(R(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(R(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(F(t))},distance:function(t,e){return this.options.crs.distance(R(t),R(e))},containerPointToLayerPoint:function(t){return Z(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return Z(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var e=this.containerPointToLayerPoint(Z(t));return this.layerPointToLatLng(e)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(R(t)))},mouseEventToContainerPoint:function(t){return ee(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var e=this._container=Ae(t);if(!e)throw new Error("Map container not found.");if(e._leaflet_id)throw new Error("Map container is already initialized.");qt(e,"scroll",this._onScroll,this),this._containerId=a(e)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&mt,Le(t,"leaflet-container"+(Ct?" leaflet-touch":"")+(wt?" leaflet-retina":"")+(Q?" leaflet-oldie":"")+(lt?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var e=ve(t,"position");"absolute"!==e&&"relative"!==e&&"fixed"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Se(this._mapPane,new M(0,0)),this.createPane("tilePane"),this.createPane("shadowPane"),this.createPane("overlayPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(Le(t.markerPane,"leaflet-zoom-hide"),Le(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,e){Se(this._mapPane,new M(0,0));var n=!this._loaded;this._loaded=!0,e=this._limitZoom(e),this.fire("viewprereset");var i=this._zoom!==e;this._moveStart(i,!1)._move(t,e)._moveEnd(i),this.fire("viewreset"),n&&this.fire("load")},_moveStart:function(t,e){return t&&this.fire("zoomstart"),e||this.fire("movestart"),this},_move:function(t,e,n){void 0===e&&(e=this._zoom);var i=this._zoom!==e;return this._zoom=e,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(i||n&&n.pinch)&&this.fire("zoom",n),this.fire("move",n)},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return P(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Se(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={},this._targets[a(this._container)]=this;var e=t?Gt:qt;e(this._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress",this._handleDOMEvent,this),this.options.trackResize&&e(window,"resize",this._onResize,this),mt&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){P(this._resizeRequest),this._resizeRequest=B(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,e){for(var n,i=[],o="mouseout"===e||"mouseover"===e,r=t.target||t.srcElement,s=!1;r;){if((n=this._targets[a(r)])&&("click"===e||"preclick"===e)&&!t._simulated&&this._draggableMoved(n)){s=!0;break}if(n&&n.listens(e,!0)){if(o&&!le(r,t))break;if(i.push(n),o)break}if(r===this._container)break;r=r.parentNode}return i.length||s||o||!le(r,t)||(i=[this]),i},_handleDOMEvent:function(t){if(this._loaded&&!se(t)){var e=t.type;"mousedown"!==e&&"keypress"!==e||Fe(t.target||t.srcElement),this._fireDOMEvent(t,e)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,i){if("click"===t.type){var o=n({},t);o.type="preclick",this._fireDOMEvent(o,o.type,i)}if(!t._stopped&&(i=(i||[]).concat(this._findEventTargets(t,e))).length){var r=i[0];"contextmenu"===e&&r.listens(e,!0)&&$t(t);var a={originalEvent:t};if("keypress"!==t.type){var s=r.getLatLng&&(!r._radius||r._radius<=10);a.containerPoint=s?this.latLngToContainerPoint(r.getLatLng()):this.mouseEventToContainerPoint(t),a.layerPoint=this.containerPointToLayerPoint(a.containerPoint),a.latlng=s?r.getLatLng():this.layerPointToLatLng(a.layerPoint)}for(var l=0;lthis.options.zoomAnimationThreshold)return!1;var i=this.getZoomScale(e),o=this._getCenterOffset(t)._divideBy(1-1/i);return!(!0!==n.animate&&!this.getSize().contains(o)||(B(function(){this._moveStart(!0,!1)._animateZoom(t,e,!0)},this),0))},_animateZoom:function(t,e,n,i){this._mapPane&&(n&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=e,Le(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:e,noUpdate:i}),setTimeout(o(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&Pe(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),B(function(){this._moveEnd(!0)},this))}}),We=z.extend({options:{position:"topright"},initialize:function(t){d(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var e=this._container=this.onAdd(t),n=this.getPosition(),i=t._controlCorners[n];return Le(e,"leaflet-control"),-1!==n.indexOf("bottom")?i.insertBefore(e,i.firstChild):i.appendChild(e),this},remove:function(){return this._map&&(Ce(this._container),this.onRemove&&this.onRemove(this._map),this._map=null),this},_refocusOnMap:function(t){this._map&&t&&0",i=document.createElement("div");return i.innerHTML=n,i.firstChild},_addItem:function(t){var e,n=document.createElement("label"),i=this._map.hasLayer(t.layer);t.overlay?((e=document.createElement("input")).type="checkbox",e.className="leaflet-control-layers-selector",e.defaultChecked=i):e=this._createRadioElement("leaflet-base-layers",i),this._layerControlInputs.push(e),e.layerId=a(t.layer),qt(e,"click",this._onInputClick,this);var o=document.createElement("span");o.innerHTML=" "+t.name;var r=document.createElement("div");return n.appendChild(r),r.appendChild(e),r.appendChild(o),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(n),this._checkDisabledLayers(),n},_onInputClick:function(){var t,e,n=this._layerControlInputs,i=[],o=[];this._handlingClick=!0;for(var r=n.length-1;0<=r;r--)t=n[r],e=this._getLayer(t.layerId).layer,t.checked?i.push(e):t.checked||o.push(e);for(r=0;re.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),Ve=We.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"−",zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",n=ye("div",e+" leaflet-bar"),i=this.options;return this._zoomInButton=this._createButton(i.zoomInText,i.zoomInTitle,e+"-in",n,this._zoomIn),this._zoomOutButton=this._createButton(i.zoomOutText,i.zoomOutTitle,e+"-out",n,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),n},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,e,n,i,o){var r=ye("a",n,i);return r.innerHTML=t,r.href="#",r.title=e,r.setAttribute("role","button"),r.setAttribute("aria-label",e),Qt(r),qt(r,"click",te),qt(r,"click",o,this),qt(r,"click",this._refocusOnMap,this),r},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";Pe(this._zoomInButton,e),Pe(this._zoomOutButton,e),(this._disabled||t._zoom===t.getMinZoom())&&Le(this._zoomOutButton,e),(this._disabled||t._zoom===t.getMaxZoom())&&Le(this._zoomInButton,e)}});Ue.mergeOptions({zoomControl:!0}),Ue.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new Ve,this.addControl(this.zoomControl))});var Ge=We.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var e="leaflet-control-scale",n=ye("div",e),i=this.options;return this._addScales(i,e+"-line",n),t.on(i.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),n},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,n){t.metric&&(this._mScale=ye("div",e,n)),t.imperial&&(this._iScale=ye("div",e,n))},_update:function(){var t=this._map,e=t.getSize().y/2,n=t.distance(t.containerPointToLatLng([0,e]),t.containerPointToLatLng([this.options.maxWidth,e]));this._updateScales(n)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var e=this._getRoundNum(t),n=e<1e3?e+" m":e/1e3+" km";this._updateScale(this._mScale,n,e/t)},_updateImperial:function(t){var e,n,i,o=3.2808399*t;5280Leaflet'},initialize:function(t){d(this,t),this._attributions={}},onAdd:function(t){for(var e in(t.attributionControl=this)._container=ye("div","leaflet-control-attribution"),Qt(this._container),t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t&&(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update()),this},removeAttribution:function(t){return t&&this._attributions[t]&&(this._attributions[t]--,this._update()),this},_update:function(){if(this._map){var t=[];for(var e in this._attributions)this._attributions[e]&&t.push(e);var n=[];this.options.prefix&&n.push(this.options.prefix),t.length&&n.push(t.join(", ")),this._container.innerHTML=n.join(" | ")}}});Ue.mergeOptions({attributionControl:!0}),Ue.addInitHook(function(){this.options.attributionControl&&(new Ye).addTo(this)}),We.Layers=qe,We.Zoom=Ve,We.Scale=Ge,We.Attribution=Ye,He.layers=function(t,e,n){return new qe(t,e,n)},He.zoom=function(t){return new Ve(t)},He.scale=function(t){return new Ge(t)},He.attribution=function(t){return new Ye(t)};var Ke=z.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled&&(this._enabled=!1,this.removeHooks()),this},enabled:function(){return!!this._enabled}});Ke.addTo=function(t,e){return t.addHandler(e,this),this};var Xe,Je={Events:T},Qe=Ct?"touchstart mousedown":"mousedown",$e={mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},tn={mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"},en=k.extend({options:{clickTolerance:3},initialize:function(t,e,n,i){d(this,i),this._element=t,this._dragStartTarget=e||t,this._preventOutline=n},enable:function(){this._enabled||(qt(this._dragStartTarget,Qe,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(en._dragging===this&&this.finishDrag(),Gt(this._dragStartTarget,Qe,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!Be(this._element,"leaflet-zoom-anim")&&!(en._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||((en._dragging=this)._preventOutline&&Fe(this._element),Ie(),he(),this._moving)))){this.fire("down");var e=t.touches?t.touches[0]:t;this._startPoint=new M(e.clientX,e.clientY),qt(document,tn[t.type],this._onMove,this),qt(document,$e[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&1e.max.x&&(n|=2),t.ye.max.y&&(n|=8),n}function ln(t,e,n,i){var o,r=e.x,a=e.y,s=n.x-r,l=n.y-a,h=s*s+l*l;return 0this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()t.y!=i.y>t.y&&t.x<(i.x-n.x)*(t.y-n.y)/(i.y-n.y)+n.x&&(h=!h);return h||Tn.prototype._containsPoint.call(this,t,!0)}}),Mn=bn.extend({initialize:function(t,e){d(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,n,i,o=g(t)?t:t.features;if(o){for(e=0,n=o.length;eh.x&&(u=r.x+i-h.x+l.x),r.x-u-s.x<0&&(u=r.x-s.x),r.y+n+l.y>h.y&&(c=r.y+n-h.y+l.y),r.y-c-s.y<0&&(c=r.y-s.y),(u||c)&&t.fire("autopanstart").panBy([u,c])}},_onCloseButtonClick:function(t){this._close(),te(t)},_getAnchor:function(){return Z(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});Ue.mergeOptions({closePopupOnClick:!0}),Ue.include({openPopup:function(t,e,n){return t instanceof Vn||(t=new Vn(n).setContent(t)),e&&t.setLatLng(e),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),yn.include({bindPopup:function(t,e){return t instanceof Vn?(d(t,e),(this._popup=t)._source=this):(this._popup&&!e||(this._popup=new Vn(e,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,e){if(t instanceof yn||(e=t,t=this),t instanceof bn)for(var n in this._layers){t=this._layers[n];break}return e||(e=t.getCenter?t.getCenter():t.getLatLng()),this._popup&&this._map&&(this._popup._source=t,this._popup.update(),this._map.openPopup(this._popup,e)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var e=t.layer||t.target;this._popup&&this._map&&(te(t),e instanceof Pn?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===e?this.closePopup():this.openPopup(e,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var Gn=qn.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){qn.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&this._source.fire("tooltipopen",{tooltip:this},!0)},onRemove:function(t){qn.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&this._source.fire("tooltipclose",{tooltip:this},!0)},getEvents:function(){var t=qn.prototype.getEvents.call(this);return Ct&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=ye("div",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var e=this._map,n=this._container,i=e.latLngToContainerPoint(e.getCenter()),o=e.layerPointToContainerPoint(t),r=this.options.direction,a=n.offsetWidth,s=n.offsetHeight,l=Z(this.options.offset),h=this._getAnchor();t="top"===r?t.add(Z(-a/2+l.x,-s+l.y+h.y,!0)):"bottom"===r?t.subtract(Z(a/2-l.x,-l.y,!0)):"center"===r?t.subtract(Z(a/2+l.x,s/2-h.y+l.y,!0)):"right"===r||"auto"===r&&o.xthis.options.maxZoom||nthis.options.maxZoom||void 0!==this.options.minZoom&&on.max.x)||!e.wrapLat&&(t.yn.max.y))return!1}if(!this.options.bounds)return!0;var i=this._tileCoordsToBounds(t);return F(this.options.bounds).overlaps(i)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var e=this._map,n=this.getTileSize(),i=t.scaleBy(n),o=i.add(n);return[e.unproject(i,t.z),e.unproject(o,t.z)]},_tileCoordsToBounds:function(t){var e=this._tileCoordsToNwSe(t),n=new D(e[0],e[1]);return this.options.noWrap||(n=this._map.wrapLatLngBounds(n)),n},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var e=t.split(":"),n=new M(+e[0],+e[1]);return n.z=+e[2],n},_removeTile:function(t){var e=this._tiles[t];e&&(ot||e.el.setAttribute("src",v),Ce(e.el),delete this._tiles[t],this.fire("tileunload",{tile:e.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){Le(t,"leaflet-tile");var e=this.getTileSize();t.style.width=e.x+"px",t.style.height=e.y+"px",t.onselectstart=h,t.onmousemove=h,Q&&this.options.opacity<1&&Te(t,this.options.opacity),et&&!nt&&(t.style.WebkitBackfaceVisibility="hidden")},_addTile:function(t,e){var n=this._getTilePos(t),i=this._tileCoordsToKey(t),r=this.createTile(this._wrapCoords(t),o(this._tileReady,this,t));this._initTile(r),this.createTile.length<2&&B(o(this._tileReady,this,t,null,r)),Se(r,n),this._tiles[i]={el:r,coords:t,current:!0},e.appendChild(r),this.fire("tileloadstart",{tile:r,coords:t})},_tileReady:function(t,e,n){if(this._map){e&&this.fire("tileerror",{error:e,tile:n,coords:t});var i=this._tileCoordsToKey(t);(n=this._tiles[i])&&(n.loaded=+new Date,this._map._fadeAnimated?(Te(n.el,0),P(this._fadeFrame),this._fadeFrame=B(this._updateOpacity,this)):(n.active=!0,this._pruneTiles()),e||(Le(n.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:n.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),Q||!this._map._fadeAnimated?B(this._pruneTiles,this):setTimeout(o(this._pruneTiles,this),250)))}},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var e=new M(this._wrapX?l(t.x,this._wrapX):t.x,this._wrapY?l(t.y,this._wrapY):t.y);return e.z=t.z,e},_pxBoundsToTileRange:function(t){var e=this.getTileSize();return new O(t.min.unscaleBy(e).floor(),t.max.unscaleBy(e).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}}),Xn=Kn.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,e){this._url=t,(e=d(this,e)).detectRetina&&wt&&0')}}catch(t){return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),ii={_initContainer:function(){this._container=ye("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||($n.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var e=t._container=ni("shape");Le(e,"leaflet-vml-shape "+(this.options.className||"")),e.coordsize="1 1",t._path=ni("path"),e.appendChild(t._path),this._updateStyle(t),this._layers[a(t)]=t},_addPath:function(t){var e=t._container;this._container.appendChild(e),t.options.interactive&&t.addInteractiveTarget(e)},_removePath:function(t){var e=t._container;Ce(e),t.removeInteractiveTarget(e),delete this._layers[a(t)]},_updateStyle:function(t){var e=t._stroke,n=t._fill,i=t.options,o=t._container;o.stroked=!!i.stroke,o.filled=!!i.fill,i.stroke?(e||(e=t._stroke=ni("stroke")),o.appendChild(e),e.weight=i.weight+"px",e.color=i.color,e.opacity=i.opacity,i.dashArray?e.dashStyle=g(i.dashArray)?i.dashArray.join(" "):i.dashArray.replace(/( *, *)/g," "):e.dashStyle="",e.endcap=i.lineCap.replace("butt","flat"),e.joinstyle=i.lineJoin):e&&(o.removeChild(e),t._stroke=null),i.fill?(n||(n=t._fill=ni("fill")),o.appendChild(n),n.color=i.fillColor||i.color,n.opacity=i.fillOpacity):n&&(o.removeChild(n),t._fill=null)},_updateCircle:function(t){var e=t._point.round(),n=Math.round(t._radius),i=Math.round(t._radiusY||n);this._setPath(t,t._empty()?"M0 0":"AL "+e.x+","+e.y+" "+n+","+i+" 0,23592600")},_setPath:function(t,e){t._path.v=e},_bringToFront:function(t){xe(t._container)},_bringToBack:function(t){we(t._container)}},oi=Pt?ni:Y,ri=$n.extend({getEvents:function(){var t=$n.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=oi("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=oi("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){Ce(this._container),Gt(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){$n.prototype._update.call(this);var t=this._bounds,e=t.getSize(),n=this._container;this._svgSize&&this._svgSize.equals(e)||(this._svgSize=e,n.setAttribute("width",e.x),n.setAttribute("height",e.y)),Se(n,t.min),n.setAttribute("viewBox",[t.min.x,t.min.y,e.x,e.y].join(" ")),this.fire("update")}},_initPath:function(t){var e=t._path=oi("path");t.options.className&&Le(e,t.options.className),t.options.interactive&&Le(e,"leaflet-interactive"),this._updateStyle(t),this._layers[a(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){Ce(t._path),t.removeInteractiveTarget(t._path),delete this._layers[a(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var e=t._path,n=t.options;e&&(n.stroke?(e.setAttribute("stroke",n.color),e.setAttribute("stroke-opacity",n.opacity),e.setAttribute("stroke-width",n.weight),e.setAttribute("stroke-linecap",n.lineCap),e.setAttribute("stroke-linejoin",n.lineJoin),n.dashArray?e.setAttribute("stroke-dasharray",n.dashArray):e.removeAttribute("stroke-dasharray"),n.dashOffset?e.setAttribute("stroke-dashoffset",n.dashOffset):e.removeAttribute("stroke-dashoffset")):e.setAttribute("stroke","none"),n.fill?(e.setAttribute("fill",n.fillColor||n.color),e.setAttribute("fill-opacity",n.fillOpacity),e.setAttribute("fill-rule",n.fillRule||"evenodd")):e.setAttribute("fill","none"))},_updatePoly:function(t,e){this._setPath(t,K(t._parts,e))},_updateCircle:function(t){var e=t._point,n=Math.max(Math.round(t._radius),1),i="a"+n+","+(Math.max(Math.round(t._radiusY),1)||n)+" 0 1,0 ",o=t._empty()?"M0 0":"M"+(e.x-n)+","+e.y+i+2*n+",0 "+i+2*-n+",0 ";this._setPath(t,o)},_setPath:function(t,e){t._path.setAttribute("d",e)},_bringToFront:function(t){xe(t._path)},_bringToBack:function(t){we(t._path)}});function ai(t){return Lt||Pt?new ri(t):null}Pt&&ri.include(ii),Ue.include({getRenderer:function(t){var e=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return e||(e=this._renderer=this.options.preferCanvas&&ei()||ai()),this.hasLayer(e)||this.addLayer(e),e},_getPaneRenderer:function(t){if("overlayPane"===t||void 0===t)return!1;var e=this._paneRenderers[t];return void 0===e&&(e=ri&&ai({pane:t})||ti&&ei({pane:t}),this._paneRenderers[t]=e),e}});var si=kn.extend({initialize:function(t,e){kn.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=F(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});ri.create=oi,ri.pointsToPath=K,Mn.geometryToLayer=Sn,Mn.coordsToLatLng=Zn,Mn.coordsToLatLngs=On,Mn.latLngToCoords=In,Mn.latLngsToCoords=Dn,Mn.getFeature=Fn,Mn.asFeature=jn,Ue.mergeOptions({boxZoom:!0});var li=Ke.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){qt(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){Gt(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){Ce(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),he(),Ie(),this._startPoint=this._map.mouseEventToContainerPoint(t),qt(document,{contextmenu:te,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=ye("div","leaflet-zoom-box",this._container),Le(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var e=new O(this._point,this._startPoint),n=e.getSize();Se(this._box,e.min),this._box.style.width=n.x+"px",this._box.style.height=n.y+"px"},_finish:function(){this._moved&&(Ce(this._box),Pe(this._container,"leaflet-crosshair")),ue(),De(),Gt(document,{contextmenu:te,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(o(this._resetState,this),0);var e=new D(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(e).fire("boxzoomend",{boxZoomBounds:e})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});Ue.addInitHook("addHandler","boxZoom",li),Ue.mergeOptions({doubleClickZoom:!0});var hi=Ke.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,n=e.getZoom(),i=e.options.zoomDelta,o=t.originalEvent.shiftKey?n-i:n+i;"center"===e.options.doubleClickZoom?e.setZoom(o):e.setZoomAround(t.containerPoint,o)}});Ue.addInitHook("addHandler","doubleClickZoom",hi),Ue.mergeOptions({dragging:!0,inertia:!nt,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var ui=Ke.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new en(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}Le(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){Pe(this._map._container,"leaflet-grab"),Pe(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var e=F(this._map.options.maxBounds);this._offsetLimit=I(this._map.latLngToContainerPoint(e.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(e.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var e=this._lastTime=+new Date,n=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(n),this._times.push(e),this._prunePositions(e)}this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;1e.max.x&&(t.x=this._viscousLimit(t.x,e.max.x)),t.y>e.max.y&&(t.y=this._viscousLimit(t.y,e.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,e=Math.round(t/2),n=this._initialWorldOffset,i=this._draggable._newPos.x,o=(i-e+n)%t+e-n,r=(i+e+n)%t-e-n,a=Math.abs(o+n)e.getMaxZoom()&&1\n\t// tags it will allow on a page\n\tif (!options.singleton && typeof options.singleton !== \"boolean\") options.singleton = isOldIE();\n\n\t// By default, add