From a3862a975cac9e13ecbafcc2c212022439504549 Mon Sep 17 00:00:00 2001 From: Victor Golovanenko Date: Thu, 26 May 2022 09:53:13 +0300 Subject: [PATCH] Initial commit --- .gitignore | 27 + MANIFEST.in | 3 + README.md | 85 + docs/images/screenshot_map.png | Bin 0 -> 1035407 bytes docs/images/screenshot_map_filters.png | Bin 0 -> 81060 bytes netbox_device_map/__init__.py | 27 + netbox_device_map/forms.py | 35 + netbox_device_map/geographical_map.py | 39 + netbox_device_map/helpers.py | 32 + netbox_device_map/navigation.py | 9 + netbox_device_map/settings.py | 7 + .../static/netbox_device_map/js/map.js | 119 + .../static/netbox_device_map/js/svg-icon.js | 267 + .../leaflet-sidebar/L.Control.Sidebar.css | 102 + .../leaflet-sidebar/L.Control.Sidebar.js | 202 + .../leaflet.fullscreen/Control.FullScreen.css | 10 + .../leaflet.fullscreen/Control.FullScreen.js | 341 + .../leaflet.fullscreen/icon-fullscreen.svg | 1 + .../MarkerCluster.Default.css | 60 + .../leaflet.markercluster/MarkerCluster.css | 14 + .../leaflet.markercluster-src.js | 2718 +++ .../leaflet.markercluster-src.js.map | 1 + .../leaflet.markercluster.js | 2 + .../leaflet.markercluster.js.map | 1 + .../leaflet/images/layers-2x.png | Bin 0 -> 1259 bytes .../leaflet/images/layers.png | Bin 0 -> 696 bytes .../leaflet/images/marker-icon-2x.png | Bin 0 -> 2464 bytes .../leaflet/images/marker-icon.png | Bin 0 -> 1466 bytes .../leaflet/images/marker-shadow.png | Bin 0 -> 618 bytes .../leaflet/leaflet-src.esm.js | 14033 +++++++++++++++ .../leaflet/leaflet-src.esm.js.map | 1 + .../netbox_device_map/leaflet/leaflet-src.js | 14126 ++++++++++++++++ .../leaflet/leaflet-src.js.map | 1 + .../netbox_device_map/leaflet/leaflet.css | 657 + .../netbox_device_map/leaflet/leaflet.js | 6 + .../netbox_device_map/leaflet/leaflet.js.map | 1 + .../leaflet/v1.7.1/images/layers-2x.png | Bin 0 -> 1259 bytes .../leaflet/v1.7.1/images/layers.png | Bin 0 -> 696 bytes .../leaflet/v1.7.1/images/marker-icon-2x.png | Bin 0 -> 2464 bytes .../leaflet/v1.7.1/images/marker-icon.png | Bin 0 -> 1466 bytes .../leaflet/v1.7.1/images/marker-shadow.png | Bin 0 -> 6466 bytes .../leaflet/v1.7.1/leaflet-src.esm.js | 13968 +++++++++++++++ .../leaflet/v1.7.1/leaflet-src.esm.js.map | 1 + .../leaflet/v1.7.1/leaflet-src.js | 14062 +++++++++++++++ .../leaflet/v1.7.1/leaflet-src.js.map | 1 + .../leaflet/v1.7.1/leaflet.css | 640 + .../leaflet/v1.7.1/leaflet.js | 6 + .../leaflet/v1.7.1/leaflet.js.map | 1 + .../static/netbox_device_map/style.css | 23 + .../templates/netbox_device_map/main.html | 86 + netbox_device_map/urls.py | 7 + netbox_device_map/views.py | 74 + setup.py | 18 + 53 files changed, 61814 insertions(+) create mode 100644 .gitignore create mode 100644 MANIFEST.in create mode 100644 README.md create mode 100644 docs/images/screenshot_map.png create mode 100644 docs/images/screenshot_map_filters.png create mode 100644 netbox_device_map/__init__.py create mode 100644 netbox_device_map/forms.py create mode 100644 netbox_device_map/geographical_map.py create mode 100644 netbox_device_map/helpers.py create mode 100644 netbox_device_map/navigation.py create mode 100644 netbox_device_map/settings.py create mode 100644 netbox_device_map/static/netbox_device_map/js/map.js create mode 100644 netbox_device_map/static/netbox_device_map/js/svg-icon.js create mode 100644 netbox_device_map/static/netbox_device_map/leaflet-sidebar/L.Control.Sidebar.css create mode 100644 netbox_device_map/static/netbox_device_map/leaflet-sidebar/L.Control.Sidebar.js create mode 100644 netbox_device_map/static/netbox_device_map/leaflet.fullscreen/Control.FullScreen.css create mode 100644 netbox_device_map/static/netbox_device_map/leaflet.fullscreen/Control.FullScreen.js create mode 100644 netbox_device_map/static/netbox_device_map/leaflet.fullscreen/icon-fullscreen.svg create mode 100644 netbox_device_map/static/netbox_device_map/leaflet.markercluster/MarkerCluster.Default.css create mode 100644 netbox_device_map/static/netbox_device_map/leaflet.markercluster/MarkerCluster.css create mode 100644 netbox_device_map/static/netbox_device_map/leaflet.markercluster/leaflet.markercluster-src.js create mode 100644 netbox_device_map/static/netbox_device_map/leaflet.markercluster/leaflet.markercluster-src.js.map create mode 100644 netbox_device_map/static/netbox_device_map/leaflet.markercluster/leaflet.markercluster.js create mode 100644 netbox_device_map/static/netbox_device_map/leaflet.markercluster/leaflet.markercluster.js.map create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/images/layers-2x.png create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/images/layers.png create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/images/marker-icon-2x.png create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/images/marker-icon.png create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/images/marker-shadow.png create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/leaflet-src.esm.js create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/leaflet-src.esm.js.map create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/leaflet-src.js create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/leaflet-src.js.map create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/leaflet.css create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/leaflet.js create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/leaflet.js.map create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/v1.7.1/images/layers-2x.png create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/v1.7.1/images/layers.png create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/v1.7.1/images/marker-icon-2x.png create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/v1.7.1/images/marker-icon.png create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/v1.7.1/images/marker-shadow.png create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/v1.7.1/leaflet-src.esm.js create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/v1.7.1/leaflet-src.esm.js.map create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/v1.7.1/leaflet-src.js create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/v1.7.1/leaflet-src.js.map create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/v1.7.1/leaflet.css create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/v1.7.1/leaflet.js create mode 100644 netbox_device_map/static/netbox_device_map/leaflet/v1.7.1/leaflet.js.map create mode 100644 netbox_device_map/static/netbox_device_map/style.css create mode 100644 netbox_device_map/templates/netbox_device_map/main.html create mode 100644 netbox_device_map/urls.py create mode 100644 netbox_device_map/views.py create mode 100644 setup.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..86feca0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..46b076a --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,3 @@ +include README.md +recursive-include netbox_device_map/templates * +recursive-include netbox_device_map/static * \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..75414b3 --- /dev/null +++ b/README.md @@ -0,0 +1,85 @@ +# NetBox device map +A simple device map plugin with filtering criteria for NetBox + +![Map screenshot](docs/images/screenshot_map.png) +![Map filters screenshot](docs/images/screenshot_map_filters.png) + +## Installation +1. Download plugin distribution from releases. +2. If your NetBox installation uses virtualenv, activate it like this: +``` +source /opt/netbox/venv/bin/activate +``` +3. Install the plugin from the distribution: +``` +sudo pip install /path/to/netbox-plugin-device-map.tar.gz +``` +4. Add plugin to `local_requirements.txt`: + +To ensure plugin is automatically re-installed during future NetBox upgrades, create a file named `local_requirements.txt` (if not already existing) in the NetBox root directory +and list the `nextbox-plugin-device-map` package: +``` +echo "/path/to/netbox-plugin-device-map.tar.gz" | sudo tee -a /opt/netbox/local_requirements.txt +``` +5. Collect static files: +``` +sudo python /opt/netbox/netbox/manage.py collectstatic +``` +6. To enable plugin, add the plugin's name to the PLUGINS list in `configuration.py` (it's usually located in `/opt/netbox/netbox/netbox/`) like so: +``` +PLUGINS = [ + 'netbox_device_map' +] +``` +7. Restart NetBox WSGI service to apply changes: +``` +sudo systemctl restart netbox +``` + +## Configuration +You can customize plugin behavior according to your needs. For example, change the custom field that contains device coordinates or install custom map tiles. +Update PLUGINS_CONFIG parameter in the `configuration.py` like this: +```python +PLUGINS_CONFIG = { + 'netbox_device_map': { + 'device_geolocation_cf': 'coordinates', + 'cpe_device_role': 'CPE', + 'geomap_settings': { + 'attribution': 'Your company | © OpenStreetMap contributors', + 'tiles': { + 'url_template': 'https://osm.yourdomain.net/hot/{z}/{x}/{y}.png', + 'options': { + 'maxZoom': 19 + } + } + } + } +} +``` +### Settings +| Setting | Default value | Description | +|-----------------------|---------------|-------------------------------------------------------------------------------------------------------------| +| device_geolocation_cf | `geolocation` | NetBox custom field for storing geographical location of devices (in the `","` format) | +| cpe_device_role | `CPE` | Name of the NetBox device role that contains CPE devices | +| geomap_settings | … | Geographical map settings | + +#### Geographical map settings +| Setting | Default value | Description | +|-------------|------------------------------------------------------------------------|-------------------------------------------------------| + | attribution | `Data by © OpenStreetMap` | Attribution text in the lower right corner of the map | +| crs | `EPSG3857` | Coordinate reference system | +| tiles | … | Tiles layer settings | + +Custom tiles layer settings: + +| Setting | Example value | Description | +|--------------|-----------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| url_template | `https://{s}.somedomain.com/blabla/{z}/{x}/{y}{r}.png` | `{s}` means one of the available subdomains (used sequentially to help with browser parallel requests per domain limitation; subdomain values are specified in options; a, b or c by default, can be omitted), `{z}` — zoom level, `{x}` and `{y}` — tile coordinates. `{r}` can be used to add "@2x" to the URL to load retina tiles. | +| options | `{'subdomains' : ['a', 'b', 'c'], 'minZoom': 0, 'maxZoom': 18}` | [Leaflet TileLayer](https://leafletjs.com/SlavaUkraini/reference.html#tilelayer) options | + +## Acknowledgements +- [Leaflet](https://leafletjs.com/) +### Leaflet plugins +- [leaflet.fullscreen](https://github.com/brunob/leaflet.fullscreen) +- [Leaflet-SVGIcon](https://github.com/iatkin/leaflet-svgicon) +- [leaflet-sidebar](https://github.com/Turbo87/leaflet-sidebar) diff --git a/docs/images/screenshot_map.png b/docs/images/screenshot_map.png new file mode 100644 index 0000000000000000000000000000000000000000..b995a2e7022b607292c8003a7a0f8f47ea5a7fc5 GIT binary patch literal 1035407 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℘V)(mL!AA6_IlR(tODJ5COeL- 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

MUk>%jvuJA@TF`Pg~#;%Ve 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ۍ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 literal 0 HcmV?d00001 diff --git a/netbox_device_map/__init__.py b/netbox_device_map/__init__.py new file mode 100644 index 0000000..2aa8c6b --- /dev/null +++ b/netbox_device_map/__init__.py @@ -0,0 +1,27 @@ +from extras.plugins import PluginConfig + + +class DeviceMapConfig(PluginConfig): + name = 'netbox_device_map' + verbose_name = 'Device map' + version = '0.1' + author = 'Victor Golovanenko' + author_email = 'drygdryg2014@yandex.com' + base_url = 'device-map' + default_settings = { + 'device_geolocation_cf': 'geolocation', + 'cpe_device_role': 'CPE', + 'geomap_settings': { + 'attribution': 'Data by © OpenStreetMap', + 'crs': 'EPSG3857', + 'tiles': { + 'url_template': 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', + 'options': { + 'subdomains': 'abc', + } + } + } + } + + +config = DeviceMapConfig diff --git a/netbox_device_map/forms.py b/netbox_device_map/forms.py new file mode 100644 index 0000000..5ef7a0f --- /dev/null +++ b/netbox_device_map/forms.py @@ -0,0 +1,35 @@ +from django import forms + +from dcim.models import DeviceRole, Device +from ipam.models import VLANGroup, VLAN +from utilities.forms import BootstrapMixin, DynamicModelChoiceField, DynamicModelMultipleChoiceField + + +class DeviceMapFilterForm(BootstrapMixin, forms.Form): + vlan_group = DynamicModelChoiceField( + queryset=VLANGroup.objects.all(), + required=False, + label="VLAN group", + help_text="VLAN group for VLAN selection" + ) + vlan = DynamicModelChoiceField( + queryset=VLAN.objects.all(), + label="VLAN", + help_text="Filter devices by VLAN attached to any device interface", + query_params={"group_id": "$vlan_group"} + ) + device_roles = DynamicModelMultipleChoiceField( + queryset=DeviceRole.objects.all(), + required=False, + label="Device roles", + help_text="Display devices of only the specified device roles" + ) + calculate_connections = forms.BooleanField( + required=False, + label="Calculate connections between devices", + initial=True + ) + + +class ConnectedCpeForm(forms.Form): + vlan = forms.ModelChoiceField(queryset=VLAN.objects.all(), required=False) diff --git a/netbox_device_map/geographical_map.py b/netbox_device_map/geographical_map.py new file mode 100644 index 0000000..51a72a4 --- /dev/null +++ b/netbox_device_map/geographical_map.py @@ -0,0 +1,39 @@ +from dcim.models import Device + +from .settings import plugin_settings +from .helpers import get_connected_devices, LatLon + + +geomap_settings = plugin_settings['geomap_settings'] +CPE_DEVICE_ROLE_NAME = plugin_settings['cpe_device_role'] + + +def configure_leaflet_map(map_id: str, devices: dict[Device, LatLon], calculate_connections=True) -> dict: + """Generate Leaflet map of devices and the connections between them. + :param map_id: initialize the map on the div with this id + :param devices: list of target devices to display on the map + :param calculate_connections: calculate connections between devices + """ + device_id_to_latlon = {device.id: position for device, position in devices.items()} + map_config = dict(**geomap_settings, map_id=map_id) + markers: list[dict] = [] + connections: set[frozenset[LatLon, LatLon]] = set() + for device, position in devices.items(): + markers.append(dict( + position=position, + icon=device.device_role.slug, + device=dict( + id=device.id, + name=device.name, + url=device.get_absolute_url(), + role=device.device_role.name + ) + )) + if calculate_connections: + for peer_device_id in get_connected_devices(device).values_list('id', flat=True).order_by(): + if peer_position := device_id_to_latlon.get(peer_device_id): + connections.add(frozenset((position, peer_position))) + + map_config.update(markers=markers, connections=[tuple(c) for c in connections]) + + return map_config diff --git a/netbox_device_map/helpers.py b/netbox_device_map/helpers.py new file mode 100644 index 0000000..4592b82 --- /dev/null +++ b/netbox_device_map/helpers.py @@ -0,0 +1,32 @@ +from dcim.models import Device +from django.db.models import QuerySet, Q +from ipam.models import VLAN + +from .settings import plugin_settings + + +LOCATION_CF_NAME = plugin_settings['device_geolocation_cf'] +LatLon = tuple[float, float] + + +def get_device_location(device: Device) -> LatLon | None: + """Extract device geolocation from special custom field""" + if location_cf := device.custom_field_data.get(LOCATION_CF_NAME): + return tuple(map(float, location_cf.replace(' ', '').split(',', maxsplit=1))) + + +def get_connected_devices(device: Device, vlan: VLAN = None) -> QuerySet[Device]: + """Get list of connected devices to the specified device. + If the vlan is specified, return only devices connected to the interfaces of the specified device + containing the specified VLAN""" + included_interfaces = device.interfaces.all() + if vlan is not None: + included_interfaces = included_interfaces.filter(Q(untagged_vlan=vlan) | Q(tagged_vlans=vlan)) + return Device.objects.filter(interfaces___link_peer_id__in=included_interfaces) + + +def are_devices_connected(device_a: Device, device_b: Device) -> bool: + """Determines whether devices are connected to each other by a direct connection""" + return bool( + Device.objects.filter(interfaces___link_peer_id__in=device_a.interfaces.all(), id=device_b.id).values('pk') + ) diff --git a/netbox_device_map/navigation.py b/netbox_device_map/navigation.py new file mode 100644 index 0000000..88ae336 --- /dev/null +++ b/netbox_device_map/navigation.py @@ -0,0 +1,9 @@ +from extras.plugins import PluginMenuItem + + +menu_items = ( + PluginMenuItem( + link='plugins:netbox_device_map:map', + link_text='Device map', + ), +) diff --git a/netbox_device_map/settings.py b/netbox_device_map/settings.py new file mode 100644 index 0000000..90f6169 --- /dev/null +++ b/netbox_device_map/settings.py @@ -0,0 +1,7 @@ +from django.conf import settings + +from . import config + +# Overlay custom settings over default settings +plugin_settings = config.default_settings | settings.PLUGINS_CONFIG[config.name] +plugin_settings['geomap_settings'] = config.default_settings['geomap_settings'] | plugin_settings['geomap_settings'] diff --git a/netbox_device_map/static/netbox_device_map/js/map.js b/netbox_device_map/static/netbox_device_map/js/map.js new file mode 100644 index 0000000..fd14bf4 --- /dev/null +++ b/netbox_device_map/static/netbox_device_map/js/map.js @@ -0,0 +1,119 @@ +let default_marker_icon = { + iconSize: [22, 33], + shadowEnable: true, + shadowOpacity: 0.25, + shadowAngle: 27, + shadowLength: 0.64, + shadowBlur: 1.5 +} +let marker_icon_configs = { + 'access-switch': Object.assign({color: "#2da652"}, default_marker_icon), + 'core-switch': Object.assign({color: "#d30b0b"}, default_marker_icon), + 'distribution-switch': Object.assign({color: "#277fca"}, default_marker_icon), + olt: Object.assign({color: "#c5ba26"}, default_marker_icon), + router: Object.assign({color: "#26A69A"}, default_marker_icon), + wifi: Object.assign({color: "#8111ea"}, default_marker_icon) +} + +const map_data = JSON.parse(document.getElementById('map-data').textContent) + +let geomap = L.map(map_data.map_id, + { + crs: L.CRS[map_data.crs], + layers: [L.tileLayer(map_data.tiles.url_template, map_data.tiles.options)], + fullscreenControl: true, + fullscreenControlOptions: {position: 'topright'} + } +) +geomap.attributionControl.setPrefix(`Leaflet`) +geomap.attributionControl.addAttribution(map_data.attribution) + +let sidebar = L.control.sidebar('map-sidebar', { + closeButton: true, + position: 'left' +}) +geomap.addControl(sidebar); + +let bounds = new L.LatLngBounds() + +// Preparing to place markers with the same coordinates in clusters +let markers = {} +map_data.markers.forEach(function(entry) { + let key = entry.position.toString() + if (key in markers) { + markers[key].push(entry) + } else { + markers[key] = [entry] + } +}) + +for (let key in markers) { + const marker_parent_layer = markers[key].length > 1 ? L.markerClusterGroup() : geomap; + for (let marker_data of markers[key]) { + let iconOptions = {} + if (marker_data.icon && marker_data.icon in marker_icon_configs) { + iconOptions = marker_icon_configs[marker_data.icon] + } else { + iconOptions = default_marker_icon + } + let markerObj = L.marker(marker_data.position, {icon: L.divIcon.svgIcon(iconOptions), device: marker_data.device}) + .bindTooltip(`${marker_data.device.name}
${marker_data.device.role}`) + markerObj.on('click', function (event) { + let device = event.target.options.device + if (sidebar.isVisible() && (sidebar.displayed_device === device.id)) { + sidebar.displayed_device = undefined + sidebar.hide() + } else { + sidebar.displayed_device = device.id + document.querySelector('.sidebar-device-name').innerHTML = `${device.name}` + document.querySelector('.sidebar-device-role').innerHTML = device.role + sidebar.show() + fetch(`connected-cpe/${device.id}?vlan=${map_data.vlan}`) + .then(response => response.json()).then( + function (response) { + if (response.status === true) { + document.querySelector('.sidebar-device-type').innerHTML = response.device_type + let cpe_list = document.querySelector('.sidebar-cpe-list') + cpe_list.innerHTML = "" + if (response.cpe_devices?.length) { + cpe_list.innerHTML = `

Connected CPEs in the selected VLAN:
` + let ul = document.createElement('ul') + ul.setAttribute('class', 'mb-0') + cpe_list.appendChild(ul) + for (let cpe_device of response.cpe_devices) { + let li = document.createElement('li'); + li.innerHTML = `${cpe_device.name} + · + ${cpe_device.comments}` + ul.appendChild(li) + } + } else { + cpe_list.innerHTML = "There are no connected CPEs in the selected VLAN" + } + } + } + ) + } + }) + bounds.extend(marker_data.position) + marker_parent_layer.addLayer(markerObj) + } + if (markers[key].length > 1) { + geomap.addLayer(marker_parent_layer) + } +} + +const normalLineStyle = {weight: 3, color: '#3388ff'} +const boldLineStyle ={weight: 5, color:'#0c10ff'}; + +for (let connection of map_data.connections) { + let line = L.polyline(connection, normalLineStyle).addTo(geomap) + line.on('mouseover', function () {this.setStyle(boldLineStyle); this.bringToFront()}) + line.on('mouseout', function () {this.setStyle(normalLineStyle)}) +} + +if (bounds.isValid()) { + geomap.fitBounds(bounds) +} else { + geomap.fitWorld() +} diff --git a/netbox_device_map/static/netbox_device_map/js/svg-icon.js b/netbox_device_map/static/netbox_device_map/js/svg-icon.js new file mode 100644 index 0000000..d735102 --- /dev/null +++ b/netbox_device_map/static/netbox_device_map/js/svg-icon.js @@ -0,0 +1,267 @@ +//Leaflet-SVGIcon +//SVG icon for any marker class +//Ilya Atkin +//ilya.atkin@unh.edu + +L.DivIcon.SVGIcon = L.DivIcon.extend({ + options: { + "className": "svg-icon", + "circleAnchor": null, //defaults to [iconSize.x/2, iconSize.x/2] + "circleColor": null, //defaults to color + "circleFillColor": "rgb(255,255,255)", + "circleFillOpacity": null, //default to opacity + "circleImageAnchor": null, //defaults to [(iconSize.x - circleImageSize.x)/2, (iconSize.x - circleImageSize.x)/2] + "circleImagePath": null, //no default, preference over circleText + "circleImageSize": null, //defaults to [iconSize.x/4, iconSize.x/4] if circleImage is supplied + "circleOpacity": null, // defaults to opacity + "circleRatio": 0.5, + "circleText": "", + "circleWeight": null, //defaults to weight + "color": "rgb(0,102,255)", + "fillColor": null, // defaults to color + "fillOpacity": 0.4, + "fontColor": "rgb(0, 0, 0)", + "fontOpacity": "1", + "fontSize": null, // defaults to iconSize.x/4 + "fontWeight": "normal", + "iconAnchor": null, //defaults to [iconSize.x/2, iconSize.y] (point tip) + "iconSize": L.point(32,48), + "opacity": 1, + "popupAnchor": null, + "shadowAngle": 45, + "shadowBlur": 1, + "shadowColor": "rgb(0,0,10)", + "shadowEnable": false, + "shadowLength": .75, + "shadowOpacity": 0.5, + "shadowTranslate": L.point(0,0), + "weight": 2 + }, + initialize: function(options) { + options = L.Util.setOptions(this, options) + + //iconSize needs to be converted to a Point object if it is not passed as one + options.iconSize = L.point(options.iconSize) + + //in addition to setting option dependant defaults, Point-based options are converted to Point objects + if (!options.circleAnchor) { + options.circleAnchor = L.point(Number(options.iconSize.x)/2, Number(options.iconSize.x)/2) + } + else { + options.circleAnchor = L.point(options.circleAnchor) + } + if (!options.circleColor) { + options.circleColor = options.color + } + if (!options.circleFillOpacity) { + options.circleFillOpacity = options.opacity + } + if (!options.circleOpacity) { + options.circleOpacity = options.opacity + } + if (!options.circleWeight) { + options.circleWeight = options.weight + } + if (!options.fillColor) { + options.fillColor = options.color + } + if (!options.fontSize) { + options.fontSize = Number(options.iconSize.x/4) + } + if (!options.iconAnchor) { + options.iconAnchor = L.point(Number(options.iconSize.x)/2, Number(options.iconSize.y)) + } + else { + options.iconAnchor = L.point(options.iconAnchor) + } + if (!options.popupAnchor) { + options.popupAnchor = L.point(0, (-0.75)*(options.iconSize.y)) + } + else { + options.popupAnchor = L.point(options.popupAnchor) + } + if (options.circleImagePath && !options.circleImageSize) { + options.circleImageSize = L.point(Number(options.iconSize.x)/4, Number(options.iconSize.x)/4) + } + else { + options.circleImageSize = L.point(options.circleImageSize) + } + if (options.circleImagePath && !options.circleImageAnchor) { + options.circleImageAnchor = L.point( + (Number(options.iconSize.x) - Number(options.circleImageSize.x))/2, + (Number(options.iconSize.x) - Number(options.circleImageSize.y))/2 + ) + } + else { + options.circleImageAnchor = L.point(options.circleImageAnchor) + } + + options.html = this._createSVG() + }, + _createCircle: function() { + var cx = Number(this.options.circleAnchor.x) + var cy = Number(this.options.circleAnchor.y) + var radius = this.options.iconSize.x/2 * Number(this.options.circleRatio) + var fill = this.options.circleFillColor + var fillOpacity = this.options.circleFillOpacity + var stroke = this.options.circleColor + var strokeOpacity = this.options.circleOpacity + var strokeWidth = this.options.circleWeight + var className = this.options.className + "-circle" + + var circle = '' + + return circle + }, + _createCircleImage: function() { + var x = this.options.circleImageAnchor.x + var y = this.options.circleImageAnchor.y + var height = this.options.circleImageSize.y + var width = this.options.circleImageSize.x + var href = this.options.circleImagePath + + var image = '' + + return image + }, + _createPathDescription: function() { + var height = Number(this.options.iconSize.y) + var width = Number(this.options.iconSize.x) + var weight = Number(this.options.weight) + var margin = weight / 2 + + var startPoint = "M " + margin + " " + (width/2) + " " + var leftLine = "L " + (width/2) + " " + (height - weight) + " " + var rightLine = "L " + (width - margin) + " " + (width/2) + " " + var arc = "A " + (width/4) + " " + (width/4) + " 0 0 0 " + margin + " " + (width/2) + " Z" + + var d = startPoint + leftLine + rightLine + arc + + return d + }, + _createPath: function() { + var pathDescription = this._createPathDescription() + var strokeWidth = this.options.weight + var stroke = this.options.color + var strokeOpacity = this.options.opacity + var fill = this.options.fillColor + var fillOpacity = this.options.fillOpacity + var className = this.options.className + "-path" + + var path = '' + + return path + }, + _createShadow: function() { + var pathDescription = this._createPathDescription() + var strokeWidth = this.options.weight + var stroke = this.options.shadowColor + var fill = this.options.shadowColor + var className = this.options.className + "-shadow" + + var origin = (this.options.iconSize.x / 2) + "px " + (this.options.iconSize.y) + "px" + var rotation = this.options.shadowAngle + var height = this.options.shadowLength + var opacity = this.options.shadowOpacity + var blur = this.options.shadowBlur + var translate = this.options.shadowTranslate.x + "px, " + this.options.shadowTranslate.y + "px" + + var blurFilter = "" + + var shadow = '' + + return blurFilter+shadow + }, + _createSVG: function() { + var path = this._createPath() + var circle = this._createCircle() + var shadow = this.options.shadowEnable ? this._createShadow() : "" + var innerCircle = this.options.circleImagePath ? this._createCircleImage() : this._createText() + var className = this.options.className + "-svg" + var width = this.options.iconSize.x + var height = this.options.iconSize.y + + if (this.options.shadowEnable) { + width += this.options.iconSize.y * this.options.shadowLength - (this.options.iconSize.x / 2) + width = Math.max(width, 32) + height += this.options.iconSize.y * this.options.shadowLength + } + + var style = "width:" + width + "px; height:" + height + + var svg = '' + shadow + path + circle + innerCircle + '' + + return svg + }, + _createText: function() { + var fontSize = this.options.fontSize + "px" + var fontWeight = this.options.fontWeight + var lineHeight = Number(this.options.fontSize) + + var x = this.options.circleAnchor.x + var y = this.options.circleAnchor.y + (lineHeight * 0.35) //35% was found experimentally + var circleText = this.options.circleText + var textColor = this.options.fontColor.replace("rgb(", "rgba(").replace(")", "," + this.options.fontOpacity + ")") + + var text = '' + circleText + '' + + return text + } +}) + +L.divIcon.svgIcon = function(options) { + return new L.DivIcon.SVGIcon(options) +} + +L.Marker.SVGMarker = L.Marker.extend({ + options: { + "iconFactory": L.divIcon.svgIcon, + "iconOptions": {} + }, + initialize: function(latlng, options) { + options = L.Util.setOptions(this, options) + options.icon = options.iconFactory(options.iconOptions) + this._latlng = latlng + }, + onAdd: function(map) { + L.Marker.prototype.onAdd.call(this, map) + }, + setStyle: function(style) { + if (this._icon) { + var svg = this._icon.children[0] + var iconBody = this._icon.children[0].children[0] + var iconCircle = this._icon.children[0].children[1] + + if (style.color && !style.iconOptions) { + var stroke = style.color.replace("rgb","rgba").replace(")", ","+this.options.icon.options.opacity+")") + var fill = style.color.replace("rgb","rgba").replace(")", ","+this.options.icon.options.fillOpacity+")") + iconBody.setAttribute("stroke", stroke) + iconBody.setAttribute("fill", fill) + iconCircle.setAttribute("stroke", stroke) + + this.options.icon.fillColor = fill + this.options.icon.color = stroke + this.options.icon.circleColor = stroke + } + if (style.opacity) { + this.setOpacity(style.opacity) + } + if (style.iconOptions) { + if (style.color) { style.iconOptions.color = style.color } + var iconOptions = L.Util.setOptions(this.options.icon, style.iconOptions) + this.setIcon(L.divIcon.svgIcon(iconOptions)) + } + } + } +}) + +L.marker.svgMarker = function(latlng, options) { + return new L.Marker.SVGMarker(latlng, options) +} diff --git a/netbox_device_map/static/netbox_device_map/leaflet-sidebar/L.Control.Sidebar.css b/netbox_device_map/static/netbox_device_map/leaflet-sidebar/L.Control.Sidebar.css new file mode 100644 index 0000000..1b8605e --- /dev/null +++ b/netbox_device_map/static/netbox_device_map/leaflet-sidebar/L.Control.Sidebar.css @@ -0,0 +1,102 @@ +.leaflet-sidebar { + position: absolute; + height: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 10px; + z-index: 2000; } + .leaflet-sidebar.left { + left: -500px; + transition: left 0.5s, width 0.5s; + padding-right: 0; } + .leaflet-sidebar.left.visible { + left: 0; } + .leaflet-sidebar.right { + right: -500px; + transition: right 0.5s, width 0.5s; + padding-left: 0; } + .leaflet-sidebar.right.visible { + right: 0; } + .leaflet-sidebar > .leaflet-control { + height: 100%; + width: 100%; + overflow: auto; + -webkit-overflow-scrolling: touch; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 8px 24px; + font-size: 1.1em; + background: white; + box-shadow: 0 1px 7px rgba(0, 0, 0, 0.65); + -webkit-border-radius: 4px; + border-radius: 4px; } + .leaflet-touch .leaflet-sidebar > .leaflet-control { + box-shadow: none; + border: 2px solid rgba(0, 0, 0, 0.2); + background-clip: padding-box; } + @media (max-width: 767px) { + .leaflet-sidebar { + width: 100%; + padding: 0; } + .leaflet-sidebar.left.visible ~ .leaflet-left { + left: 100%; } + .leaflet-sidebar.right.visible ~ .leaflet-right { + right: 100%; } + .leaflet-sidebar.left { + left: -100%; } + .leaflet-sidebar.left.visible { + left: 0; } + .leaflet-sidebar.right { + right: -100%; } + .leaflet-sidebar.right.visible { + right: 0; } + .leaflet-sidebar > .leaflet-control { + box-shadow: none; + -webkit-border-radius: 0; + border-radius: 0; } + .leaflet-touch .leaflet-sidebar > .leaflet-control { + border: 0; } } + @media (min-width: 768px) and (max-width: 991px) { + .leaflet-sidebar { + width: 305px; } + .leaflet-sidebar.left.visible ~ .leaflet-left { + left: 305px; } + .leaflet-sidebar.right.visible ~ .leaflet-right { + right: 305px; } } + @media (min-width: 992px) and (max-width: 1199px) { + .leaflet-sidebar { + width: 390px; } + .leaflet-sidebar.left.visible ~ .leaflet-left { + left: 390px; } + .leaflet-sidebar.right.visible ~ .leaflet-right { + right: 390px; } } + @media (min-width: 1200px) { + .leaflet-sidebar { + width: 460px; } + .leaflet-sidebar.left.visible ~ .leaflet-left { + left: 460px; } + .leaflet-sidebar.right.visible ~ .leaflet-right { + right: 460px; } } + .leaflet-sidebar .close { + position: absolute; + right: 20px; + top: 20px; + width: 31px; + height: 31px; + color: #333; + font-size: 25px; + line-height: 1em; + text-align: center; + background: white; + -webkit-border-radius: 16px; + border-radius: 16px; + cursor: pointer; + z-index: 1000; } + +.leaflet-left { + transition: left 0.5s; } + +.leaflet-right { + transition: right 0.5s; } diff --git a/netbox_device_map/static/netbox_device_map/leaflet-sidebar/L.Control.Sidebar.js b/netbox_device_map/static/netbox_device_map/leaflet-sidebar/L.Control.Sidebar.js new file mode 100644 index 0000000..843e324 --- /dev/null +++ b/netbox_device_map/static/netbox_device_map/leaflet-sidebar/L.Control.Sidebar.js @@ -0,0 +1,202 @@ +L.Control.Sidebar = L.Control.extend({ + + includes: L.Evented.prototype || L.Mixin.Events, + + options: { + closeButton: true, + position: 'left', + autoPan: true, + }, + + initialize: function (placeholder, options) { + L.setOptions(this, options); + + // Find content container + var content = this._contentContainer = L.DomUtil.get(placeholder); + + // Remove the content container from its original parent + if(content.parentNode != undefined){ + content.parentNode.removeChild(content); + } + var l = 'leaflet-'; + + // Create sidebar container + var container = this._container = + L.DomUtil.create('div', l + 'sidebar ' + this.options.position); + + // Style and attach content container + L.DomUtil.addClass(content, l + 'control'); + container.appendChild(content); + + // Create close button and attach it if configured + if (this.options.closeButton) { + var close = this._closeButton = + L.DomUtil.create('a', 'close', container); + close.innerHTML = '×'; + } + }, + + addTo: function (map) { + var container = this._container; + var content = this._contentContainer; + + // Attach event to close button + if (this.options.closeButton) { + var close = this._closeButton; + + L.DomEvent.on(close, 'click', this.hide, this); + } + + L.DomEvent + .on(container, 'transitionend', + this._handleTransitionEvent, this) + .on(container, 'webkitTransitionEnd', + this._handleTransitionEvent, this); + + // Attach sidebar container to controls container + var controlContainer = map._controlContainer; + controlContainer.insertBefore(container, controlContainer.firstChild); + + this._map = map; + + // Make sure we don't drag the map when we interact with the content + var stop = L.DomEvent.stopPropagation; + var fakeStop = L.DomEvent._fakeStop || stop; + L.DomEvent + .on(content, 'contextmenu', stop) + .on(content, 'click', fakeStop) + .on(content, 'mousedown', stop) + .on(content, 'touchstart', stop) + .on(content, 'dblclick', fakeStop) + .on(content, 'mousewheel', stop) + .on(content, 'wheel', stop) + .on(content, 'scroll', stop) + .on(content, 'MozMousePixelScroll', stop); + + return this; + }, + + removeFrom: function (map) { + //if the control is visible, hide it before removing it. + this.hide(); + + var container = this._container; + var content = this._contentContainer; + + // Remove sidebar container from controls container + var controlContainer = map._controlContainer; + controlContainer.removeChild(container); + + //disassociate the map object + this._map = null; + + // Unregister events to prevent memory leak + var stop = L.DomEvent.stopPropagation; + var fakeStop = L.DomEvent._fakeStop || stop; + L.DomEvent + .off(content, 'contextmenu', stop) + .off(content, 'click', fakeStop) + .off(content, 'mousedown', stop) + .off(content, 'touchstart', stop) + .off(content, 'dblclick', fakeStop) + .off(content, 'mousewheel', stop) + .off(content, 'wheel', stop) + .off(content, 'scroll', stop) + .off(content, 'MozMousePixelScroll', stop); + + L.DomEvent + .off(container, 'transitionend', + this._handleTransitionEvent, this) + .off(container, 'webkitTransitionEnd', + this._handleTransitionEvent, this); + + if (this._closeButton && this._close) { + var close = this._closeButton; + + L.DomEvent.off(close, 'click', this.hide, this); + } + + return this; + }, + + isVisible: function () { + return L.DomUtil.hasClass(this._container, 'visible'); + }, + + show: function () { + if (!this.isVisible()) { + L.DomUtil.addClass(this._container, 'visible'); + if (this.options.autoPan) { + this._map.panBy([-this.getOffset() / 2, 0], { + duration: 0.5 + }); + } + this.fire('show'); + } + }, + + hide: function (e) { + if (this.isVisible()) { + L.DomUtil.removeClass(this._container, 'visible'); + if (this.options.autoPan) { + this._map.panBy([this.getOffset() / 2, 0], { + duration: 0.5 + }); + } + this.fire('hide'); + } + if(e) { + L.DomEvent.stopPropagation(e); + } + }, + + toggle: function () { + if (this.isVisible()) { + this.hide(); + } else { + this.show(); + } + }, + + getContainer: function () { + return this._contentContainer; + }, + + getCloseButton: function () { + return this._closeButton; + }, + + setContent: function (content) { + var container = this.getContainer(); + + if (typeof content === 'string') { + container.innerHTML = content; + } else { + // clean current content + while (container.firstChild) { + container.removeChild(container.firstChild); + } + + container.appendChild(content); + } + + return this; + }, + + getOffset: function () { + if (this.options.position === 'right') { + return -this._container.offsetWidth; + } else { + return this._container.offsetWidth; + } + }, + + _handleTransitionEvent: function (e) { + if (e.propertyName == 'left' || e.propertyName == 'right') + this.fire(this.isVisible() ? 'shown' : 'hidden'); + } +}); + +L.control.sidebar = function (placeholder, options) { + return new L.Control.Sidebar(placeholder, options); +}; diff --git a/netbox_device_map/static/netbox_device_map/leaflet.fullscreen/Control.FullScreen.css b/netbox_device_map/static/netbox_device_map/leaflet.fullscreen/Control.FullScreen.css new file mode 100644 index 0000000..e07fea5 --- /dev/null +++ b/netbox_device_map/static/netbox_device_map/leaflet.fullscreen/Control.FullScreen.css @@ -0,0 +1,10 @@ +.fullscreen-icon { background-image: url(icon-fullscreen.svg); background-size:26px 52px; } +.fullscreen-icon.leaflet-fullscreen-on { background-position:0 -26px; } +.leaflet-touch .fullscreen-icon { background-position: 2px 2px; } +.leaflet-touch .fullscreen-icon.leaflet-fullscreen-on { background-position: 2px -24px; } +/* one selector per rule as explained here : http://www.sitepoint.com/html5-full-screen-api/ */ +.leaflet-container:-webkit-full-screen { width: 100% !important; height: 100% !important; z-index: 99999; } +.leaflet-container:-ms-fullscreen { width: 100% !important; height: 100% !important; z-index: 99999; } +.leaflet-container:full-screen { width: 100% !important; height: 100% !important; z-index: 99999; } +.leaflet-container:fullscreen { width: 100% !important; height: 100% !important; z-index: 99999; } +.leaflet-pseudo-fullscreen { position: fixed !important; width: 100% !important; height: 100% !important; top: 0px !important; left: 0px !important; z-index: 99999; } \ No newline at end of file diff --git a/netbox_device_map/static/netbox_device_map/leaflet.fullscreen/Control.FullScreen.js b/netbox_device_map/static/netbox_device_map/leaflet.fullscreen/Control.FullScreen.js new file mode 100644 index 0000000..95a45d0 --- /dev/null +++ b/netbox_device_map/static/netbox_device_map/leaflet.fullscreen/Control.FullScreen.js @@ -0,0 +1,341 @@ +/*! +* Based on package 'screenfull' +* v5.2.0 - 2021-11-03 +* (c) Sindre Sorhus; MIT License +* Added definition for using screenfull as an amd module +* Must be placed before the definition of leaflet.fullscreen +* as it is required by that +*/ +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + define('screenfull', factory); + } else if (typeof module === 'object' && module.exports) { + module.exports.screenfull = factory(); + } else { + // Save 'screenfull' into global window variable + root.screenfull = factory(); + } +}(typeof self !== 'undefined' ? self : this, function () { + 'use strict'; + + var document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {}; + + var fn = (function () { + var val; + + var fnMap = [ + [ + 'requestFullscreen', + 'exitFullscreen', + 'fullscreenElement', + 'fullscreenEnabled', + 'fullscreenchange', + 'fullscreenerror' + ], + // New WebKit + [ + 'webkitRequestFullscreen', + 'webkitExitFullscreen', + 'webkitFullscreenElement', + 'webkitFullscreenEnabled', + 'webkitfullscreenchange', + 'webkitfullscreenerror' + + ], + // Old WebKit + [ + 'webkitRequestFullScreen', + 'webkitCancelFullScreen', + 'webkitCurrentFullScreenElement', + 'webkitCancelFullScreen', + 'webkitfullscreenchange', + 'webkitfullscreenerror' + + ], + [ + 'mozRequestFullScreen', + 'mozCancelFullScreen', + 'mozFullScreenElement', + 'mozFullScreenEnabled', + 'mozfullscreenchange', + 'mozfullscreenerror' + ], + [ + 'msRequestFullscreen', + 'msExitFullscreen', + 'msFullscreenElement', + 'msFullscreenEnabled', + 'MSFullscreenChange', + 'MSFullscreenError' + ] + ]; + + var i = 0; + var l = fnMap.length; + var ret = {}; + + for (; i < l; i++) { + val = fnMap[i]; + if (val && val[1] in document) { + for (i = 0; i < val.length; i++) { + ret[fnMap[0][i]] = val[i]; + } + return ret; + } + } + + return false; + })(); + + var eventNameMap = { + change: fn.fullscreenchange, + error: fn.fullscreenerror + }; + + var screenfull = { + request: function (element, options) { + return new Promise(function (resolve, reject) { + var onFullScreenEntered = function () { + this.off('change', onFullScreenEntered); + resolve(); + }.bind(this); + + this.on('change', onFullScreenEntered); + + element = element || document.documentElement; + + var returnPromise = element[fn.requestFullscreen](options); + + if (returnPromise instanceof Promise) { + returnPromise.then(onFullScreenEntered).catch(reject); + } + }.bind(this)); + }, + exit: function () { + return new Promise(function (resolve, reject) { + if (!this.isFullscreen) { + resolve(); + return; + } + + var onFullScreenExit = function () { + this.off('change', onFullScreenExit); + resolve(); + }.bind(this); + + this.on('change', onFullScreenExit); + + var returnPromise = document[fn.exitFullscreen](); + + if (returnPromise instanceof Promise) { + returnPromise.then(onFullScreenExit).catch(reject); + } + }.bind(this)); + }, + toggle: function (element, options) { + return this.isFullscreen ? this.exit() : this.request(element, options); + }, + onchange: function (callback) { + this.on('change', callback); + }, + onerror: function (callback) { + this.on('error', callback); + }, + on: function (event, callback) { + var eventName = eventNameMap[event]; + if (eventName) { + document.addEventListener(eventName, callback, false); + } + }, + off: function (event, callback) { + var eventName = eventNameMap[event]; + if (eventName) { + document.removeEventListener(eventName, callback, false); + } + }, + raw: fn + }; + + if (!fn) { + return {isEnabled: false}; + } else { + Object.defineProperties(screenfull, { + isFullscreen: { + get: function () { + return Boolean(document[fn.fullscreenElement]); + } + }, + element: { + enumerable: true, + get: function () { + return document[fn.fullscreenElement]; + } + }, + isEnabled: { + enumerable: true, + get: function () { + // Coerce to boolean in case of old WebKit + return Boolean(document[fn.fullscreenEnabled]); + } + } + }); + return screenfull; + } +})); + +/*! +* leaflet.fullscreen +*/ +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // define an AMD module that requires 'leaflet' and 'screenfull' + // and resolve to an object containing leaflet and screenfull + define('leafletFullScreen', ['leaflet', 'screenfull'], factory); + } else if (typeof module === 'object' && module.exports) { + // define a CommonJS module that requires 'leaflet' and 'screenfull' + module.exports = factory(require('leaflet'), require('screenfull')); + } else { + // Assume 'leaflet' and 'screenfull' are loaded into global variable already + factory(root.L, root.screenfull); + } +}(typeof self !== 'undefined' ? self : this, function (leaflet, screenfull) { + 'use strict'; + + leaflet.Control.FullScreen = leaflet.Control.extend({ + options: { + position: 'topleft', + title: 'Full Screen', + titleCancel: 'Exit Full Screen', + forceSeparateButton: false, + forcePseudoFullscreen: false, + fullscreenElement: false + }, + + _screenfull: screenfull, + + onAdd: function (map) { + var className = 'leaflet-control-zoom-fullscreen', container, content = ''; + + if (map.zoomControl && !this.options.forceSeparateButton) { + container = map.zoomControl._container; + } else { + container = leaflet.DomUtil.create('div', 'leaflet-bar'); + } + + if (this.options.content) { + content = this.options.content; + } else { + className += ' fullscreen-icon'; + } + + this._createButton(this.options.title, className, content, container, this.toggleFullScreen, this); + this._map.fullscreenControl = this; + + this._map.on('enterFullscreen exitFullscreen', this._toggleState, this); + + return container; + }, + + onRemove: function () { + leaflet.DomEvent + .off(this.link, 'click', leaflet.DomEvent.stop) + .off(this.link, 'click', this.toggleFullScreen, this); + + leaflet.DomEvent + .off(this._container, this._screenfull.raw.fullscreenchange, leaflet.DomEvent.stop) + .off(this._container, this._screenfull.raw.fullscreenchange, this._handleFullscreenChange, this); + + leaflet.DomEvent + .off(document, this._screenfull.raw.fullscreenchange, leaflet.DomEvent.stop) + .off(document, this._screenfull.raw.fullscreenchange, this._handleFullscreenChange, this); + }, + + _createButton: function (title, className, content, container, fn, context) { + this.link = leaflet.DomUtil.create('a', className, container); + this.link.href = '#'; + this.link.title = title; + this.link.innerHTML = content; + + this.link.setAttribute('role', 'button'); + this.link.setAttribute('aria-label', title); + + L.DomEvent.disableClickPropagation(container); + + leaflet.DomEvent + .on(this.link, 'click', leaflet.DomEvent.stop) + .on(this.link, 'click', fn, context); + + leaflet.DomEvent + .on(container, this._screenfull.raw.fullscreenchange, leaflet.DomEvent.stop) + .on(container, this._screenfull.raw.fullscreenchange, this._handleFullscreenChange, context); + + leaflet.DomEvent + .on(document, this._screenfull.raw.fullscreenchange, leaflet.DomEvent.stop) + .on(document, this._screenfull.raw.fullscreenchange, this._handleFullscreenChange, context); + + return this.link; + }, + + toggleFullScreen: function () { + var map = this._map; + map._exitFired = false; + if (map._isFullscreen) { + if (this._screenfull.isEnabled && !this.options.forcePseudoFullscreen) { + this._screenfull.exit(); + } else { + leaflet.DomUtil.removeClass(this.options.fullscreenElement ? this.options.fullscreenElement : map._container, 'leaflet-pseudo-fullscreen'); + map.invalidateSize(); + } + map.fire('exitFullscreen'); + map._exitFired = true; + map._isFullscreen = false; + } + else { + if (this._screenfull.isEnabled && !this.options.forcePseudoFullscreen) { + this._screenfull.request(this.options.fullscreenElement ? this.options.fullscreenElement : map._container); + } else { + leaflet.DomUtil.addClass(this.options.fullscreenElement ? this.options.fullscreenElement : map._container, 'leaflet-pseudo-fullscreen'); + map.invalidateSize(); + } + map.fire('enterFullscreen'); + map._isFullscreen = true; + } + }, + + _toggleState: function () { + this.link.title = this._map._isFullscreen ? this.options.title : this.options.titleCancel; + this._map._isFullscreen ? L.DomUtil.removeClass(this.link, 'leaflet-fullscreen-on') : L.DomUtil.addClass(this.link, 'leaflet-fullscreen-on'); + }, + + _handleFullscreenChange: function () { + var map = this._map; + map.invalidateSize(); + if (!this._screenfull.isFullscreen && !map._exitFired) { + map.fire('exitFullscreen'); + map._exitFired = true; + map._isFullscreen = false; + } + } + }); + + leaflet.Map.include({ + toggleFullscreen: function () { + this.fullscreenControl.toggleFullScreen(); + } + }); + + leaflet.Map.addInitHook(function () { + if (this.options.fullscreenControl) { + this.addControl(leaflet.control.fullscreen(this.options.fullscreenControlOptions)); + } + }); + + leaflet.control.fullscreen = function (options) { + return new leaflet.Control.FullScreen(options); + }; + + // must return an object containing also screenfull to make screenfull + // available outside of this package, if used as an amd module, + // as webpack cannot handle amd define with moduleid + return {leaflet: leaflet, screenfull: screenfull}; +})); diff --git a/netbox_device_map/static/netbox_device_map/leaflet.fullscreen/icon-fullscreen.svg b/netbox_device_map/static/netbox_device_map/leaflet.fullscreen/icon-fullscreen.svg new file mode 100644 index 0000000..6107d8c --- /dev/null +++ b/netbox_device_map/static/netbox_device_map/leaflet.fullscreen/icon-fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/netbox_device_map/static/netbox_device_map/leaflet.markercluster/MarkerCluster.Default.css b/netbox_device_map/static/netbox_device_map/leaflet.markercluster/MarkerCluster.Default.css new file mode 100644 index 0000000..bbc8c9f --- /dev/null +++ b/netbox_device_map/static/netbox_device_map/leaflet.markercluster/MarkerCluster.Default.css @@ -0,0 +1,60 @@ +.marker-cluster-small { + background-color: rgba(181, 226, 140, 0.6); + } +.marker-cluster-small div { + background-color: rgba(110, 204, 57, 0.6); + } + +.marker-cluster-medium { + background-color: rgba(241, 211, 87, 0.6); + } +.marker-cluster-medium div { + background-color: rgba(240, 194, 12, 0.6); + } + +.marker-cluster-large { + background-color: rgba(253, 156, 115, 0.6); + } +.marker-cluster-large div { + background-color: rgba(241, 128, 23, 0.6); + } + + /* IE 6-8 fallback colors */ +.leaflet-oldie .marker-cluster-small { + background-color: rgb(181, 226, 140); + } +.leaflet-oldie .marker-cluster-small div { + background-color: rgb(110, 204, 57); + } + +.leaflet-oldie .marker-cluster-medium { + background-color: rgb(241, 211, 87); + } +.leaflet-oldie .marker-cluster-medium div { + background-color: rgb(240, 194, 12); + } + +.leaflet-oldie .marker-cluster-large { + background-color: rgb(253, 156, 115); + } +.leaflet-oldie .marker-cluster-large div { + background-color: rgb(241, 128, 23); +} + +.marker-cluster { + background-clip: padding-box; + border-radius: 20px; + } +.marker-cluster div { + width: 30px; + height: 30px; + margin-left: 5px; + margin-top: 5px; + + text-align: center; + border-radius: 15px; + font: 12px "Helvetica Neue", Arial, Helvetica, sans-serif; + } +.marker-cluster span { + line-height: 30px; + } \ No newline at end of file diff --git a/netbox_device_map/static/netbox_device_map/leaflet.markercluster/MarkerCluster.css b/netbox_device_map/static/netbox_device_map/leaflet.markercluster/MarkerCluster.css new file mode 100644 index 0000000..c60d71b --- /dev/null +++ b/netbox_device_map/static/netbox_device_map/leaflet.markercluster/MarkerCluster.css @@ -0,0 +1,14 @@ +.leaflet-cluster-anim .leaflet-marker-icon, .leaflet-cluster-anim .leaflet-marker-shadow { + -webkit-transition: -webkit-transform 0.3s ease-out, opacity 0.3s ease-in; + -moz-transition: -moz-transform 0.3s ease-out, opacity 0.3s ease-in; + -o-transition: -o-transform 0.3s ease-out, opacity 0.3s ease-in; + transition: transform 0.3s ease-out, opacity 0.3s ease-in; +} + +.leaflet-cluster-spider-leg { + /* stroke-dashoffset (duration and function) should match with leaflet-marker-icon transform in order to track it exactly */ + -webkit-transition: -webkit-stroke-dashoffset 0.3s ease-out, -webkit-stroke-opacity 0.3s ease-in; + -moz-transition: -moz-stroke-dashoffset 0.3s ease-out, -moz-stroke-opacity 0.3s ease-in; + -o-transition: -o-stroke-dashoffset 0.3s ease-out, -o-stroke-opacity 0.3s ease-in; + transition: stroke-dashoffset 0.3s ease-out, stroke-opacity 0.3s ease-in; +} diff --git a/netbox_device_map/static/netbox_device_map/leaflet.markercluster/leaflet.markercluster-src.js b/netbox_device_map/static/netbox_device_map/leaflet.markercluster/leaflet.markercluster-src.js new file mode 100644 index 0000000..93a5b90 --- /dev/null +++ b/netbox_device_map/static/netbox_device_map/leaflet.markercluster/leaflet.markercluster-src.js @@ -0,0 +1,2718 @@ +/* + * Leaflet.markercluster 1.5.3+master.e5124b2, + * Provides Beautiful Animated Marker Clustering functionality for Leaflet, a JS library for interactive maps. + * https://github.com/Leaflet/Leaflet.markercluster + * (c) 2012-2017, Dave Leaver, smartrak + */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = global || self, factory((global.Leaflet = global.Leaflet || {}, global.Leaflet.markercluster = {}))); +}(this, function (exports) { 'use strict'; + + /* + * L.MarkerClusterGroup extends L.FeatureGroup by clustering the markers contained within + */ + + var MarkerClusterGroup = L.MarkerClusterGroup = L.FeatureGroup.extend({ + + options: { + maxClusterRadius: 80, //A cluster will cover at most this many pixels from its center + iconCreateFunction: null, + clusterPane: L.Marker.prototype.options.pane, + + spiderfyOnEveryZoom: false, + spiderfyOnMaxZoom: true, + showCoverageOnHover: true, + zoomToBoundsOnClick: true, + singleMarkerMode: false, + + disableClusteringAtZoom: null, + + // Setting this to false prevents the removal of any clusters outside of the viewpoint, which + // is the default behaviour for performance reasons. + removeOutsideVisibleBounds: true, + + // Set to false to disable all animations (zoom and spiderfy). + // If false, option animateAddingMarkers below has no effect. + // If L.DomUtil.TRANSITION is falsy, this option has no effect. + animate: true, + + //Whether to animate adding markers after adding the MarkerClusterGroup to the map + // If you are adding individual markers set to true, if adding bulk markers leave false for massive performance gains. + animateAddingMarkers: false, + + // Make it possible to provide custom function to calculate spiderfy shape positions + spiderfyShapePositions: null, + + //Increase to increase the distance away that spiderfied markers appear from the center + spiderfyDistanceMultiplier: 1, + + // Make it possible to specify a polyline options on a spider leg + spiderLegPolylineOptions: { weight: 1.5, color: '#222', opacity: 0.5 }, + + // When bulk adding layers, adds markers in chunks. Means addLayers may not add all the layers in the call, others will be loaded during setTimeouts + chunkedLoading: false, + chunkInterval: 200, // process markers for a maximum of ~ n milliseconds (then trigger the chunkProgress callback) + chunkDelay: 50, // at the end of each interval, give n milliseconds back to system/browser + chunkProgress: null, // progress callback: function(processed, total, elapsed) (e.g. for a progress indicator) + + //Options to pass to the L.Polygon constructor + polygonOptions: {} + }, + + initialize: function (options) { + L.Util.setOptions(this, options); + if (!this.options.iconCreateFunction) { + this.options.iconCreateFunction = this._defaultIconCreateFunction; + } + + this._featureGroup = L.featureGroup(); + this._featureGroup.addEventParent(this); + + this._nonPointGroup = L.featureGroup(); + this._nonPointGroup.addEventParent(this); + + this._inZoomAnimation = 0; + this._needsClustering = []; + this._needsRemoving = []; //Markers removed while we aren't on the map need to be kept track of + //The bounds of the currently shown area (from _getExpandedVisibleBounds) Updated on zoom/move + this._currentShownBounds = null; + + this._queue = []; + + this._childMarkerEventHandlers = { + 'dragstart': this._childMarkerDragStart, + 'move': this._childMarkerMoved, + 'dragend': this._childMarkerDragEnd, + }; + + // Hook the appropriate animation methods. + var animate = L.DomUtil.TRANSITION && this.options.animate; + L.extend(this, animate ? this._withAnimation : this._noAnimation); + // Remember which MarkerCluster class to instantiate (animated or not). + this._markerCluster = animate ? L.MarkerCluster : L.MarkerClusterNonAnimated; + }, + + addLayer: function (layer) { + + if (layer instanceof L.LayerGroup) { + return this.addLayers([layer]); + } + + //Don't cluster non point data + if (!layer.getLatLng) { + this._nonPointGroup.addLayer(layer); + this.fire('layeradd', { layer: layer }); + return this; + } + + if (!this._map) { + this._needsClustering.push(layer); + this.fire('layeradd', { layer: layer }); + return this; + } + + if (this.hasLayer(layer)) { + return this; + } + + + //If we have already clustered we'll need to add this one to a cluster + + if (this._unspiderfy) { + this._unspiderfy(); + } + + this._addLayer(layer, this._maxZoom); + this.fire('layeradd', { layer: layer }); + + // Refresh bounds and weighted positions. + this._topClusterLevel._recalculateBounds(); + + this._refreshClustersIcons(); + + //Work out what is visible + var visibleLayer = layer, + currentZoom = this._zoom; + if (layer.__parent) { + while (visibleLayer.__parent._zoom >= currentZoom) { + visibleLayer = visibleLayer.__parent; + } + } + + if (this._currentShownBounds.contains(visibleLayer.getLatLng())) { + if (this.options.animateAddingMarkers) { + this._animationAddLayer(layer, visibleLayer); + } else { + this._animationAddLayerNonAnimated(layer, visibleLayer); + } + } + return this; + }, + + removeLayer: function (layer) { + + if (layer instanceof L.LayerGroup) { + return this.removeLayers([layer]); + } + + //Non point layers + if (!layer.getLatLng) { + this._nonPointGroup.removeLayer(layer); + this.fire('layerremove', { layer: layer }); + return this; + } + + if (!this._map) { + if (!this._arraySplice(this._needsClustering, layer) && this.hasLayer(layer)) { + this._needsRemoving.push({ layer: layer, latlng: layer._latlng }); + } + this.fire('layerremove', { layer: layer }); + return this; + } + + if (!layer.__parent) { + return this; + } + + if (this._unspiderfy) { + this._unspiderfy(); + this._unspiderfyLayer(layer); + } + + //Remove the marker from clusters + this._removeLayer(layer, true); + this.fire('layerremove', { layer: layer }); + + // Refresh bounds and weighted positions. + this._topClusterLevel._recalculateBounds(); + + this._refreshClustersIcons(); + + layer.off(this._childMarkerEventHandlers, this); + + if (this._featureGroup.hasLayer(layer)) { + this._featureGroup.removeLayer(layer); + if (layer.clusterShow) { + layer.clusterShow(); + } + } + + return this; + }, + + //Takes an array of markers and adds them in bulk + addLayers: function (layersArray, skipLayerAddEvent) { + if (!L.Util.isArray(layersArray)) { + return this.addLayer(layersArray); + } + + var fg = this._featureGroup, + npg = this._nonPointGroup, + chunked = this.options.chunkedLoading, + chunkInterval = this.options.chunkInterval, + chunkProgress = this.options.chunkProgress, + l = layersArray.length, + offset = 0, + originalArray = true, + m; + + if (this._map) { + var started = (new Date()).getTime(); + var process = L.bind(function () { + var start = (new Date()).getTime(); + + // Make sure to unspiderfy before starting to add some layers + if (this._map && this._unspiderfy) { + this._unspiderfy(); + } + + for (; offset < l; offset++) { + if (chunked && offset % 200 === 0) { + // every couple hundred markers, instrument the time elapsed since processing started: + var elapsed = (new Date()).getTime() - start; + if (elapsed > chunkInterval) { + break; // been working too hard, time to take a break :-) + } + } + + m = layersArray[offset]; + + // Group of layers, append children to layersArray and skip. + // Side effects: + // - Total increases, so chunkProgress ratio jumps backward. + // - Groups are not included in this group, only their non-group child layers (hasLayer). + // Changing array length while looping does not affect performance in current browsers: + // http://jsperf.com/for-loop-changing-length/6 + if (m instanceof L.LayerGroup) { + if (originalArray) { + layersArray = layersArray.slice(); + originalArray = false; + } + this._extractNonGroupLayers(m, layersArray); + l = layersArray.length; + continue; + } + + //Not point data, can't be clustered + if (!m.getLatLng) { + npg.addLayer(m); + if (!skipLayerAddEvent) { + this.fire('layeradd', { layer: m }); + } + continue; + } + + if (this.hasLayer(m)) { + continue; + } + + this._addLayer(m, this._maxZoom); + if (!skipLayerAddEvent) { + this.fire('layeradd', { layer: m }); + } + + //If we just made a cluster of size 2 then we need to remove the other marker from the map (if it is) or we never will + if (m.__parent) { + if (m.__parent.getChildCount() === 2) { + var markers = m.__parent.getAllChildMarkers(), + otherMarker = markers[0] === m ? markers[1] : markers[0]; + fg.removeLayer(otherMarker); + } + } + } + + if (chunkProgress) { + // report progress and time elapsed: + chunkProgress(offset, l, (new Date()).getTime() - started); + } + + // Completed processing all markers. + if (offset === l) { + + // Refresh bounds and weighted positions. + this._topClusterLevel._recalculateBounds(); + + this._refreshClustersIcons(); + + this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds); + } else { + setTimeout(process, this.options.chunkDelay); + } + }, this); + + process(); + } else { + var needsClustering = this._needsClustering; + + for (; offset < l; offset++) { + m = layersArray[offset]; + + // Group of layers, append children to layersArray and skip. + if (m instanceof L.LayerGroup) { + if (originalArray) { + layersArray = layersArray.slice(); + originalArray = false; + } + this._extractNonGroupLayers(m, layersArray); + l = layersArray.length; + continue; + } + + //Not point data, can't be clustered + if (!m.getLatLng) { + npg.addLayer(m); + continue; + } + + if (this.hasLayer(m)) { + continue; + } + + needsClustering.push(m); + } + } + return this; + }, + + //Takes an array of markers and removes them in bulk + removeLayers: function (layersArray) { + var i, m, + l = layersArray.length, + fg = this._featureGroup, + npg = this._nonPointGroup, + originalArray = true; + + if (!this._map) { + for (i = 0; i < l; i++) { + m = layersArray[i]; + + // Group of layers, append children to layersArray and skip. + if (m instanceof L.LayerGroup) { + if (originalArray) { + layersArray = layersArray.slice(); + originalArray = false; + } + this._extractNonGroupLayers(m, layersArray); + l = layersArray.length; + continue; + } + + this._arraySplice(this._needsClustering, m); + npg.removeLayer(m); + if (this.hasLayer(m)) { + this._needsRemoving.push({ layer: m, latlng: m._latlng }); + } + this.fire('layerremove', { layer: m }); + } + return this; + } + + if (this._unspiderfy) { + this._unspiderfy(); + + // Work on a copy of the array, so that next loop is not affected. + var layersArray2 = layersArray.slice(), + l2 = l; + for (i = 0; i < l2; i++) { + m = layersArray2[i]; + + // Group of layers, append children to layersArray and skip. + if (m instanceof L.LayerGroup) { + this._extractNonGroupLayers(m, layersArray2); + l2 = layersArray2.length; + continue; + } + + this._unspiderfyLayer(m); + } + } + + for (i = 0; i < l; i++) { + m = layersArray[i]; + + // Group of layers, append children to layersArray and skip. + if (m instanceof L.LayerGroup) { + if (originalArray) { + layersArray = layersArray.slice(); + originalArray = false; + } + this._extractNonGroupLayers(m, layersArray); + l = layersArray.length; + continue; + } + + if (!m.__parent) { + npg.removeLayer(m); + this.fire('layerremove', { layer: m }); + continue; + } + + this._removeLayer(m, true, true); + this.fire('layerremove', { layer: m }); + + if (fg.hasLayer(m)) { + fg.removeLayer(m); + if (m.clusterShow) { + m.clusterShow(); + } + } + } + + // Refresh bounds and weighted positions. + this._topClusterLevel._recalculateBounds(); + + this._refreshClustersIcons(); + + //Fix up the clusters and markers on the map + this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds); + + return this; + }, + + //Removes all layers from the MarkerClusterGroup + clearLayers: function () { + //Need our own special implementation as the LayerGroup one doesn't work for us + + //If we aren't on the map (yet), blow away the markers we know of + if (!this._map) { + this._needsClustering = []; + this._needsRemoving = []; + delete this._gridClusters; + delete this._gridUnclustered; + } + + if (this._noanimationUnspiderfy) { + this._noanimationUnspiderfy(); + } + + //Remove all the visible layers + this._featureGroup.clearLayers(); + this._nonPointGroup.clearLayers(); + + this.eachLayer(function (marker) { + marker.off(this._childMarkerEventHandlers, this); + delete marker.__parent; + }, this); + + if (this._map) { + //Reset _topClusterLevel and the DistanceGrids + this._generateInitialClusters(); + } + + return this; + }, + + //Override FeatureGroup.getBounds as it doesn't work + getBounds: function () { + var bounds = new L.LatLngBounds(); + + if (this._topClusterLevel) { + bounds.extend(this._topClusterLevel._bounds); + } + + for (var i = this._needsClustering.length - 1; i >= 0; i--) { + bounds.extend(this._needsClustering[i].getLatLng()); + } + + bounds.extend(this._nonPointGroup.getBounds()); + + return bounds; + }, + + //Overrides LayerGroup.eachLayer + eachLayer: function (method, context) { + var markers = this._needsClustering.slice(), + needsRemoving = this._needsRemoving, + thisNeedsRemoving, i, j; + + if (this._topClusterLevel) { + this._topClusterLevel.getAllChildMarkers(markers); + } + + for (i = markers.length - 1; i >= 0; i--) { + thisNeedsRemoving = true; + + for (j = needsRemoving.length - 1; j >= 0; j--) { + if (needsRemoving[j].layer === markers[i]) { + thisNeedsRemoving = false; + break; + } + } + + if (thisNeedsRemoving) { + method.call(context, markers[i]); + } + } + + this._nonPointGroup.eachLayer(method, context); + }, + + //Overrides LayerGroup.getLayers + getLayers: function () { + var layers = []; + this.eachLayer(function (l) { + layers.push(l); + }); + return layers; + }, + + //Overrides LayerGroup.getLayer, WARNING: Really bad performance + getLayer: function (id) { + var result = null; + + id = parseInt(id, 10); + + this.eachLayer(function (l) { + if (L.stamp(l) === id) { + result = l; + } + }); + + return result; + }, + + //Returns true if the given layer is in this MarkerClusterGroup + hasLayer: function (layer) { + if (!layer) { + return false; + } + + var i, anArray = this._needsClustering; + + for (i = anArray.length - 1; i >= 0; i--) { + if (anArray[i] === layer) { + return true; + } + } + + anArray = this._needsRemoving; + for (i = anArray.length - 1; i >= 0; i--) { + if (anArray[i].layer === layer) { + return false; + } + } + + return !!(layer.__parent && layer.__parent._group === this) || this._nonPointGroup.hasLayer(layer); + }, + + //Zoom down to show the given layer (spiderfying if necessary) then calls the callback + zoomToShowLayer: function (layer, callback) { + + var map = this._map; + + if (typeof callback !== 'function') { + callback = function () {}; + } + + var showMarker = function () { + // Assumes that map.hasLayer checks for direct appearance on map, not recursively calling + // hasLayer on Layer Groups that are on map (typically not calling this MarkerClusterGroup.hasLayer, which would always return true) + if ((map.hasLayer(layer) || map.hasLayer(layer.__parent)) && !this._inZoomAnimation) { + this._map.off('moveend', showMarker, this); + this.off('animationend', showMarker, this); + + if (map.hasLayer(layer)) { + callback(); + } else if (layer.__parent._icon) { + this.once('spiderfied', callback, this); + layer.__parent.spiderfy(); + } + } + }; + + if (layer._icon && this._map.getBounds().contains(layer.getLatLng())) { + //Layer is visible ond on screen, immediate return + callback(); + } else if (layer.__parent._zoom < Math.round(this._map._zoom)) { + //Layer should be visible at this zoom level. It must not be on screen so just pan over to it + this._map.on('moveend', showMarker, this); + this._map.panTo(layer.getLatLng()); + } else { + this._map.on('moveend', showMarker, this); + this.on('animationend', showMarker, this); + layer.__parent.zoomToBounds(); + } + }, + + //Overrides FeatureGroup.onAdd + onAdd: function (map) { + this._map = map; + var i, l, layer; + + if (!isFinite(this._map.getMaxZoom())) { + throw "Map has no maxZoom specified"; + } + + this._featureGroup.addTo(map); + this._nonPointGroup.addTo(map); + + if (!this._gridClusters) { + this._generateInitialClusters(); + } + + this._maxLat = map.options.crs.projection.MAX_LATITUDE; + + //Restore all the positions as they are in the MCG before removing them + for (i = 0, l = this._needsRemoving.length; i < l; i++) { + layer = this._needsRemoving[i]; + layer.newlatlng = layer.layer._latlng; + layer.layer._latlng = layer.latlng; + } + //Remove them, then restore their new positions + for (i = 0, l = this._needsRemoving.length; i < l; i++) { + layer = this._needsRemoving[i]; + this._removeLayer(layer.layer, true); + layer.layer._latlng = layer.newlatlng; + } + this._needsRemoving = []; + + //Remember the current zoom level and bounds + this._zoom = Math.round(this._map._zoom); + this._currentShownBounds = this._getExpandedVisibleBounds(); + + this._map.on('zoomend', this._zoomEnd, this); + this._map.on('moveend', this._moveEnd, this); + + if (this._spiderfierOnAdd) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely + this._spiderfierOnAdd(); + } + + this._bindEvents(); + + //Actually add our markers to the map: + l = this._needsClustering; + this._needsClustering = []; + this.addLayers(l, true); + }, + + //Overrides FeatureGroup.onRemove + onRemove: function (map) { + map.off('zoomend', this._zoomEnd, this); + map.off('moveend', this._moveEnd, this); + + this._unbindEvents(); + + //In case we are in a cluster animation + this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', ''); + + if (this._spiderfierOnRemove) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely + this._spiderfierOnRemove(); + } + + delete this._maxLat; + + //Clean up all the layers we added to the map + this._hideCoverage(); + this._featureGroup.remove(); + this._nonPointGroup.remove(); + + this._featureGroup.clearLayers(); + + this._map = null; + }, + + getVisibleParent: function (marker) { + var vMarker = marker; + while (vMarker && !vMarker._icon) { + vMarker = vMarker.__parent; + } + return vMarker || null; + }, + + //Remove the given object from the given array + _arraySplice: function (anArray, obj) { + for (var i = anArray.length - 1; i >= 0; i--) { + if (anArray[i] === obj) { + anArray.splice(i, 1); + return true; + } + } + }, + + /** + * Removes a marker from all _gridUnclustered zoom levels, starting at the supplied zoom. + * @param marker to be removed from _gridUnclustered. + * @param z integer bottom start zoom level (included) + * @private + */ + _removeFromGridUnclustered: function (marker, z) { + var map = this._map, + gridUnclustered = this._gridUnclustered, + minZoom = Math.floor(this._map.getMinZoom()); + + for (; z >= minZoom; z--) { + if (!gridUnclustered[z].removeObject(marker, map.project(marker.getLatLng(), z))) { + break; + } + } + }, + + _childMarkerDragStart: function (e) { + e.target.__dragStart = e.target._latlng; + }, + + _childMarkerMoved: function (e) { + if (!this._ignoreMove && !e.target.__dragStart) { + var isPopupOpen = e.target._popup && e.target._popup.isOpen(); + + this._moveChild(e.target, e.oldLatLng, e.latlng); + + if (isPopupOpen) { + e.target.openPopup(); + } + } + }, + + _moveChild: function (layer, from, to) { + layer._latlng = from; + this.removeLayer(layer); + + layer._latlng = to; + this.addLayer(layer); + }, + + _childMarkerDragEnd: function (e) { + var dragStart = e.target.__dragStart; + delete e.target.__dragStart; + if (dragStart) { + this._moveChild(e.target, dragStart, e.target._latlng); + } + }, + + + //Internal function for removing a marker from everything. + //dontUpdateMap: set to true if you will handle updating the map manually (for bulk functions) + _removeLayer: function (marker, removeFromDistanceGrid, dontUpdateMap) { + var gridClusters = this._gridClusters, + gridUnclustered = this._gridUnclustered, + fg = this._featureGroup, + map = this._map, + minZoom = Math.floor(this._map.getMinZoom()); + + //Remove the marker from distance clusters it might be in + if (removeFromDistanceGrid) { + this._removeFromGridUnclustered(marker, this._maxZoom); + } + + //Work our way up the clusters removing them as we go if required + var cluster = marker.__parent, + markers = cluster._markers, + otherMarker; + + //Remove the marker from the immediate parents marker list + this._arraySplice(markers, marker); + + while (cluster) { + cluster._childCount--; + cluster._boundsNeedUpdate = true; + + if (cluster._zoom < minZoom) { + //Top level, do nothing + break; + } else if (removeFromDistanceGrid && cluster._childCount <= 1) { //Cluster no longer required + //We need to push the other marker up to the parent + otherMarker = cluster._markers[0] === marker ? cluster._markers[1] : cluster._markers[0]; + + //Update distance grid + gridClusters[cluster._zoom].removeObject(cluster, map.project(cluster._cLatLng, cluster._zoom)); + gridUnclustered[cluster._zoom].addObject(otherMarker, map.project(otherMarker.getLatLng(), cluster._zoom)); + + //Move otherMarker up to parent + this._arraySplice(cluster.__parent._childClusters, cluster); + cluster.__parent._markers.push(otherMarker); + otherMarker.__parent = cluster.__parent; + + if (cluster._icon) { + //Cluster is currently on the map, need to put the marker on the map instead + fg.removeLayer(cluster); + if (!dontUpdateMap) { + fg.addLayer(otherMarker); + } + } + } else { + cluster._iconNeedsUpdate = true; + } + + cluster = cluster.__parent; + } + + delete marker.__parent; + }, + + _isOrIsParent: function (el, oel) { + while (oel) { + if (el === oel) { + return true; + } + oel = oel.parentNode; + } + return false; + }, + + //Override L.Evented.fire + fire: function (type, data, propagate) { + if (data && data.layer instanceof L.MarkerCluster) { + //Prevent multiple clustermouseover/off events if the icon is made up of stacked divs (Doesn't work in ie <= 8, no relatedTarget) + if (data.originalEvent && this._isOrIsParent(data.layer._icon, data.originalEvent.relatedTarget)) { + return; + } + type = 'cluster' + type; + } + + L.FeatureGroup.prototype.fire.call(this, type, data, propagate); + }, + + //Override L.Evented.listens + listens: function (type, propagate) { + return L.FeatureGroup.prototype.listens.call(this, type, propagate) || L.FeatureGroup.prototype.listens.call(this, 'cluster' + type, propagate); + }, + + //Default functionality + _defaultIconCreateFunction: function (cluster) { + var childCount = cluster.getChildCount(); + + var c = ' marker-cluster-'; + if (childCount < 10) { + c += 'small'; + } else if (childCount < 100) { + c += 'medium'; + } else { + c += 'large'; + } + + return new L.DivIcon({ html: '
' + childCount + '
', className: 'marker-cluster' + c, iconSize: new L.Point(40, 40) }); + }, + + _bindEvents: function () { + var map = this._map, + spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom, + showCoverageOnHover = this.options.showCoverageOnHover, + zoomToBoundsOnClick = this.options.zoomToBoundsOnClick, + spiderfyOnEveryZoom = this.options.spiderfyOnEveryZoom; + + //Zoom on cluster click or spiderfy if we are at the lowest level + if (spiderfyOnMaxZoom || zoomToBoundsOnClick || spiderfyOnEveryZoom) { + this.on('clusterclick clusterkeypress', this._zoomOrSpiderfy, this); + } + + //Show convex hull (boundary) polygon on mouse over + if (showCoverageOnHover) { + this.on('clustermouseover', this._showCoverage, this); + this.on('clustermouseout', this._hideCoverage, this); + map.on('zoomend', this._hideCoverage, this); + } + }, + + _zoomOrSpiderfy: function (e) { + var cluster = e.layer, + bottomCluster = cluster; + + if (e.type === 'clusterkeypress' && e.originalEvent && e.originalEvent.keyCode !== 13) { + return; + } + + while (bottomCluster._childClusters.length === 1) { + bottomCluster = bottomCluster._childClusters[0]; + } + + if (bottomCluster._zoom === this._maxZoom && + bottomCluster._childCount === cluster._childCount && + this.options.spiderfyOnMaxZoom) { + + // All child markers are contained in a single cluster from this._maxZoom to this cluster. + cluster.spiderfy(); + } else if (this.options.zoomToBoundsOnClick) { + cluster.zoomToBounds(); + } + + if (this.options.spiderfyOnEveryZoom) { + cluster.spiderfy(); + } + + // Focus the map again for keyboard users. + if (e.originalEvent && e.originalEvent.keyCode === 13) { + this._map._container.focus(); + } + }, + + _showCoverage: function (e) { + var map = this._map; + if (this._inZoomAnimation) { + return; + } + if (this._shownPolygon) { + map.removeLayer(this._shownPolygon); + } + if (e.layer.getChildCount() > 2 && e.layer !== this._spiderfied) { + this._shownPolygon = new L.Polygon(e.layer.getConvexHull(), this.options.polygonOptions); + map.addLayer(this._shownPolygon); + } + }, + + _hideCoverage: function () { + if (this._shownPolygon) { + this._map.removeLayer(this._shownPolygon); + this._shownPolygon = null; + } + }, + + _unbindEvents: function () { + var spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom, + showCoverageOnHover = this.options.showCoverageOnHover, + zoomToBoundsOnClick = this.options.zoomToBoundsOnClick, + spiderfyOnEveryZoom = this.options.spiderfyOnEveryZoom, + map = this._map; + + if (spiderfyOnMaxZoom || zoomToBoundsOnClick || spiderfyOnEveryZoom) { + this.off('clusterclick clusterkeypress', this._zoomOrSpiderfy, this); + } + if (showCoverageOnHover) { + this.off('clustermouseover', this._showCoverage, this); + this.off('clustermouseout', this._hideCoverage, this); + map.off('zoomend', this._hideCoverage, this); + } + }, + + _zoomEnd: function () { + if (!this._map) { //May have been removed from the map by a zoomEnd handler + return; + } + this._mergeSplitClusters(); + + this._zoom = Math.round(this._map._zoom); + this._currentShownBounds = this._getExpandedVisibleBounds(); + }, + + _moveEnd: function () { + if (this._inZoomAnimation) { + return; + } + + var newBounds = this._getExpandedVisibleBounds(); + + this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, newBounds); + this._topClusterLevel._recursivelyAddChildrenToMap(null, Math.round(this._map._zoom), newBounds); + + this._currentShownBounds = newBounds; + return; + }, + + _generateInitialClusters: function () { + var maxZoom = Math.ceil(this._map.getMaxZoom()), + minZoom = Math.floor(this._map.getMinZoom()), + radius = this.options.maxClusterRadius, + radiusFn = radius; + + //If we just set maxClusterRadius to a single number, we need to create + //a simple function to return that number. Otherwise, we just have to + //use the function we've passed in. + if (typeof radius !== "function") { + radiusFn = function () { return radius; }; + } + + if (this.options.disableClusteringAtZoom !== null) { + maxZoom = this.options.disableClusteringAtZoom - 1; + } + this._maxZoom = maxZoom; + this._gridClusters = {}; + this._gridUnclustered = {}; + + //Set up DistanceGrids for each zoom + for (var zoom = maxZoom; zoom >= minZoom; zoom--) { + this._gridClusters[zoom] = new L.DistanceGrid(radiusFn(zoom)); + this._gridUnclustered[zoom] = new L.DistanceGrid(radiusFn(zoom)); + } + + // Instantiate the appropriate L.MarkerCluster class (animated or not). + this._topClusterLevel = new this._markerCluster(this, minZoom - 1); + }, + + //Zoom: Zoom to start adding at (Pass this._maxZoom to start at the bottom) + _addLayer: function (layer, zoom) { + var gridClusters = this._gridClusters, + gridUnclustered = this._gridUnclustered, + minZoom = Math.floor(this._map.getMinZoom()), + markerPoint, z; + + if (this.options.singleMarkerMode) { + this._overrideMarkerIcon(layer); + } + + layer.on(this._childMarkerEventHandlers, this); + + //Find the lowest zoom level to slot this one in + for (; zoom >= minZoom; zoom--) { + markerPoint = this._map.project(layer.getLatLng(), zoom); // calculate pixel position + + //Try find a cluster close by + var closest = gridClusters[zoom].getNearObject(markerPoint); + if (closest) { + closest._addChild(layer); + layer.__parent = closest; + return; + } + + //Try find a marker close by to form a new cluster with + closest = gridUnclustered[zoom].getNearObject(markerPoint); + if (closest) { + var parent = closest.__parent; + if (parent) { + this._removeLayer(closest, false); + } + + //Create new cluster with these 2 in it + + var newCluster = new this._markerCluster(this, zoom, closest, layer); + gridClusters[zoom].addObject(newCluster, this._map.project(newCluster._cLatLng, zoom)); + closest.__parent = newCluster; + layer.__parent = newCluster; + + //First create any new intermediate parent clusters that don't exist + var lastParent = newCluster; + for (z = zoom - 1; z > parent._zoom; z--) { + lastParent = new this._markerCluster(this, z, lastParent); + gridClusters[z].addObject(lastParent, this._map.project(closest.getLatLng(), z)); + } + parent._addChild(lastParent); + + //Remove closest from this zoom level and any above that it is in, replace with newCluster + this._removeFromGridUnclustered(closest, zoom); + + return; + } + + //Didn't manage to cluster in at this zoom, record us as a marker here and continue upwards + gridUnclustered[zoom].addObject(layer, markerPoint); + } + + //Didn't get in anything, add us to the top + this._topClusterLevel._addChild(layer); + layer.__parent = this._topClusterLevel; + return; + }, + + /** + * Refreshes the icon of all "dirty" visible clusters. + * Non-visible "dirty" clusters will be updated when they are added to the map. + * @private + */ + _refreshClustersIcons: function () { + this._featureGroup.eachLayer(function (c) { + if (c instanceof L.MarkerCluster && c._iconNeedsUpdate) { + c._updateIcon(); + } + }); + }, + + //Enqueue code to fire after the marker expand/contract has happened + _enqueue: function (fn) { + this._queue.push(fn); + if (!this._queueTimeout) { + this._queueTimeout = setTimeout(L.bind(this._processQueue, this), 300); + } + }, + _processQueue: function () { + for (var i = 0; i < this._queue.length; i++) { + this._queue[i].call(this); + } + this._queue.length = 0; + clearTimeout(this._queueTimeout); + this._queueTimeout = null; + }, + + //Merge and split any existing clusters that are too big or small + _mergeSplitClusters: function () { + var mapZoom = Math.round(this._map._zoom); + + //In case we are starting to split before the animation finished + this._processQueue(); + + if (this._zoom < mapZoom && this._currentShownBounds.intersects(this._getExpandedVisibleBounds())) { //Zoom in, split + this._animationStart(); + //Remove clusters now off screen + this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, this._getExpandedVisibleBounds()); + + this._animationZoomIn(this._zoom, mapZoom); + + } else if (this._zoom > mapZoom) { //Zoom out, merge + this._animationStart(); + + this._animationZoomOut(this._zoom, mapZoom); + } else { + this._moveEnd(); + } + }, + + //Gets the maps visible bounds expanded in each direction by the size of the screen (so the user cannot see an area we do not cover in one pan) + _getExpandedVisibleBounds: function () { + if (!this.options.removeOutsideVisibleBounds) { + return this._mapBoundsInfinite; + } else if (L.Browser.mobile) { + return this._checkBoundsMaxLat(this._map.getBounds()); + } + + return this._checkBoundsMaxLat(this._map.getBounds().pad(1)); // Padding expands the bounds by its own dimensions but scaled with the given factor. + }, + + /** + * Expands the latitude to Infinity (or -Infinity) if the input bounds reach the map projection maximum defined latitude + * (in the case of Web/Spherical Mercator, it is 85.0511287798 / see https://en.wikipedia.org/wiki/Web_Mercator#Formulas). + * Otherwise, the removeOutsideVisibleBounds option will remove markers beyond that limit, whereas the same markers without + * this option (or outside MCG) will have their position floored (ceiled) by the projection and rendered at that limit, + * making the user think that MCG "eats" them and never displays them again. + * @param bounds L.LatLngBounds + * @returns {L.LatLngBounds} + * @private + */ + _checkBoundsMaxLat: function (bounds) { + var maxLat = this._maxLat; + + if (maxLat !== undefined) { + if (bounds.getNorth() >= maxLat) { + bounds._northEast.lat = Infinity; + } + if (bounds.getSouth() <= -maxLat) { + bounds._southWest.lat = -Infinity; + } + } + + return bounds; + }, + + //Shared animation code + _animationAddLayerNonAnimated: function (layer, newCluster) { + if (newCluster === layer) { + this._featureGroup.addLayer(layer); + } else if (newCluster._childCount === 2) { + newCluster._addToMap(); + + var markers = newCluster.getAllChildMarkers(); + this._featureGroup.removeLayer(markers[0]); + this._featureGroup.removeLayer(markers[1]); + } else { + newCluster._updateIcon(); + } + }, + + /** + * Extracts individual (i.e. non-group) layers from a Layer Group. + * @param group to extract layers from. + * @param output {Array} in which to store the extracted layers. + * @returns {*|Array} + * @private + */ + _extractNonGroupLayers: function (group, output) { + var layers = group.getLayers(), + i = 0, + layer; + + output = output || []; + + for (; i < layers.length; i++) { + layer = layers[i]; + + if (layer instanceof L.LayerGroup) { + this._extractNonGroupLayers(layer, output); + continue; + } + + output.push(layer); + } + + return output; + }, + + /** + * Implements the singleMarkerMode option. + * @param layer Marker to re-style using the Clusters iconCreateFunction. + * @returns {L.Icon} The newly created icon. + * @private + */ + _overrideMarkerIcon: function (layer) { + var icon = layer.options.icon = this.options.iconCreateFunction({ + getChildCount: function () { + return 1; + }, + getAllChildMarkers: function () { + return [layer]; + } + }); + + return icon; + } + }); + + // Constant bounds used in case option "removeOutsideVisibleBounds" is set to false. + L.MarkerClusterGroup.include({ + _mapBoundsInfinite: new L.LatLngBounds(new L.LatLng(-Infinity, -Infinity), new L.LatLng(Infinity, Infinity)) + }); + + L.MarkerClusterGroup.include({ + _noAnimation: { + //Non Animated versions of everything + _animationStart: function () { + //Do nothing... + }, + _animationZoomIn: function (previousZoomLevel, newZoomLevel) { + this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel); + this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds()); + + //We didn't actually animate, but we use this event to mean "clustering animations have finished" + this.fire('animationend'); + }, + _animationZoomOut: function (previousZoomLevel, newZoomLevel) { + this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel); + this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds()); + + //We didn't actually animate, but we use this event to mean "clustering animations have finished" + this.fire('animationend'); + }, + _animationAddLayer: function (layer, newCluster) { + this._animationAddLayerNonAnimated(layer, newCluster); + } + }, + + _withAnimation: { + //Animated versions here + _animationStart: function () { + this._map._mapPane.className += ' leaflet-cluster-anim'; + this._inZoomAnimation++; + }, + + _animationZoomIn: function (previousZoomLevel, newZoomLevel) { + var bounds = this._getExpandedVisibleBounds(), + fg = this._featureGroup, + minZoom = Math.floor(this._map.getMinZoom()), + i; + + this._ignoreMove = true; + + //Add all children of current clusters to map and remove those clusters from map + this._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) { + var startPos = c._latlng, + markers = c._markers, + m; + + if (!bounds.contains(startPos)) { + startPos = null; + } + + if (c._isSingleParent() && previousZoomLevel + 1 === newZoomLevel) { //Immediately add the new child and remove us + fg.removeLayer(c); + c._recursivelyAddChildrenToMap(null, newZoomLevel, bounds); + } else { + //Fade out old cluster + c.clusterHide(); + c._recursivelyAddChildrenToMap(startPos, newZoomLevel, bounds); + } + + //Remove all markers that aren't visible any more + //TODO: Do we actually need to do this on the higher levels too? + for (i = markers.length - 1; i >= 0; i--) { + m = markers[i]; + if (!bounds.contains(m._latlng)) { + fg.removeLayer(m); + } + } + + }); + + this._forceLayout(); + + //Update opacities + this._topClusterLevel._recursivelyBecomeVisible(bounds, newZoomLevel); + //TODO Maybe? Update markers in _recursivelyBecomeVisible + fg.eachLayer(function (n) { + if (!(n instanceof L.MarkerCluster) && n._icon) { + n.clusterShow(); + } + }); + + //update the positions of the just added clusters/markers + this._topClusterLevel._recursively(bounds, previousZoomLevel, newZoomLevel, function (c) { + c._recursivelyRestoreChildPositions(newZoomLevel); + }); + + this._ignoreMove = false; + + //Remove the old clusters and close the zoom animation + this._enqueue(function () { + //update the positions of the just added clusters/markers + this._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) { + fg.removeLayer(c); + c.clusterShow(); + }); + + this._animationEnd(); + }); + }, + + _animationZoomOut: function (previousZoomLevel, newZoomLevel) { + this._animationZoomOutSingle(this._topClusterLevel, previousZoomLevel - 1, newZoomLevel); + + //Need to add markers for those that weren't on the map before but are now + this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds()); + //Remove markers that were on the map before but won't be now + this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel, this._getExpandedVisibleBounds()); + }, + + _animationAddLayer: function (layer, newCluster) { + var me = this, + fg = this._featureGroup; + + fg.addLayer(layer); + if (newCluster !== layer) { + if (newCluster._childCount > 2) { //Was already a cluster + + newCluster._updateIcon(); + this._forceLayout(); + this._animationStart(); + + layer._setPos(this._map.latLngToLayerPoint(newCluster.getLatLng())); + layer.clusterHide(); + + this._enqueue(function () { + fg.removeLayer(layer); + layer.clusterShow(); + + me._animationEnd(); + }); + + } else { //Just became a cluster + this._forceLayout(); + + me._animationStart(); + me._animationZoomOutSingle(newCluster, this._map.getMaxZoom(), this._zoom); + } + } + } + }, + + // Private methods for animated versions. + _animationZoomOutSingle: function (cluster, previousZoomLevel, newZoomLevel) { + var bounds = this._getExpandedVisibleBounds(), + minZoom = Math.floor(this._map.getMinZoom()); + + //Animate all of the markers in the clusters to move to their cluster center point + cluster._recursivelyAnimateChildrenInAndAddSelfToMap(bounds, minZoom, previousZoomLevel + 1, newZoomLevel); + + var me = this; + + //Update the opacity (If we immediately set it they won't animate) + this._forceLayout(); + cluster._recursivelyBecomeVisible(bounds, newZoomLevel); + + //TODO: Maybe use the transition timing stuff to make this more reliable + //When the animations are done, tidy up + this._enqueue(function () { + + //This cluster stopped being a cluster before the timeout fired + if (cluster._childCount === 1) { + var m = cluster._markers[0]; + //If we were in a cluster animation at the time then the opacity and position of our child could be wrong now, so fix it + this._ignoreMove = true; + m.setLatLng(m.getLatLng()); + this._ignoreMove = false; + if (m.clusterShow) { + m.clusterShow(); + } + } else { + cluster._recursively(bounds, newZoomLevel, minZoom, function (c) { + c._recursivelyRemoveChildrenFromMap(bounds, minZoom, previousZoomLevel + 1); + }); + } + me._animationEnd(); + }); + }, + + _animationEnd: function () { + if (this._map) { + this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', ''); + } + this._inZoomAnimation--; + this.fire('animationend'); + }, + + //Force a browser layout of stuff in the map + // Should apply the current opacity and location to all elements so we can update them again for an animation + _forceLayout: function () { + //In my testing this works, infact offsetWidth of any element seems to work. + //Could loop all this._layers and do this for each _icon if it stops working + + L.Util.falseFn(document.body.offsetWidth); + } + }); + + L.markerClusterGroup = function (options) { + return new L.MarkerClusterGroup(options); + }; + + var MarkerCluster = L.MarkerCluster = L.Marker.extend({ + options: L.Icon.prototype.options, + + initialize: function (group, zoom, a, b) { + + L.Marker.prototype.initialize.call(this, a ? (a._cLatLng || a.getLatLng()) : new L.LatLng(0, 0), + { icon: this, pane: group.options.clusterPane }); + + this._group = group; + this._zoom = zoom; + + this._markers = []; + this._childClusters = []; + this._childCount = 0; + this._iconNeedsUpdate = true; + this._boundsNeedUpdate = true; + + this._bounds = new L.LatLngBounds(); + + if (a) { + this._addChild(a); + } + if (b) { + this._addChild(b); + } + }, + + //Recursively retrieve all child markers of this cluster + getAllChildMarkers: function (storageArray, ignoreDraggedMarker) { + storageArray = storageArray || []; + + for (var i = this._childClusters.length - 1; i >= 0; i--) { + this._childClusters[i].getAllChildMarkers(storageArray, ignoreDraggedMarker); + } + + for (var j = this._markers.length - 1; j >= 0; j--) { + if (ignoreDraggedMarker && this._markers[j].__dragStart) { + continue; + } + storageArray.push(this._markers[j]); + } + + return storageArray; + }, + + //Returns the count of how many child markers we have + getChildCount: function () { + return this._childCount; + }, + + //Zoom to the minimum of showing all of the child markers, or the extents of this cluster + zoomToBounds: function (fitBoundsOptions) { + var childClusters = this._childClusters.slice(), + map = this._group._map, + boundsZoom = map.getBoundsZoom(this._bounds), + zoom = this._zoom + 1, + mapZoom = map.getZoom(), + i; + + //calculate how far we need to zoom down to see all of the markers + while (childClusters.length > 0 && boundsZoom > zoom) { + zoom++; + var newClusters = []; + for (i = 0; i < childClusters.length; i++) { + newClusters = newClusters.concat(childClusters[i]._childClusters); + } + childClusters = newClusters; + } + + if (boundsZoom > zoom) { + this._group._map.setView(this._latlng, zoom); + } else if (boundsZoom <= mapZoom) { //If fitBounds wouldn't zoom us down, zoom us down instead + this._group._map.setView(this._latlng, mapZoom + 1); + } else { + this._group._map.fitBounds(this._bounds, fitBoundsOptions); + } + }, + + getBounds: function () { + var bounds = new L.LatLngBounds(); + bounds.extend(this._bounds); + return bounds; + }, + + _updateIcon: function () { + this._iconNeedsUpdate = true; + if (this._icon) { + this.setIcon(this); + } + }, + + //Cludge for Icon, we pretend to be an icon for performance + createIcon: function () { + if (this._iconNeedsUpdate) { + this._iconObj = this._group.options.iconCreateFunction(this); + this._iconNeedsUpdate = false; + } + return this._iconObj.createIcon(); + }, + createShadow: function () { + return this._iconObj.createShadow(); + }, + + + _addChild: function (new1, isNotificationFromChild) { + + this._iconNeedsUpdate = true; + + this._boundsNeedUpdate = true; + this._setClusterCenter(new1); + + if (new1 instanceof L.MarkerCluster) { + if (!isNotificationFromChild) { + this._childClusters.push(new1); + new1.__parent = this; + } + this._childCount += new1._childCount; + } else { + if (!isNotificationFromChild) { + this._markers.push(new1); + } + this._childCount++; + } + + if (this.__parent) { + this.__parent._addChild(new1, true); + } + }, + + /** + * Makes sure the cluster center is set. If not, uses the child center if it is a cluster, or the marker position. + * @param child L.MarkerCluster|L.Marker that will be used as cluster center if not defined yet. + * @private + */ + _setClusterCenter: function (child) { + if (!this._cLatLng) { + // when clustering, take position of the first point as the cluster center + this._cLatLng = child._cLatLng || child._latlng; + } + }, + + /** + * Assigns impossible bounding values so that the next extend entirely determines the new bounds. + * This method avoids having to trash the previous L.LatLngBounds object and to create a new one, which is much slower for this class. + * As long as the bounds are not extended, most other methods would probably fail, as they would with bounds initialized but not extended. + * @private + */ + _resetBounds: function () { + var bounds = this._bounds; + + if (bounds._southWest) { + bounds._southWest.lat = Infinity; + bounds._southWest.lng = Infinity; + } + if (bounds._northEast) { + bounds._northEast.lat = -Infinity; + bounds._northEast.lng = -Infinity; + } + }, + + _recalculateBounds: function () { + var markers = this._markers, + childClusters = this._childClusters, + latSum = 0, + lngSum = 0, + totalCount = this._childCount, + i, child, childLatLng, childCount; + + // Case where all markers are removed from the map and we are left with just an empty _topClusterLevel. + if (totalCount === 0) { + return; + } + + // Reset rather than creating a new object, for performance. + this._resetBounds(); + + // Child markers. + for (i = 0; i < markers.length; i++) { + childLatLng = markers[i]._latlng; + + this._bounds.extend(childLatLng); + + latSum += childLatLng.lat; + lngSum += childLatLng.lng; + } + + // Child clusters. + for (i = 0; i < childClusters.length; i++) { + child = childClusters[i]; + + // Re-compute child bounds and weighted position first if necessary. + if (child._boundsNeedUpdate) { + child._recalculateBounds(); + } + + this._bounds.extend(child._bounds); + + childLatLng = child._wLatLng; + childCount = child._childCount; + + latSum += childLatLng.lat * childCount; + lngSum += childLatLng.lng * childCount; + } + + this._latlng = this._wLatLng = new L.LatLng(latSum / totalCount, lngSum / totalCount); + + // Reset dirty flag. + this._boundsNeedUpdate = false; + }, + + //Set our markers position as given and add it to the map + _addToMap: function (startPos) { + if (startPos) { + this._backupLatlng = this._latlng; + this.setLatLng(startPos); + } + this._group._featureGroup.addLayer(this); + }, + + _recursivelyAnimateChildrenIn: function (bounds, center, maxZoom) { + this._recursively(bounds, this._group._map.getMinZoom(), maxZoom - 1, + function (c) { + var markers = c._markers, + i, m; + for (i = markers.length - 1; i >= 0; i--) { + m = markers[i]; + + //Only do it if the icon is still on the map + if (m._icon) { + m._setPos(center); + m.clusterHide(); + } + } + }, + function (c) { + var childClusters = c._childClusters, + j, cm; + for (j = childClusters.length - 1; j >= 0; j--) { + cm = childClusters[j]; + if (cm._icon) { + cm._setPos(center); + cm.clusterHide(); + } + } + } + ); + }, + + _recursivelyAnimateChildrenInAndAddSelfToMap: function (bounds, mapMinZoom, previousZoomLevel, newZoomLevel) { + this._recursively(bounds, newZoomLevel, mapMinZoom, + function (c) { + c._recursivelyAnimateChildrenIn(bounds, c._group._map.latLngToLayerPoint(c.getLatLng()).round(), previousZoomLevel); + + //TODO: depthToAnimateIn affects _isSingleParent, if there is a multizoom we may/may not be. + //As a hack we only do a animation free zoom on a single level zoom, if someone does multiple levels then we always animate + if (c._isSingleParent() && previousZoomLevel - 1 === newZoomLevel) { + c.clusterShow(); + c._recursivelyRemoveChildrenFromMap(bounds, mapMinZoom, previousZoomLevel); //Immediately remove our children as we are replacing them. TODO previousBounds not bounds + } else { + c.clusterHide(); + } + + c._addToMap(); + } + ); + }, + + _recursivelyBecomeVisible: function (bounds, zoomLevel) { + this._recursively(bounds, this._group._map.getMinZoom(), zoomLevel, null, function (c) { + c.clusterShow(); + }); + }, + + _recursivelyAddChildrenToMap: function (startPos, zoomLevel, bounds) { + this._recursively(bounds, this._group._map.getMinZoom() - 1, zoomLevel, + function (c) { + if (zoomLevel === c._zoom) { + return; + } + + //Add our child markers at startPos (so they can be animated out) + for (var i = c._markers.length - 1; i >= 0; i--) { + var nm = c._markers[i]; + + if (!bounds.contains(nm._latlng)) { + continue; + } + + if (startPos) { + nm._backupLatlng = nm.getLatLng(); + + nm.setLatLng(startPos); + if (nm.clusterHide) { + nm.clusterHide(); + } + } + + c._group._featureGroup.addLayer(nm); + } + }, + function (c) { + c._addToMap(startPos); + } + ); + }, + + _recursivelyRestoreChildPositions: function (zoomLevel) { + //Fix positions of child markers + for (var i = this._markers.length - 1; i >= 0; i--) { + var nm = this._markers[i]; + if (nm._backupLatlng) { + nm.setLatLng(nm._backupLatlng); + delete nm._backupLatlng; + } + } + + if (zoomLevel - 1 === this._zoom) { + //Reposition child clusters + for (var j = this._childClusters.length - 1; j >= 0; j--) { + this._childClusters[j]._restorePosition(); + } + } else { + for (var k = this._childClusters.length - 1; k >= 0; k--) { + this._childClusters[k]._recursivelyRestoreChildPositions(zoomLevel); + } + } + }, + + _restorePosition: function () { + if (this._backupLatlng) { + this.setLatLng(this._backupLatlng); + delete this._backupLatlng; + } + }, + + //exceptBounds: If set, don't remove any markers/clusters in it + _recursivelyRemoveChildrenFromMap: function (previousBounds, mapMinZoom, zoomLevel, exceptBounds) { + var m, i; + this._recursively(previousBounds, mapMinZoom - 1, zoomLevel - 1, + function (c) { + //Remove markers at every level + for (i = c._markers.length - 1; i >= 0; i--) { + m = c._markers[i]; + if (!exceptBounds || !exceptBounds.contains(m._latlng)) { + c._group._featureGroup.removeLayer(m); + if (m.clusterShow) { + m.clusterShow(); + } + } + } + }, + function (c) { + //Remove child clusters at just the bottom level + for (i = c._childClusters.length - 1; i >= 0; i--) { + m = c._childClusters[i]; + if (!exceptBounds || !exceptBounds.contains(m._latlng)) { + c._group._featureGroup.removeLayer(m); + if (m.clusterShow) { + m.clusterShow(); + } + } + } + } + ); + }, + + //Run the given functions recursively to this and child clusters + // boundsToApplyTo: a L.LatLngBounds representing the bounds of what clusters to recurse in to + // zoomLevelToStart: zoom level to start running functions (inclusive) + // zoomLevelToStop: zoom level to stop running functions (inclusive) + // runAtEveryLevel: function that takes an L.MarkerCluster as an argument that should be applied on every level + // runAtBottomLevel: function that takes an L.MarkerCluster as an argument that should be applied at only the bottom level + _recursively: function (boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel) { + var childClusters = this._childClusters, + zoom = this._zoom, + i, c; + + if (zoomLevelToStart <= zoom) { + if (runAtEveryLevel) { + runAtEveryLevel(this); + } + if (runAtBottomLevel && zoom === zoomLevelToStop) { + runAtBottomLevel(this); + } + } + + if (zoom < zoomLevelToStart || zoom < zoomLevelToStop) { + for (i = childClusters.length - 1; i >= 0; i--) { + c = childClusters[i]; + if (c._boundsNeedUpdate) { + c._recalculateBounds(); + } + if (boundsToApplyTo.intersects(c._bounds)) { + c._recursively(boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel); + } + } + } + }, + + //Returns true if we are the parent of only one cluster and that cluster is the same as us + _isSingleParent: function () { + //Don't need to check this._markers as the rest won't work if there are any + return this._childClusters.length > 0 && this._childClusters[0]._childCount === this._childCount; + } + }); + + /* + * Extends L.Marker to include two extra methods: clusterHide and clusterShow. + * + * They work as setOpacity(0) and setOpacity(1) respectively, but + * don't overwrite the options.opacity + * + */ + + L.Marker.include({ + clusterHide: function () { + var backup = this.options.opacity; + this.setOpacity(0); + this.options.opacity = backup; + return this; + }, + + clusterShow: function () { + return this.setOpacity(this.options.opacity); + } + }); + + L.DistanceGrid = function (cellSize) { + this._cellSize = cellSize; + this._sqCellSize = cellSize * cellSize; + this._grid = {}; + this._objectPoint = { }; + }; + + L.DistanceGrid.prototype = { + + addObject: function (obj, point) { + var x = this._getCoord(point.x), + y = this._getCoord(point.y), + grid = this._grid, + row = grid[y] = grid[y] || {}, + cell = row[x] = row[x] || [], + stamp = L.Util.stamp(obj); + + this._objectPoint[stamp] = point; + + cell.push(obj); + }, + + updateObject: function (obj, point) { + this.removeObject(obj); + this.addObject(obj, point); + }, + + //Returns true if the object was found + removeObject: function (obj, point) { + var x = this._getCoord(point.x), + y = this._getCoord(point.y), + grid = this._grid, + row = grid[y] = grid[y] || {}, + cell = row[x] = row[x] || [], + i, len; + + delete this._objectPoint[L.Util.stamp(obj)]; + + for (i = 0, len = cell.length; i < len; i++) { + if (cell[i] === obj) { + + cell.splice(i, 1); + + if (len === 1) { + delete row[x]; + } + + return true; + } + } + + }, + + eachObject: function (fn, context) { + var i, j, k, len, row, cell, removed, + grid = this._grid; + + for (i in grid) { + row = grid[i]; + + for (j in row) { + cell = row[j]; + + for (k = 0, len = cell.length; k < len; k++) { + removed = fn.call(context, cell[k]); + if (removed) { + k--; + len--; + } + } + } + } + }, + + getNearObject: function (point) { + var x = this._getCoord(point.x), + y = this._getCoord(point.y), + i, j, k, row, cell, len, obj, dist, + objectPoint = this._objectPoint, + closestDistSq = this._sqCellSize, + closest = null; + + for (i = y - 1; i <= y + 1; i++) { + row = this._grid[i]; + if (row) { + + for (j = x - 1; j <= x + 1; j++) { + cell = row[j]; + if (cell) { + + for (k = 0, len = cell.length; k < len; k++) { + obj = cell[k]; + dist = this._sqDist(objectPoint[L.Util.stamp(obj)], point); + if (dist < closestDistSq || + dist <= closestDistSq && closest === null) { + closestDistSq = dist; + closest = obj; + } + } + } + } + } + } + return closest; + }, + + _getCoord: function (x) { + var coord = Math.floor(x / this._cellSize); + return isFinite(coord) ? coord : x; + }, + + _sqDist: function (p, p2) { + var dx = p2.x - p.x, + dy = p2.y - p.y; + return dx * dx + dy * dy; + } + }; + + /* Copyright (c) 2012 the authors listed at the following URL, and/or + the authors of referenced articles or incorporated external code: + http://en.literateprograms.org/Quickhull_(Javascript)?action=history&offset=20120410175256 + + 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. + + Retrieved from: http://en.literateprograms.org/Quickhull_(Javascript)?oldid=18434 + */ + + (function () { + L.QuickHull = { + + /* + * @param {Object} cpt a point to be measured from the baseline + * @param {Array} bl the baseline, as represented by a two-element + * array of latlng objects. + * @returns {Number} an approximate distance measure + */ + getDistant: function (cpt, bl) { + var vY = bl[1].lat - bl[0].lat, + vX = bl[0].lng - bl[1].lng; + return (vX * (cpt.lat - bl[0].lat) + vY * (cpt.lng - bl[0].lng)); + }, + + /* + * @param {Array} baseLine a two-element array of latlng objects + * representing the baseline to project from + * @param {Array} latLngs an array of latlng objects + * @returns {Object} the maximum point and all new points to stay + * in consideration for the hull. + */ + findMostDistantPointFromBaseLine: function (baseLine, latLngs) { + var maxD = 0, + maxPt = null, + newPoints = [], + i, pt, d; + + for (i = latLngs.length - 1; i >= 0; i--) { + pt = latLngs[i]; + d = this.getDistant(pt, baseLine); + + if (d > 0) { + newPoints.push(pt); + } else { + continue; + } + + if (d > maxD) { + maxD = d; + maxPt = pt; + } + } + + return { maxPoint: maxPt, newPoints: newPoints }; + }, + + + /* + * Given a baseline, compute the convex hull of latLngs as an array + * of latLngs. + * + * @param {Array} latLngs + * @returns {Array} + */ + buildConvexHull: function (baseLine, latLngs) { + var convexHullBaseLines = [], + t = this.findMostDistantPointFromBaseLine(baseLine, latLngs); + + if (t.maxPoint) { // if there is still a point "outside" the base line + convexHullBaseLines = + convexHullBaseLines.concat( + this.buildConvexHull([baseLine[0], t.maxPoint], t.newPoints) + ); + convexHullBaseLines = + convexHullBaseLines.concat( + this.buildConvexHull([t.maxPoint, baseLine[1]], t.newPoints) + ); + return convexHullBaseLines; + } else { // if there is no more point "outside" the base line, the current base line is part of the convex hull + return [baseLine[0]]; + } + }, + + /* + * Given an array of latlngs, compute a convex hull as an array + * of latlngs + * + * @param {Array} latLngs + * @returns {Array} + */ + getConvexHull: function (latLngs) { + // find first baseline + var maxLat = false, minLat = false, + maxLng = false, minLng = false, + maxLatPt = null, minLatPt = null, + maxLngPt = null, minLngPt = null, + maxPt = null, minPt = null, + i; + + for (i = latLngs.length - 1; i >= 0; i--) { + var pt = latLngs[i]; + if (maxLat === false || pt.lat > maxLat) { + maxLatPt = pt; + maxLat = pt.lat; + } + if (minLat === false || pt.lat < minLat) { + minLatPt = pt; + minLat = pt.lat; + } + if (maxLng === false || pt.lng > maxLng) { + maxLngPt = pt; + maxLng = pt.lng; + } + if (minLng === false || pt.lng < minLng) { + minLngPt = pt; + minLng = pt.lng; + } + } + + if (minLat !== maxLat) { + minPt = minLatPt; + maxPt = maxLatPt; + } else { + minPt = minLngPt; + maxPt = maxLngPt; + } + + var ch = [].concat(this.buildConvexHull([minPt, maxPt], latLngs), + this.buildConvexHull([maxPt, minPt], latLngs)); + return ch; + } + }; + }()); + + L.MarkerCluster.include({ + getConvexHull: function () { + var childMarkers = this.getAllChildMarkers(), + points = [], + p, i; + + for (i = childMarkers.length - 1; i >= 0; i--) { + p = childMarkers[i].getLatLng(); + points.push(p); + } + + return L.QuickHull.getConvexHull(points); + } + }); + + //This code is 100% based on https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet + //Huge thanks to jawj for implementing it first to make my job easy :-) + + L.MarkerCluster.include({ + + _2PI: Math.PI * 2, + _circleFootSeparation: 25, //related to circumference of circle + _circleStartAngle: 0, + + _spiralFootSeparation: 28, //related to size of spiral (experiment!) + _spiralLengthStart: 11, + _spiralLengthFactor: 5, + + _circleSpiralSwitchover: 9, //show spiral instead of circle from this marker count upwards. + // 0 -> always spiral; Infinity -> always circle + + spiderfy: function () { + if (this._group._spiderfied === this || this._group._inZoomAnimation) { + return; + } + + var childMarkers = this.getAllChildMarkers(null, true), + group = this._group, + map = group._map, + center = map.latLngToLayerPoint(this._latlng), + positions; + + this._group._unspiderfy(); + this._group._spiderfied = this; + + //TODO Maybe: childMarkers order by distance to center + + if (this._group.options.spiderfyShapePositions) { + positions = this._group.options.spiderfyShapePositions(childMarkers.length, center); + } else if (childMarkers.length >= this._circleSpiralSwitchover) { + positions = this._generatePointsSpiral(childMarkers.length, center); + } else { + center.y += 10; // Otherwise circles look wrong => hack for standard blue icon, renders differently for other icons. + positions = this._generatePointsCircle(childMarkers.length, center); + } + + this._animationSpiderfy(childMarkers, positions); + }, + + unspiderfy: function (zoomDetails) { + /// Argument from zoomanim if being called in a zoom animation or null otherwise + if (this._group._inZoomAnimation) { + return; + } + this._animationUnspiderfy(zoomDetails); + + this._group._spiderfied = null; + }, + + _generatePointsCircle: function (count, centerPt) { + var circumference = this._group.options.spiderfyDistanceMultiplier * this._circleFootSeparation * (2 + count), + legLength = circumference / this._2PI, //radius from circumference + angleStep = this._2PI / count, + res = [], + i, angle; + + legLength = Math.max(legLength, 35); // Minimum distance to get outside the cluster icon. + + res.length = count; + + for (i = 0; i < count; i++) { // Clockwise, like spiral. + angle = this._circleStartAngle + i * angleStep; + res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round(); + } + + return res; + }, + + _generatePointsSpiral: function (count, centerPt) { + var spiderfyDistanceMultiplier = this._group.options.spiderfyDistanceMultiplier, + legLength = spiderfyDistanceMultiplier * this._spiralLengthStart, + separation = spiderfyDistanceMultiplier * this._spiralFootSeparation, + lengthFactor = spiderfyDistanceMultiplier * this._spiralLengthFactor * this._2PI, + angle = 0, + res = [], + i; + + res.length = count; + + // Higher index, closer position to cluster center. + for (i = count; i >= 0; i--) { + // Skip the first position, so that we are already farther from center and we avoid + // being under the default cluster icon (especially important for Circle Markers). + if (i < count) { + res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round(); + } + angle += separation / legLength + i * 0.0005; + legLength += lengthFactor / angle; + } + return res; + }, + + _noanimationUnspiderfy: function () { + var group = this._group, + map = group._map, + fg = group._featureGroup, + childMarkers = this.getAllChildMarkers(null, true), + m, i; + + group._ignoreMove = true; + + this.setOpacity(1); + for (i = childMarkers.length - 1; i >= 0; i--) { + m = childMarkers[i]; + + fg.removeLayer(m); + + if (m._preSpiderfyLatlng) { + m.setLatLng(m._preSpiderfyLatlng); + delete m._preSpiderfyLatlng; + } + if (m.setZIndexOffset) { + m.setZIndexOffset(0); + } + + if (m._spiderLeg) { + map.removeLayer(m._spiderLeg); + delete m._spiderLeg; + } + } + + group.fire('unspiderfied', { + cluster: this, + markers: childMarkers + }); + group._ignoreMove = false; + group._spiderfied = null; + } + }); + + //Non Animated versions of everything + L.MarkerClusterNonAnimated = L.MarkerCluster.extend({ + _animationSpiderfy: function (childMarkers, positions) { + var group = this._group, + map = group._map, + fg = group._featureGroup, + legOptions = this._group.options.spiderLegPolylineOptions, + i, m, leg, newPos; + + group._ignoreMove = true; + + // Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition. + // The reverse order trick no longer improves performance on modern browsers. + for (i = 0; i < childMarkers.length; i++) { + newPos = map.layerPointToLatLng(positions[i]); + m = childMarkers[i]; + + // Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it. + leg = new L.Polyline([this._latlng, newPos], legOptions); + map.addLayer(leg); + m._spiderLeg = leg; + + // Now add the marker. + m._preSpiderfyLatlng = m._latlng; + m.setLatLng(newPos); + if (m.setZIndexOffset) { + m.setZIndexOffset(1000000); //Make these appear on top of EVERYTHING + } + + fg.addLayer(m); + } + this.setOpacity(0.3); + + group._ignoreMove = false; + group.fire('spiderfied', { + cluster: this, + markers: childMarkers + }); + }, + + _animationUnspiderfy: function () { + this._noanimationUnspiderfy(); + } + }); + + //Animated versions here + L.MarkerCluster.include({ + + _animationSpiderfy: function (childMarkers, positions) { + var me = this, + group = this._group, + map = group._map, + fg = group._featureGroup, + thisLayerLatLng = this._latlng, + thisLayerPos = map.latLngToLayerPoint(thisLayerLatLng), + svg = L.Path.SVG, + legOptions = L.extend({}, this._group.options.spiderLegPolylineOptions), // Copy the options so that we can modify them for animation. + finalLegOpacity = legOptions.opacity, + i, m, leg, legPath, legLength, newPos; + + if (finalLegOpacity === undefined) { + finalLegOpacity = L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity; + } + + if (svg) { + // If the initial opacity of the spider leg is not 0 then it appears before the animation starts. + legOptions.opacity = 0; + + // Add the class for CSS transitions. + legOptions.className = (legOptions.className || '') + ' leaflet-cluster-spider-leg'; + } else { + // Make sure we have a defined opacity. + legOptions.opacity = finalLegOpacity; + } + + group._ignoreMove = true; + + // Add markers and spider legs to map, hidden at our center point. + // Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition. + // The reverse order trick no longer improves performance on modern browsers. + for (i = 0; i < childMarkers.length; i++) { + m = childMarkers[i]; + + newPos = map.layerPointToLatLng(positions[i]); + + // Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it. + leg = new L.Polyline([thisLayerLatLng, newPos], legOptions); + map.addLayer(leg); + m._spiderLeg = leg; + + // Explanations: https://jakearchibald.com/2013/animated-line-drawing-svg/ + // In our case the transition property is declared in the CSS file. + if (svg) { + legPath = leg._path; + legLength = legPath.getTotalLength() + 0.1; // Need a small extra length to avoid remaining dot in Firefox. + legPath.style.strokeDasharray = legLength; // Just 1 length is enough, it will be duplicated. + legPath.style.strokeDashoffset = legLength; + } + + // If it is a marker, add it now and we'll animate it out + if (m.setZIndexOffset) { + m.setZIndexOffset(1000000); // Make normal markers appear on top of EVERYTHING + } + if (m.clusterHide) { + m.clusterHide(); + } + + // Vectors just get immediately added + fg.addLayer(m); + + if (m._setPos) { + m._setPos(thisLayerPos); + } + } + + group._forceLayout(); + group._animationStart(); + + // Reveal markers and spider legs. + for (i = childMarkers.length - 1; i >= 0; i--) { + newPos = map.layerPointToLatLng(positions[i]); + m = childMarkers[i]; + + //Move marker to new position + m._preSpiderfyLatlng = m._latlng; + m.setLatLng(newPos); + + if (m.clusterShow) { + m.clusterShow(); + } + + // Animate leg (animation is actually delegated to CSS transition). + if (svg) { + leg = m._spiderLeg; + legPath = leg._path; + legPath.style.strokeDashoffset = 0; + //legPath.style.strokeOpacity = finalLegOpacity; + leg.setStyle({opacity: finalLegOpacity}); + } + } + this.setOpacity(0.3); + + group._ignoreMove = false; + + setTimeout(function () { + group._animationEnd(); + group.fire('spiderfied', { + cluster: me, + markers: childMarkers + }); + }, 200); + }, + + _animationUnspiderfy: function (zoomDetails) { + var me = this, + group = this._group, + map = group._map, + fg = group._featureGroup, + thisLayerPos = zoomDetails ? map._latLngToNewLayerPoint(this._latlng, zoomDetails.zoom, zoomDetails.center) : map.latLngToLayerPoint(this._latlng), + childMarkers = this.getAllChildMarkers(null, true), + svg = L.Path.SVG, + m, i, leg, legPath, legLength, nonAnimatable; + + group._ignoreMove = true; + group._animationStart(); + + //Make us visible and bring the child markers back in + this.setOpacity(1); + for (i = childMarkers.length - 1; i >= 0; i--) { + m = childMarkers[i]; + + //Marker was added to us after we were spiderfied + if (!m._preSpiderfyLatlng) { + continue; + } + + //Close any popup on the marker first, otherwise setting the location of the marker will make the map scroll + m.closePopup(); + + //Fix up the location to the real one + m.setLatLng(m._preSpiderfyLatlng); + delete m._preSpiderfyLatlng; + + //Hack override the location to be our center + nonAnimatable = true; + if (m._setPos) { + m._setPos(thisLayerPos); + nonAnimatable = false; + } + if (m.clusterHide) { + m.clusterHide(); + nonAnimatable = false; + } + if (nonAnimatable) { + fg.removeLayer(m); + } + + // Animate the spider leg back in (animation is actually delegated to CSS transition). + if (svg) { + leg = m._spiderLeg; + legPath = leg._path; + legLength = legPath.getTotalLength() + 0.1; + legPath.style.strokeDashoffset = legLength; + leg.setStyle({opacity: 0}); + } + } + + group._ignoreMove = false; + + setTimeout(function () { + //If we have only <= one child left then that marker will be shown on the map so don't remove it! + var stillThereChildCount = 0; + for (i = childMarkers.length - 1; i >= 0; i--) { + m = childMarkers[i]; + if (m._spiderLeg) { + stillThereChildCount++; + } + } + + + for (i = childMarkers.length - 1; i >= 0; i--) { + m = childMarkers[i]; + + if (!m._spiderLeg) { //Has already been unspiderfied + continue; + } + + if (m.clusterShow) { + m.clusterShow(); + } + if (m.setZIndexOffset) { + m.setZIndexOffset(0); + } + + if (stillThereChildCount > 1) { + fg.removeLayer(m); + } + + map.removeLayer(m._spiderLeg); + delete m._spiderLeg; + } + group._animationEnd(); + group.fire('unspiderfied', { + cluster: me, + markers: childMarkers + }); + }, 200); + } + }); + + + L.MarkerClusterGroup.include({ + //The MarkerCluster currently spiderfied (if any) + _spiderfied: null, + + unspiderfy: function () { + this._unspiderfy.apply(this, arguments); + }, + + _spiderfierOnAdd: function () { + this._map.on('click', this._unspiderfyWrapper, this); + + if (this._map.options.zoomAnimation) { + this._map.on('zoomstart', this._unspiderfyZoomStart, this); + } + //Browsers without zoomAnimation or a big zoom don't fire zoomstart + this._map.on('zoomend', this._noanimationUnspiderfy, this); + + if (!L.Browser.touch) { + this._map.getRenderer(this); + //Needs to happen in the pageload, not after, or animations don't work in webkit + // http://stackoverflow.com/questions/8455200/svg-animate-with-dynamically-added-elements + //Disable on touch browsers as the animation messes up on a touch zoom and isn't very noticable + } + }, + + _spiderfierOnRemove: function () { + this._map.off('click', this._unspiderfyWrapper, this); + this._map.off('zoomstart', this._unspiderfyZoomStart, this); + this._map.off('zoomanim', this._unspiderfyZoomAnim, this); + this._map.off('zoomend', this._noanimationUnspiderfy, this); + + //Ensure that markers are back where they should be + // Use no animation to avoid a sticky leaflet-cluster-anim class on mapPane + this._noanimationUnspiderfy(); + }, + + //On zoom start we add a zoomanim handler so that we are guaranteed to be last (after markers are animated) + //This means we can define the animation they do rather than Markers doing an animation to their actual location + _unspiderfyZoomStart: function () { + if (!this._map) { //May have been removed from the map by a zoomEnd handler + return; + } + + this._map.on('zoomanim', this._unspiderfyZoomAnim, this); + }, + + _unspiderfyZoomAnim: function (zoomDetails) { + //Wait until the first zoomanim after the user has finished touch-zooming before running the animation + if (L.DomUtil.hasClass(this._map._mapPane, 'leaflet-touching')) { + return; + } + + this._map.off('zoomanim', this._unspiderfyZoomAnim, this); + this._unspiderfy(zoomDetails); + }, + + _unspiderfyWrapper: function () { + /// _unspiderfy but passes no arguments + this._unspiderfy(); + }, + + _unspiderfy: function (zoomDetails) { + if (this._spiderfied) { + this._spiderfied.unspiderfy(zoomDetails); + } + }, + + _noanimationUnspiderfy: function () { + if (this._spiderfied) { + this._spiderfied._noanimationUnspiderfy(); + } + }, + + //If the given layer is currently being spiderfied then we unspiderfy it so it isn't on the map anymore etc + _unspiderfyLayer: function (layer) { + if (layer._spiderLeg) { + this._featureGroup.removeLayer(layer); + + if (layer.clusterShow) { + layer.clusterShow(); + } + //Position will be fixed up immediately in _animationUnspiderfy + if (layer.setZIndexOffset) { + layer.setZIndexOffset(0); + } + + this._map.removeLayer(layer._spiderLeg); + delete layer._spiderLeg; + } + } + }); + + /** + * Adds 1 public method to MCG and 1 to L.Marker to facilitate changing + * markers' icon options and refreshing their icon and their parent clusters + * accordingly (case where their iconCreateFunction uses data of childMarkers + * to make up the cluster icon). + */ + + + L.MarkerClusterGroup.include({ + /** + * Updates the icon of all clusters which are parents of the given marker(s). + * In singleMarkerMode, also updates the given marker(s) icon. + * @param layers L.MarkerClusterGroup|L.LayerGroup|Array(L.Marker)|Map(L.Marker)| + * L.MarkerCluster|L.Marker (optional) list of markers (or single marker) whose parent + * clusters need to be updated. If not provided, retrieves all child markers of this. + * @returns {L.MarkerClusterGroup} + */ + refreshClusters: function (layers) { + if (!layers) { + layers = this._topClusterLevel.getAllChildMarkers(); + } else if (layers instanceof L.MarkerClusterGroup) { + layers = layers._topClusterLevel.getAllChildMarkers(); + } else if (layers instanceof L.LayerGroup) { + layers = layers._layers; + } else if (layers instanceof L.MarkerCluster) { + layers = layers.getAllChildMarkers(); + } else if (layers instanceof L.Marker) { + layers = [layers]; + } // else: must be an Array(L.Marker)|Map(L.Marker) + this._flagParentsIconsNeedUpdate(layers); + this._refreshClustersIcons(); + + // In case of singleMarkerMode, also re-draw the markers. + if (this.options.singleMarkerMode) { + this._refreshSingleMarkerModeMarkers(layers); + } + + return this; + }, + + /** + * Simply flags all parent clusters of the given markers as having a "dirty" icon. + * @param layers Array(L.Marker)|Map(L.Marker) list of markers. + * @private + */ + _flagParentsIconsNeedUpdate: function (layers) { + var id, parent; + + // Assumes layers is an Array or an Object whose prototype is non-enumerable. + for (id in layers) { + // Flag parent clusters' icon as "dirty", all the way up. + // Dumb process that flags multiple times upper parents, but still + // much more efficient than trying to be smart and make short lists, + // at least in the case of a hierarchy following a power law: + // http://jsperf.com/flag-nodes-in-power-hierarchy/2 + parent = layers[id].__parent; + while (parent) { + parent._iconNeedsUpdate = true; + parent = parent.__parent; + } + } + }, + + /** + * Re-draws the icon of the supplied markers. + * To be used in singleMarkerMode only. + * @param layers Array(L.Marker)|Map(L.Marker) list of markers. + * @private + */ + _refreshSingleMarkerModeMarkers: function (layers) { + var id, layer; + + for (id in layers) { + layer = layers[id]; + + // Make sure we do not override markers that do not belong to THIS group. + if (this.hasLayer(layer)) { + // Need to re-create the icon first, then re-draw the marker. + layer.setIcon(this._overrideMarkerIcon(layer)); + } + } + } + }); + + L.Marker.include({ + /** + * Updates the given options in the marker's icon and refreshes the marker. + * @param options map object of icon options. + * @param directlyRefreshClusters boolean (optional) true to trigger + * MCG.refreshClustersOf() right away with this single marker. + * @returns {L.Marker} + */ + refreshIconOptions: function (options, directlyRefreshClusters) { + var icon = this.options.icon; + + L.setOptions(icon, options); + + this.setIcon(icon); + + // Shortcut to refresh the associated MCG clusters right away. + // To be used when refreshing a single marker. + // Otherwise, better use MCG.refreshClusters() once at the end with + // the list of modified markers. + if (directlyRefreshClusters && this.__parent) { + this.__parent._group.refreshClusters(this); + } + + return this; + } + }); + + exports.MarkerClusterGroup = MarkerClusterGroup; + exports.MarkerCluster = MarkerCluster; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); +//# sourceMappingURL=leaflet.markercluster-src.js.map diff --git a/netbox_device_map/static/netbox_device_map/leaflet.markercluster/leaflet.markercluster-src.js.map b/netbox_device_map/static/netbox_device_map/leaflet.markercluster/leaflet.markercluster-src.js.map new file mode 100644 index 0000000..b176014 --- /dev/null +++ b/netbox_device_map/static/netbox_device_map/leaflet.markercluster/leaflet.markercluster-src.js.map @@ -0,0 +1 @@ +{"version":3,"file":"leaflet.markercluster-src.js","sources":["../src/MarkerClusterGroup.js","../src/MarkerCluster.js","../src/MarkerOpacity.js","../src/DistanceGrid.js","../src/MarkerCluster.QuickHull.js","../src/MarkerCluster.Spiderfier.js","../src/MarkerClusterGroup.Refresh.js"],"sourcesContent":["/*\n * L.MarkerClusterGroup extends L.FeatureGroup by clustering the markers contained within\n */\n\nexport var MarkerClusterGroup = L.MarkerClusterGroup = L.FeatureGroup.extend({\n\n\toptions: {\n\t\tmaxClusterRadius: 80, //A cluster will cover at most this many pixels from its center\n\t\ticonCreateFunction: null,\n\t\tclusterPane: L.Marker.prototype.options.pane,\n\n\t\tspiderfyOnEveryZoom: false,\n\t\tspiderfyOnMaxZoom: true,\n\t\tshowCoverageOnHover: true,\n\t\tzoomToBoundsOnClick: true,\n\t\tsingleMarkerMode: false,\n\n\t\tdisableClusteringAtZoom: null,\n\n\t\t// Setting this to false prevents the removal of any clusters outside of the viewpoint, which\n\t\t// is the default behaviour for performance reasons.\n\t\tremoveOutsideVisibleBounds: true,\n\n\t\t// Set to false to disable all animations (zoom and spiderfy).\n\t\t// If false, option animateAddingMarkers below has no effect.\n\t\t// If L.DomUtil.TRANSITION is falsy, this option has no effect.\n\t\tanimate: true,\n\n\t\t//Whether to animate adding markers after adding the MarkerClusterGroup to the map\n\t\t// If you are adding individual markers set to true, if adding bulk markers leave false for massive performance gains.\n\t\tanimateAddingMarkers: false,\n\n\t\t// Make it possible to provide custom function to calculate spiderfy shape positions\n\t\tspiderfyShapePositions: null,\n\n\t\t//Increase to increase the distance away that spiderfied markers appear from the center\n\t\tspiderfyDistanceMultiplier: 1,\n\n\t\t// Make it possible to specify a polyline options on a spider leg\n\t\tspiderLegPolylineOptions: { weight: 1.5, color: '#222', opacity: 0.5 },\n\n\t\t// When bulk adding layers, adds markers in chunks. Means addLayers may not add all the layers in the call, others will be loaded during setTimeouts\n\t\tchunkedLoading: false,\n\t\tchunkInterval: 200, // process markers for a maximum of ~ n milliseconds (then trigger the chunkProgress callback)\n\t\tchunkDelay: 50, // at the end of each interval, give n milliseconds back to system/browser\n\t\tchunkProgress: null, // progress callback: function(processed, total, elapsed) (e.g. for a progress indicator)\n\n\t\t//Options to pass to the L.Polygon constructor\n\t\tpolygonOptions: {}\n\t},\n\n\tinitialize: function (options) {\n\t\tL.Util.setOptions(this, options);\n\t\tif (!this.options.iconCreateFunction) {\n\t\t\tthis.options.iconCreateFunction = this._defaultIconCreateFunction;\n\t\t}\n\n\t\tthis._featureGroup = L.featureGroup();\n\t\tthis._featureGroup.addEventParent(this);\n\n\t\tthis._nonPointGroup = L.featureGroup();\n\t\tthis._nonPointGroup.addEventParent(this);\n\n\t\tthis._inZoomAnimation = 0;\n\t\tthis._needsClustering = [];\n\t\tthis._needsRemoving = []; //Markers removed while we aren't on the map need to be kept track of\n\t\t//The bounds of the currently shown area (from _getExpandedVisibleBounds) Updated on zoom/move\n\t\tthis._currentShownBounds = null;\n\n\t\tthis._queue = [];\n\n\t\tthis._childMarkerEventHandlers = {\n\t\t\t'dragstart': this._childMarkerDragStart,\n\t\t\t'move': this._childMarkerMoved,\n\t\t\t'dragend': this._childMarkerDragEnd,\n\t\t};\n\n\t\t// Hook the appropriate animation methods.\n\t\tvar animate = L.DomUtil.TRANSITION && this.options.animate;\n\t\tL.extend(this, animate ? this._withAnimation : this._noAnimation);\n\t\t// Remember which MarkerCluster class to instantiate (animated or not).\n\t\tthis._markerCluster = animate ? L.MarkerCluster : L.MarkerClusterNonAnimated;\n\t},\n\n\taddLayer: function (layer) {\n\n\t\tif (layer instanceof L.LayerGroup) {\n\t\t\treturn this.addLayers([layer]);\n\t\t}\n\n\t\t//Don't cluster non point data\n\t\tif (!layer.getLatLng) {\n\t\t\tthis._nonPointGroup.addLayer(layer);\n\t\t\tthis.fire('layeradd', { layer: layer });\n\t\t\treturn this;\n\t\t}\n\n\t\tif (!this._map) {\n\t\t\tthis._needsClustering.push(layer);\n\t\t\tthis.fire('layeradd', { layer: layer });\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this.hasLayer(layer)) {\n\t\t\treturn this;\n\t\t}\n\n\n\t\t//If we have already clustered we'll need to add this one to a cluster\n\n\t\tif (this._unspiderfy) {\n\t\t\tthis._unspiderfy();\n\t\t}\n\n\t\tthis._addLayer(layer, this._maxZoom);\n\t\tthis.fire('layeradd', { layer: layer });\n\n\t\t// Refresh bounds and weighted positions.\n\t\tthis._topClusterLevel._recalculateBounds();\n\n\t\tthis._refreshClustersIcons();\n\n\t\t//Work out what is visible\n\t\tvar visibleLayer = layer,\n\t\t currentZoom = this._zoom;\n\t\tif (layer.__parent) {\n\t\t\twhile (visibleLayer.__parent._zoom >= currentZoom) {\n\t\t\t\tvisibleLayer = visibleLayer.__parent;\n\t\t\t}\n\t\t}\n\n\t\tif (this._currentShownBounds.contains(visibleLayer.getLatLng())) {\n\t\t\tif (this.options.animateAddingMarkers) {\n\t\t\t\tthis._animationAddLayer(layer, visibleLayer);\n\t\t\t} else {\n\t\t\t\tthis._animationAddLayerNonAnimated(layer, visibleLayer);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\tremoveLayer: function (layer) {\n\n\t\tif (layer instanceof L.LayerGroup) {\n\t\t\treturn this.removeLayers([layer]);\n\t\t}\n\n\t\t//Non point layers\n\t\tif (!layer.getLatLng) {\n\t\t\tthis._nonPointGroup.removeLayer(layer);\n\t\t\tthis.fire('layerremove', { layer: layer });\n\t\t\treturn this;\n\t\t}\n\n\t\tif (!this._map) {\n\t\t\tif (!this._arraySplice(this._needsClustering, layer) && this.hasLayer(layer)) {\n\t\t\t\tthis._needsRemoving.push({ layer: layer, latlng: layer._latlng });\n\t\t\t}\n\t\t\tthis.fire('layerremove', { layer: layer });\n\t\t\treturn this;\n\t\t}\n\n\t\tif (!layer.__parent) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this._unspiderfy) {\n\t\t\tthis._unspiderfy();\n\t\t\tthis._unspiderfyLayer(layer);\n\t\t}\n\n\t\t//Remove the marker from clusters\n\t\tthis._removeLayer(layer, true);\n\t\tthis.fire('layerremove', { layer: layer });\n\n\t\t// Refresh bounds and weighted positions.\n\t\tthis._topClusterLevel._recalculateBounds();\n\n\t\tthis._refreshClustersIcons();\n\n\t\tlayer.off(this._childMarkerEventHandlers, this);\n\n\t\tif (this._featureGroup.hasLayer(layer)) {\n\t\t\tthis._featureGroup.removeLayer(layer);\n\t\t\tif (layer.clusterShow) {\n\t\t\t\tlayer.clusterShow();\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t//Takes an array of markers and adds them in bulk\n\taddLayers: function (layersArray, skipLayerAddEvent) {\n\t\tif (!L.Util.isArray(layersArray)) {\n\t\t\treturn this.addLayer(layersArray);\n\t\t}\n\n\t\tvar fg = this._featureGroup,\n\t\t npg = this._nonPointGroup,\n\t\t chunked = this.options.chunkedLoading,\n\t\t chunkInterval = this.options.chunkInterval,\n\t\t chunkProgress = this.options.chunkProgress,\n\t\t l = layersArray.length,\n\t\t offset = 0,\n\t\t originalArray = true,\n\t\t m;\n\n\t\tif (this._map) {\n\t\t\tvar started = (new Date()).getTime();\n\t\t\tvar process = L.bind(function () {\n\t\t\t\tvar start = (new Date()).getTime();\n\n\t\t\t\t// Make sure to unspiderfy before starting to add some layers\n\t\t\t\tif (this._map && this._unspiderfy) {\n\t\t\t\t\tthis._unspiderfy();\n\t\t\t\t}\n\n\t\t\t\tfor (; offset < l; offset++) {\n\t\t\t\t\tif (chunked && offset % 200 === 0) {\n\t\t\t\t\t\t// every couple hundred markers, instrument the time elapsed since processing started:\n\t\t\t\t\t\tvar elapsed = (new Date()).getTime() - start;\n\t\t\t\t\t\tif (elapsed > chunkInterval) {\n\t\t\t\t\t\t\tbreak; // been working too hard, time to take a break :-)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tm = layersArray[offset];\n\n\t\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\t\t// Side effects:\n\t\t\t\t\t// - Total increases, so chunkProgress ratio jumps backward.\n\t\t\t\t\t// - Groups are not included in this group, only their non-group child layers (hasLayer).\n\t\t\t\t\t// Changing array length while looping does not affect performance in current browsers:\n\t\t\t\t\t// http://jsperf.com/for-loop-changing-length/6\n\t\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\t\tif (originalArray) {\n\t\t\t\t\t\t\tlayersArray = layersArray.slice();\n\t\t\t\t\t\t\toriginalArray = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray);\n\t\t\t\t\t\tl = layersArray.length;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t//Not point data, can't be clustered\n\t\t\t\t\tif (!m.getLatLng) {\n\t\t\t\t\t\tnpg.addLayer(m);\n\t\t\t\t\t\tif (!skipLayerAddEvent) {\n\t\t\t\t\t\t\tthis.fire('layeradd', { layer: m });\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.hasLayer(m)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._addLayer(m, this._maxZoom);\n\t\t\t\t\tif (!skipLayerAddEvent) {\n\t\t\t\t\t\tthis.fire('layeradd', { layer: m });\n\t\t\t\t\t}\n\n\t\t\t\t\t//If we just made a cluster of size 2 then we need to remove the other marker from the map (if it is) or we never will\n\t\t\t\t\tif (m.__parent) {\n\t\t\t\t\t\tif (m.__parent.getChildCount() === 2) {\n\t\t\t\t\t\t\tvar markers = m.__parent.getAllChildMarkers(),\n\t\t\t\t\t\t\t otherMarker = markers[0] === m ? markers[1] : markers[0];\n\t\t\t\t\t\t\tfg.removeLayer(otherMarker);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (chunkProgress) {\n\t\t\t\t\t// report progress and time elapsed:\n\t\t\t\t\tchunkProgress(offset, l, (new Date()).getTime() - started);\n\t\t\t\t}\n\n\t\t\t\t// Completed processing all markers.\n\t\t\t\tif (offset === l) {\n\n\t\t\t\t\t// Refresh bounds and weighted positions.\n\t\t\t\t\tthis._topClusterLevel._recalculateBounds();\n\n\t\t\t\t\tthis._refreshClustersIcons();\n\n\t\t\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);\n\t\t\t\t} else {\n\t\t\t\t\tsetTimeout(process, this.options.chunkDelay);\n\t\t\t\t}\n\t\t\t}, this);\n\n\t\t\tprocess();\n\t\t} else {\n\t\t\tvar needsClustering = this._needsClustering;\n\n\t\t\tfor (; offset < l; offset++) {\n\t\t\t\tm = layersArray[offset];\n\n\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\tif (originalArray) {\n\t\t\t\t\t\tlayersArray = layersArray.slice();\n\t\t\t\t\t\toriginalArray = false;\n\t\t\t\t\t}\n\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray);\n\t\t\t\t\tl = layersArray.length;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t//Not point data, can't be clustered\n\t\t\t\tif (!m.getLatLng) {\n\t\t\t\t\tnpg.addLayer(m);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (this.hasLayer(m)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tneedsClustering.push(m);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t},\n\n\t//Takes an array of markers and removes them in bulk\n\tremoveLayers: function (layersArray) {\n\t\tvar i, m,\n\t\t l = layersArray.length,\n\t\t fg = this._featureGroup,\n\t\t npg = this._nonPointGroup,\n\t\t originalArray = true;\n\n\t\tif (!this._map) {\n\t\t\tfor (i = 0; i < l; i++) {\n\t\t\t\tm = layersArray[i];\n\n\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\tif (originalArray) {\n\t\t\t\t\t\tlayersArray = layersArray.slice();\n\t\t\t\t\t\toriginalArray = false;\n\t\t\t\t\t}\n\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray);\n\t\t\t\t\tl = layersArray.length;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tthis._arraySplice(this._needsClustering, m);\n\t\t\t\tnpg.removeLayer(m);\n\t\t\t\tif (this.hasLayer(m)) {\n\t\t\t\t\tthis._needsRemoving.push({ layer: m, latlng: m._latlng });\n\t\t\t\t}\n\t\t\t\tthis.fire('layerremove', { layer: m });\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif (this._unspiderfy) {\n\t\t\tthis._unspiderfy();\n\n\t\t\t// Work on a copy of the array, so that next loop is not affected.\n\t\t\tvar layersArray2 = layersArray.slice(),\n\t\t\t l2 = l;\n\t\t\tfor (i = 0; i < l2; i++) {\n\t\t\t\tm = layersArray2[i];\n\n\t\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\t\tthis._extractNonGroupLayers(m, layersArray2);\n\t\t\t\t\tl2 = layersArray2.length;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tthis._unspiderfyLayer(m);\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < l; i++) {\n\t\t\tm = layersArray[i];\n\n\t\t\t// Group of layers, append children to layersArray and skip.\n\t\t\tif (m instanceof L.LayerGroup) {\n\t\t\t\tif (originalArray) {\n\t\t\t\t\tlayersArray = layersArray.slice();\n\t\t\t\t\toriginalArray = false;\n\t\t\t\t}\n\t\t\t\tthis._extractNonGroupLayers(m, layersArray);\n\t\t\t\tl = layersArray.length;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (!m.__parent) {\n\t\t\t\tnpg.removeLayer(m);\n\t\t\t\tthis.fire('layerremove', { layer: m });\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tthis._removeLayer(m, true, true);\n\t\t\tthis.fire('layerremove', { layer: m });\n\n\t\t\tif (fg.hasLayer(m)) {\n\t\t\t\tfg.removeLayer(m);\n\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\tm.clusterShow();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Refresh bounds and weighted positions.\n\t\tthis._topClusterLevel._recalculateBounds();\n\n\t\tthis._refreshClustersIcons();\n\n\t\t//Fix up the clusters and markers on the map\n\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);\n\n\t\treturn this;\n\t},\n\n\t//Removes all layers from the MarkerClusterGroup\n\tclearLayers: function () {\n\t\t//Need our own special implementation as the LayerGroup one doesn't work for us\n\n\t\t//If we aren't on the map (yet), blow away the markers we know of\n\t\tif (!this._map) {\n\t\t\tthis._needsClustering = [];\n\t\t\tthis._needsRemoving = [];\n\t\t\tdelete this._gridClusters;\n\t\t\tdelete this._gridUnclustered;\n\t\t}\n\n\t\tif (this._noanimationUnspiderfy) {\n\t\t\tthis._noanimationUnspiderfy();\n\t\t}\n\n\t\t//Remove all the visible layers\n\t\tthis._featureGroup.clearLayers();\n\t\tthis._nonPointGroup.clearLayers();\n\n\t\tthis.eachLayer(function (marker) {\n\t\t\tmarker.off(this._childMarkerEventHandlers, this);\n\t\t\tdelete marker.__parent;\n\t\t}, this);\n\n\t\tif (this._map) {\n\t\t\t//Reset _topClusterLevel and the DistanceGrids\n\t\t\tthis._generateInitialClusters();\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t//Override FeatureGroup.getBounds as it doesn't work\n\tgetBounds: function () {\n\t\tvar bounds = new L.LatLngBounds();\n\n\t\tif (this._topClusterLevel) {\n\t\t\tbounds.extend(this._topClusterLevel._bounds);\n\t\t}\n\n\t\tfor (var i = this._needsClustering.length - 1; i >= 0; i--) {\n\t\t\tbounds.extend(this._needsClustering[i].getLatLng());\n\t\t}\n\n\t\tbounds.extend(this._nonPointGroup.getBounds());\n\n\t\treturn bounds;\n\t},\n\n\t//Overrides LayerGroup.eachLayer\n\teachLayer: function (method, context) {\n\t\tvar markers = this._needsClustering.slice(),\n\t\t\tneedsRemoving = this._needsRemoving,\n\t\t\tthisNeedsRemoving, i, j;\n\n\t\tif (this._topClusterLevel) {\n\t\t\tthis._topClusterLevel.getAllChildMarkers(markers);\n\t\t}\n\n\t\tfor (i = markers.length - 1; i >= 0; i--) {\n\t\t\tthisNeedsRemoving = true;\n\n\t\t\tfor (j = needsRemoving.length - 1; j >= 0; j--) {\n\t\t\t\tif (needsRemoving[j].layer === markers[i]) {\n\t\t\t\t\tthisNeedsRemoving = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (thisNeedsRemoving) {\n\t\t\t\tmethod.call(context, markers[i]);\n\t\t\t}\n\t\t}\n\n\t\tthis._nonPointGroup.eachLayer(method, context);\n\t},\n\n\t//Overrides LayerGroup.getLayers\n\tgetLayers: function () {\n\t\tvar layers = [];\n\t\tthis.eachLayer(function (l) {\n\t\t\tlayers.push(l);\n\t\t});\n\t\treturn layers;\n\t},\n\n\t//Overrides LayerGroup.getLayer, WARNING: Really bad performance\n\tgetLayer: function (id) {\n\t\tvar result = null;\n\n\t\tid = parseInt(id, 10);\n\n\t\tthis.eachLayer(function (l) {\n\t\t\tif (L.stamp(l) === id) {\n\t\t\t\tresult = l;\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t},\n\n\t//Returns true if the given layer is in this MarkerClusterGroup\n\thasLayer: function (layer) {\n\t\tif (!layer) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar i, anArray = this._needsClustering;\n\n\t\tfor (i = anArray.length - 1; i >= 0; i--) {\n\t\t\tif (anArray[i] === layer) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\tanArray = this._needsRemoving;\n\t\tfor (i = anArray.length - 1; i >= 0; i--) {\n\t\t\tif (anArray[i].layer === layer) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn !!(layer.__parent && layer.__parent._group === this) || this._nonPointGroup.hasLayer(layer);\n\t},\n\n\t//Zoom down to show the given layer (spiderfying if necessary) then calls the callback\n\tzoomToShowLayer: function (layer, callback) {\n\n\t\tvar map = this._map;\n\n\t\tif (typeof callback !== 'function') {\n\t\t\tcallback = function () {};\n\t\t}\n\n\t\tvar showMarker = function () {\n\t\t\t// Assumes that map.hasLayer checks for direct appearance on map, not recursively calling\n\t\t\t// hasLayer on Layer Groups that are on map (typically not calling this MarkerClusterGroup.hasLayer, which would always return true)\n\t\t\tif ((map.hasLayer(layer) || map.hasLayer(layer.__parent)) && !this._inZoomAnimation) {\n\t\t\t\tthis._map.off('moveend', showMarker, this);\n\t\t\t\tthis.off('animationend', showMarker, this);\n\n\t\t\t\tif (map.hasLayer(layer)) {\n\t\t\t\t\tcallback();\n\t\t\t\t} else if (layer.__parent._icon) {\n\t\t\t\t\tthis.once('spiderfied', callback, this);\n\t\t\t\t\tlayer.__parent.spiderfy();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tif (layer._icon && this._map.getBounds().contains(layer.getLatLng())) {\n\t\t\t//Layer is visible ond on screen, immediate return\n\t\t\tcallback();\n\t\t} else if (layer.__parent._zoom < Math.round(this._map._zoom)) {\n\t\t\t//Layer should be visible at this zoom level. It must not be on screen so just pan over to it\n\t\t\tthis._map.on('moveend', showMarker, this);\n\t\t\tthis._map.panTo(layer.getLatLng());\n\t\t} else {\n\t\t\tthis._map.on('moveend', showMarker, this);\n\t\t\tthis.on('animationend', showMarker, this);\n\t\t\tlayer.__parent.zoomToBounds();\n\t\t}\n\t},\n\n\t//Overrides FeatureGroup.onAdd\n\tonAdd: function (map) {\n\t\tthis._map = map;\n\t\tvar i, l, layer;\n\n\t\tif (!isFinite(this._map.getMaxZoom())) {\n\t\t\tthrow \"Map has no maxZoom specified\";\n\t\t}\n\n\t\tthis._featureGroup.addTo(map);\n\t\tthis._nonPointGroup.addTo(map);\n\n\t\tif (!this._gridClusters) {\n\t\t\tthis._generateInitialClusters();\n\t\t}\n\n\t\tthis._maxLat = map.options.crs.projection.MAX_LATITUDE;\n\n\t\t//Restore all the positions as they are in the MCG before removing them\n\t\tfor (i = 0, l = this._needsRemoving.length; i < l; i++) {\n\t\t\tlayer = this._needsRemoving[i];\n\t\t\tlayer.newlatlng = layer.layer._latlng;\n\t\t\tlayer.layer._latlng = layer.latlng;\n\t\t}\n\t\t//Remove them, then restore their new positions\n\t\tfor (i = 0, l = this._needsRemoving.length; i < l; i++) {\n\t\t\tlayer = this._needsRemoving[i];\n\t\t\tthis._removeLayer(layer.layer, true);\n\t\t\tlayer.layer._latlng = layer.newlatlng;\n\t\t}\n\t\tthis._needsRemoving = [];\n\n\t\t//Remember the current zoom level and bounds\n\t\tthis._zoom = Math.round(this._map._zoom);\n\t\tthis._currentShownBounds = this._getExpandedVisibleBounds();\n\n\t\tthis._map.on('zoomend', this._zoomEnd, this);\n\t\tthis._map.on('moveend', this._moveEnd, this);\n\n\t\tif (this._spiderfierOnAdd) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely\n\t\t\tthis._spiderfierOnAdd();\n\t\t}\n\n\t\tthis._bindEvents();\n\n\t\t//Actually add our markers to the map:\n\t\tl = this._needsClustering;\n\t\tthis._needsClustering = [];\n\t\tthis.addLayers(l, true);\n\t},\n\n\t//Overrides FeatureGroup.onRemove\n\tonRemove: function (map) {\n\t\tmap.off('zoomend', this._zoomEnd, this);\n\t\tmap.off('moveend', this._moveEnd, this);\n\n\t\tthis._unbindEvents();\n\n\t\t//In case we are in a cluster animation\n\t\tthis._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');\n\n\t\tif (this._spiderfierOnRemove) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely\n\t\t\tthis._spiderfierOnRemove();\n\t\t}\n\n\t\tdelete this._maxLat;\n\n\t\t//Clean up all the layers we added to the map\n\t\tthis._hideCoverage();\n\t\tthis._featureGroup.remove();\n\t\tthis._nonPointGroup.remove();\n\n\t\tthis._featureGroup.clearLayers();\n\n\t\tthis._map = null;\n\t},\n\n\tgetVisibleParent: function (marker) {\n\t\tvar vMarker = marker;\n\t\twhile (vMarker && !vMarker._icon) {\n\t\t\tvMarker = vMarker.__parent;\n\t\t}\n\t\treturn vMarker || null;\n\t},\n\n\t//Remove the given object from the given array\n\t_arraySplice: function (anArray, obj) {\n\t\tfor (var i = anArray.length - 1; i >= 0; i--) {\n\t\t\tif (anArray[i] === obj) {\n\t\t\t\tanArray.splice(i, 1);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Removes a marker from all _gridUnclustered zoom levels, starting at the supplied zoom.\n\t * @param marker to be removed from _gridUnclustered.\n\t * @param z integer bottom start zoom level (included)\n\t * @private\n\t */\n\t_removeFromGridUnclustered: function (marker, z) {\n\t\tvar map = this._map,\n\t\t gridUnclustered = this._gridUnclustered,\n\t\t\tminZoom = Math.floor(this._map.getMinZoom());\n\n\t\tfor (; z >= minZoom; z--) {\n\t\t\tif (!gridUnclustered[z].removeObject(marker, map.project(marker.getLatLng(), z))) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t},\n\n\t_childMarkerDragStart: function (e) {\n\t\te.target.__dragStart = e.target._latlng;\n\t},\n\n\t_childMarkerMoved: function (e) {\n\t\tif (!this._ignoreMove && !e.target.__dragStart) {\n\t\t\tvar isPopupOpen = e.target._popup && e.target._popup.isOpen();\n\n\t\t\tthis._moveChild(e.target, e.oldLatLng, e.latlng);\n\n\t\t\tif (isPopupOpen) {\n\t\t\t\te.target.openPopup();\n\t\t\t}\n\t\t}\n\t},\n\n\t_moveChild: function (layer, from, to) {\n\t\tlayer._latlng = from;\n\t\tthis.removeLayer(layer);\n\n\t\tlayer._latlng = to;\n\t\tthis.addLayer(layer);\n\t},\n\n\t_childMarkerDragEnd: function (e) {\n\t\tvar dragStart = e.target.__dragStart;\n\t\tdelete e.target.__dragStart;\n\t\tif (dragStart) {\n\t\t\tthis._moveChild(e.target, dragStart, e.target._latlng);\n\t\t}\t\t\n\t},\n\n\n\t//Internal function for removing a marker from everything.\n\t//dontUpdateMap: set to true if you will handle updating the map manually (for bulk functions)\n\t_removeLayer: function (marker, removeFromDistanceGrid, dontUpdateMap) {\n\t\tvar gridClusters = this._gridClusters,\n\t\t\tgridUnclustered = this._gridUnclustered,\n\t\t\tfg = this._featureGroup,\n\t\t\tmap = this._map,\n\t\t\tminZoom = Math.floor(this._map.getMinZoom());\n\n\t\t//Remove the marker from distance clusters it might be in\n\t\tif (removeFromDistanceGrid) {\n\t\t\tthis._removeFromGridUnclustered(marker, this._maxZoom);\n\t\t}\n\n\t\t//Work our way up the clusters removing them as we go if required\n\t\tvar cluster = marker.__parent,\n\t\t\tmarkers = cluster._markers,\n\t\t\totherMarker;\n\n\t\t//Remove the marker from the immediate parents marker list\n\t\tthis._arraySplice(markers, marker);\n\n\t\twhile (cluster) {\n\t\t\tcluster._childCount--;\n\t\t\tcluster._boundsNeedUpdate = true;\n\n\t\t\tif (cluster._zoom < minZoom) {\n\t\t\t\t//Top level, do nothing\n\t\t\t\tbreak;\n\t\t\t} else if (removeFromDistanceGrid && cluster._childCount <= 1) { //Cluster no longer required\n\t\t\t\t//We need to push the other marker up to the parent\n\t\t\t\totherMarker = cluster._markers[0] === marker ? cluster._markers[1] : cluster._markers[0];\n\n\t\t\t\t//Update distance grid\n\t\t\t\tgridClusters[cluster._zoom].removeObject(cluster, map.project(cluster._cLatLng, cluster._zoom));\n\t\t\t\tgridUnclustered[cluster._zoom].addObject(otherMarker, map.project(otherMarker.getLatLng(), cluster._zoom));\n\n\t\t\t\t//Move otherMarker up to parent\n\t\t\t\tthis._arraySplice(cluster.__parent._childClusters, cluster);\n\t\t\t\tcluster.__parent._markers.push(otherMarker);\n\t\t\t\totherMarker.__parent = cluster.__parent;\n\n\t\t\t\tif (cluster._icon) {\n\t\t\t\t\t//Cluster is currently on the map, need to put the marker on the map instead\n\t\t\t\t\tfg.removeLayer(cluster);\n\t\t\t\t\tif (!dontUpdateMap) {\n\t\t\t\t\t\tfg.addLayer(otherMarker);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcluster._iconNeedsUpdate = true;\n\t\t\t}\n\n\t\t\tcluster = cluster.__parent;\n\t\t}\n\n\t\tdelete marker.__parent;\n\t},\n\n\t_isOrIsParent: function (el, oel) {\n\t\twhile (oel) {\n\t\t\tif (el === oel) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\toel = oel.parentNode;\n\t\t}\n\t\treturn false;\n\t},\n\n\t//Override L.Evented.fire\n\tfire: function (type, data, propagate) {\n\t\tif (data && data.layer instanceof L.MarkerCluster) {\n\t\t\t//Prevent multiple clustermouseover/off events if the icon is made up of stacked divs (Doesn't work in ie <= 8, no relatedTarget)\n\t\t\tif (data.originalEvent && this._isOrIsParent(data.layer._icon, data.originalEvent.relatedTarget)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttype = 'cluster' + type;\n\t\t}\n\n\t\tL.FeatureGroup.prototype.fire.call(this, type, data, propagate);\n\t},\n\n\t//Override L.Evented.listens\n\tlistens: function (type, propagate) {\n\t\treturn L.FeatureGroup.prototype.listens.call(this, type, propagate) || L.FeatureGroup.prototype.listens.call(this, 'cluster' + type, propagate);\n\t},\n\n\t//Default functionality\n\t_defaultIconCreateFunction: function (cluster) {\n\t\tvar childCount = cluster.getChildCount();\n\n\t\tvar c = ' marker-cluster-';\n\t\tif (childCount < 10) {\n\t\t\tc += 'small';\n\t\t} else if (childCount < 100) {\n\t\t\tc += 'medium';\n\t\t} else {\n\t\t\tc += 'large';\n\t\t}\n\n\t\treturn new L.DivIcon({ html: '
' + childCount + '
', className: 'marker-cluster' + c, iconSize: new L.Point(40, 40) });\n\t},\n\n\t_bindEvents: function () {\n\t\tvar map = this._map,\n\t\t spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,\n\t\t showCoverageOnHover = this.options.showCoverageOnHover,\n\t\t zoomToBoundsOnClick = this.options.zoomToBoundsOnClick,\n\t\t spiderfyOnEveryZoom = this.options.spiderfyOnEveryZoom;\n\n\t\t//Zoom on cluster click or spiderfy if we are at the lowest level\n\t\tif (spiderfyOnMaxZoom || zoomToBoundsOnClick || spiderfyOnEveryZoom) {\n\t\t\tthis.on('clusterclick clusterkeypress', this._zoomOrSpiderfy, this);\n\t\t}\n\n\t\t//Show convex hull (boundary) polygon on mouse over\n\t\tif (showCoverageOnHover) {\n\t\t\tthis.on('clustermouseover', this._showCoverage, this);\n\t\t\tthis.on('clustermouseout', this._hideCoverage, this);\n\t\t\tmap.on('zoomend', this._hideCoverage, this);\n\t\t}\n\t},\n\n\t_zoomOrSpiderfy: function (e) {\n\t\tvar cluster = e.layer,\n\t\t bottomCluster = cluster;\n\n\t\tif (e.type === 'clusterkeypress' && e.originalEvent && e.originalEvent.keyCode !== 13) {\n\t\t\treturn;\n\t\t}\n\n\t\twhile (bottomCluster._childClusters.length === 1) {\n\t\t\tbottomCluster = bottomCluster._childClusters[0];\n\t\t}\n\n\t\tif (bottomCluster._zoom === this._maxZoom &&\n\t\t\tbottomCluster._childCount === cluster._childCount &&\n\t\t\tthis.options.spiderfyOnMaxZoom) {\n\n\t\t\t// All child markers are contained in a single cluster from this._maxZoom to this cluster.\n\t\t\tcluster.spiderfy();\n\t\t} else if (this.options.zoomToBoundsOnClick) {\n\t\t\tcluster.zoomToBounds();\n\t\t}\n\n\t\tif (this.options.spiderfyOnEveryZoom) {\n\t\t\tcluster.spiderfy();\n\t\t}\n\n\t\t// Focus the map again for keyboard users.\n\t\tif (e.originalEvent && e.originalEvent.keyCode === 13) {\n\t\t\tthis._map._container.focus();\n\t\t}\n\t},\n\n\t_showCoverage: function (e) {\n\t\tvar map = this._map;\n\t\tif (this._inZoomAnimation) {\n\t\t\treturn;\n\t\t}\n\t\tif (this._shownPolygon) {\n\t\t\tmap.removeLayer(this._shownPolygon);\n\t\t}\n\t\tif (e.layer.getChildCount() > 2 && e.layer !== this._spiderfied) {\n\t\t\tthis._shownPolygon = new L.Polygon(e.layer.getConvexHull(), this.options.polygonOptions);\n\t\t\tmap.addLayer(this._shownPolygon);\n\t\t}\n\t},\n\n\t_hideCoverage: function () {\n\t\tif (this._shownPolygon) {\n\t\t\tthis._map.removeLayer(this._shownPolygon);\n\t\t\tthis._shownPolygon = null;\n\t\t}\n\t},\n\n\t_unbindEvents: function () {\n\t\tvar spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,\n\t\t\tshowCoverageOnHover = this.options.showCoverageOnHover,\n\t\t\tzoomToBoundsOnClick = this.options.zoomToBoundsOnClick,\n\t\t\tspiderfyOnEveryZoom = this.options.spiderfyOnEveryZoom,\n\t\t\tmap = this._map;\n\n\t\tif (spiderfyOnMaxZoom || zoomToBoundsOnClick || spiderfyOnEveryZoom) {\n\t\t\tthis.off('clusterclick clusterkeypress', this._zoomOrSpiderfy, this);\n\t\t}\n\t\tif (showCoverageOnHover) {\n\t\t\tthis.off('clustermouseover', this._showCoverage, this);\n\t\t\tthis.off('clustermouseout', this._hideCoverage, this);\n\t\t\tmap.off('zoomend', this._hideCoverage, this);\n\t\t}\n\t},\n\n\t_zoomEnd: function () {\n\t\tif (!this._map) { //May have been removed from the map by a zoomEnd handler\n\t\t\treturn;\n\t\t}\n\t\tthis._mergeSplitClusters();\n\n\t\tthis._zoom = Math.round(this._map._zoom);\n\t\tthis._currentShownBounds = this._getExpandedVisibleBounds();\n\t},\n\n\t_moveEnd: function () {\n\t\tif (this._inZoomAnimation) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar newBounds = this._getExpandedVisibleBounds();\n\n\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, newBounds);\n\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, Math.round(this._map._zoom), newBounds);\n\n\t\tthis._currentShownBounds = newBounds;\n\t\treturn;\n\t},\n\n\t_generateInitialClusters: function () {\n\t\tvar maxZoom = Math.ceil(this._map.getMaxZoom()),\n\t\t\tminZoom = Math.floor(this._map.getMinZoom()),\n\t\t\tradius = this.options.maxClusterRadius,\n\t\t\tradiusFn = radius;\n\n\t\t//If we just set maxClusterRadius to a single number, we need to create\n\t\t//a simple function to return that number. Otherwise, we just have to\n\t\t//use the function we've passed in.\n\t\tif (typeof radius !== \"function\") {\n\t\t\tradiusFn = function () { return radius; };\n\t\t}\n\n\t\tif (this.options.disableClusteringAtZoom !== null) {\n\t\t\tmaxZoom = this.options.disableClusteringAtZoom - 1;\n\t\t}\n\t\tthis._maxZoom = maxZoom;\n\t\tthis._gridClusters = {};\n\t\tthis._gridUnclustered = {};\n\n\t\t//Set up DistanceGrids for each zoom\n\t\tfor (var zoom = maxZoom; zoom >= minZoom; zoom--) {\n\t\t\tthis._gridClusters[zoom] = new L.DistanceGrid(radiusFn(zoom));\n\t\t\tthis._gridUnclustered[zoom] = new L.DistanceGrid(radiusFn(zoom));\n\t\t}\n\n\t\t// Instantiate the appropriate L.MarkerCluster class (animated or not).\n\t\tthis._topClusterLevel = new this._markerCluster(this, minZoom - 1);\n\t},\n\n\t//Zoom: Zoom to start adding at (Pass this._maxZoom to start at the bottom)\n\t_addLayer: function (layer, zoom) {\n\t\tvar gridClusters = this._gridClusters,\n\t\t gridUnclustered = this._gridUnclustered,\n\t\t\tminZoom = Math.floor(this._map.getMinZoom()),\n\t\t markerPoint, z;\n\n\t\tif (this.options.singleMarkerMode) {\n\t\t\tthis._overrideMarkerIcon(layer);\n\t\t}\n\n\t\tlayer.on(this._childMarkerEventHandlers, this);\n\n\t\t//Find the lowest zoom level to slot this one in\n\t\tfor (; zoom >= minZoom; zoom--) {\n\t\t\tmarkerPoint = this._map.project(layer.getLatLng(), zoom); // calculate pixel position\n\n\t\t\t//Try find a cluster close by\n\t\t\tvar closest = gridClusters[zoom].getNearObject(markerPoint);\n\t\t\tif (closest) {\n\t\t\t\tclosest._addChild(layer);\n\t\t\t\tlayer.__parent = closest;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//Try find a marker close by to form a new cluster with\n\t\t\tclosest = gridUnclustered[zoom].getNearObject(markerPoint);\n\t\t\tif (closest) {\n\t\t\t\tvar parent = closest.__parent;\n\t\t\t\tif (parent) {\n\t\t\t\t\tthis._removeLayer(closest, false);\n\t\t\t\t}\n\n\t\t\t\t//Create new cluster with these 2 in it\n\n\t\t\t\tvar newCluster = new this._markerCluster(this, zoom, closest, layer);\n\t\t\t\tgridClusters[zoom].addObject(newCluster, this._map.project(newCluster._cLatLng, zoom));\n\t\t\t\tclosest.__parent = newCluster;\n\t\t\t\tlayer.__parent = newCluster;\n\n\t\t\t\t//First create any new intermediate parent clusters that don't exist\n\t\t\t\tvar lastParent = newCluster;\n\t\t\t\tfor (z = zoom - 1; z > parent._zoom; z--) {\n\t\t\t\t\tlastParent = new this._markerCluster(this, z, lastParent);\n\t\t\t\t\tgridClusters[z].addObject(lastParent, this._map.project(closest.getLatLng(), z));\n\t\t\t\t}\n\t\t\t\tparent._addChild(lastParent);\n\n\t\t\t\t//Remove closest from this zoom level and any above that it is in, replace with newCluster\n\t\t\t\tthis._removeFromGridUnclustered(closest, zoom);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//Didn't manage to cluster in at this zoom, record us as a marker here and continue upwards\n\t\t\tgridUnclustered[zoom].addObject(layer, markerPoint);\n\t\t}\n\n\t\t//Didn't get in anything, add us to the top\n\t\tthis._topClusterLevel._addChild(layer);\n\t\tlayer.__parent = this._topClusterLevel;\n\t\treturn;\n\t},\n\n\t/**\n\t * Refreshes the icon of all \"dirty\" visible clusters.\n\t * Non-visible \"dirty\" clusters will be updated when they are added to the map.\n\t * @private\n\t */\n\t_refreshClustersIcons: function () {\n\t\tthis._featureGroup.eachLayer(function (c) {\n\t\t\tif (c instanceof L.MarkerCluster && c._iconNeedsUpdate) {\n\t\t\t\tc._updateIcon();\n\t\t\t}\n\t\t});\n\t},\n\n\t//Enqueue code to fire after the marker expand/contract has happened\n\t_enqueue: function (fn) {\n\t\tthis._queue.push(fn);\n\t\tif (!this._queueTimeout) {\n\t\t\tthis._queueTimeout = setTimeout(L.bind(this._processQueue, this), 300);\n\t\t}\n\t},\n\t_processQueue: function () {\n\t\tfor (var i = 0; i < this._queue.length; i++) {\n\t\t\tthis._queue[i].call(this);\n\t\t}\n\t\tthis._queue.length = 0;\n\t\tclearTimeout(this._queueTimeout);\n\t\tthis._queueTimeout = null;\n\t},\n\n\t//Merge and split any existing clusters that are too big or small\n\t_mergeSplitClusters: function () {\n\t\tvar mapZoom = Math.round(this._map._zoom);\n\n\t\t//In case we are starting to split before the animation finished\n\t\tthis._processQueue();\n\n\t\tif (this._zoom < mapZoom && this._currentShownBounds.intersects(this._getExpandedVisibleBounds())) { //Zoom in, split\n\t\t\tthis._animationStart();\n\t\t\t//Remove clusters now off screen\n\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, this._getExpandedVisibleBounds());\n\n\t\t\tthis._animationZoomIn(this._zoom, mapZoom);\n\n\t\t} else if (this._zoom > mapZoom) { //Zoom out, merge\n\t\t\tthis._animationStart();\n\n\t\t\tthis._animationZoomOut(this._zoom, mapZoom);\n\t\t} else {\n\t\t\tthis._moveEnd();\n\t\t}\n\t},\n\n\t//Gets the maps visible bounds expanded in each direction by the size of the screen (so the user cannot see an area we do not cover in one pan)\n\t_getExpandedVisibleBounds: function () {\n\t\tif (!this.options.removeOutsideVisibleBounds) {\n\t\t\treturn this._mapBoundsInfinite;\n\t\t} else if (L.Browser.mobile) {\n\t\t\treturn this._checkBoundsMaxLat(this._map.getBounds());\n\t\t}\n\n\t\treturn this._checkBoundsMaxLat(this._map.getBounds().pad(1)); // Padding expands the bounds by its own dimensions but scaled with the given factor.\n\t},\n\n\t/**\n\t * Expands the latitude to Infinity (or -Infinity) if the input bounds reach the map projection maximum defined latitude\n\t * (in the case of Web/Spherical Mercator, it is 85.0511287798 / see https://en.wikipedia.org/wiki/Web_Mercator#Formulas).\n\t * Otherwise, the removeOutsideVisibleBounds option will remove markers beyond that limit, whereas the same markers without\n\t * this option (or outside MCG) will have their position floored (ceiled) by the projection and rendered at that limit,\n\t * making the user think that MCG \"eats\" them and never displays them again.\n\t * @param bounds L.LatLngBounds\n\t * @returns {L.LatLngBounds}\n\t * @private\n\t */\n\t_checkBoundsMaxLat: function (bounds) {\n\t\tvar maxLat = this._maxLat;\n\n\t\tif (maxLat !== undefined) {\n\t\t\tif (bounds.getNorth() >= maxLat) {\n\t\t\t\tbounds._northEast.lat = Infinity;\n\t\t\t}\n\t\t\tif (bounds.getSouth() <= -maxLat) {\n\t\t\t\tbounds._southWest.lat = -Infinity;\n\t\t\t}\n\t\t}\n\n\t\treturn bounds;\n\t},\n\n\t//Shared animation code\n\t_animationAddLayerNonAnimated: function (layer, newCluster) {\n\t\tif (newCluster === layer) {\n\t\t\tthis._featureGroup.addLayer(layer);\n\t\t} else if (newCluster._childCount === 2) {\n\t\t\tnewCluster._addToMap();\n\n\t\t\tvar markers = newCluster.getAllChildMarkers();\n\t\t\tthis._featureGroup.removeLayer(markers[0]);\n\t\t\tthis._featureGroup.removeLayer(markers[1]);\n\t\t} else {\n\t\t\tnewCluster._updateIcon();\n\t\t}\n\t},\n\n\t/**\n\t * Extracts individual (i.e. non-group) layers from a Layer Group.\n\t * @param group to extract layers from.\n\t * @param output {Array} in which to store the extracted layers.\n\t * @returns {*|Array}\n\t * @private\n\t */\n\t_extractNonGroupLayers: function (group, output) {\n\t\tvar layers = group.getLayers(),\n\t\t i = 0,\n\t\t layer;\n\n\t\toutput = output || [];\n\n\t\tfor (; i < layers.length; i++) {\n\t\t\tlayer = layers[i];\n\n\t\t\tif (layer instanceof L.LayerGroup) {\n\t\t\t\tthis._extractNonGroupLayers(layer, output);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\toutput.push(layer);\n\t\t}\n\n\t\treturn output;\n\t},\n\n\t/**\n\t * Implements the singleMarkerMode option.\n\t * @param layer Marker to re-style using the Clusters iconCreateFunction.\n\t * @returns {L.Icon} The newly created icon.\n\t * @private\n\t */\n\t_overrideMarkerIcon: function (layer) {\n\t\tvar icon = layer.options.icon = this.options.iconCreateFunction({\n\t\t\tgetChildCount: function () {\n\t\t\t\treturn 1;\n\t\t\t},\n\t\t\tgetAllChildMarkers: function () {\n\t\t\t\treturn [layer];\n\t\t\t}\n\t\t});\n\n\t\treturn icon;\n\t}\n});\n\n// Constant bounds used in case option \"removeOutsideVisibleBounds\" is set to false.\nL.MarkerClusterGroup.include({\n\t_mapBoundsInfinite: new L.LatLngBounds(new L.LatLng(-Infinity, -Infinity), new L.LatLng(Infinity, Infinity))\n});\n\nL.MarkerClusterGroup.include({\n\t_noAnimation: {\n\t\t//Non Animated versions of everything\n\t\t_animationStart: function () {\n\t\t\t//Do nothing...\n\t\t},\n\t\t_animationZoomIn: function (previousZoomLevel, newZoomLevel) {\n\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel);\n\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());\n\n\t\t\t//We didn't actually animate, but we use this event to mean \"clustering animations have finished\"\n\t\t\tthis.fire('animationend');\n\t\t},\n\t\t_animationZoomOut: function (previousZoomLevel, newZoomLevel) {\n\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel);\n\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());\n\n\t\t\t//We didn't actually animate, but we use this event to mean \"clustering animations have finished\"\n\t\t\tthis.fire('animationend');\n\t\t},\n\t\t_animationAddLayer: function (layer, newCluster) {\n\t\t\tthis._animationAddLayerNonAnimated(layer, newCluster);\n\t\t}\n\t},\n\n\t_withAnimation: {\n\t\t//Animated versions here\n\t\t_animationStart: function () {\n\t\t\tthis._map._mapPane.className += ' leaflet-cluster-anim';\n\t\t\tthis._inZoomAnimation++;\n\t\t},\n\n\t\t_animationZoomIn: function (previousZoomLevel, newZoomLevel) {\n\t\t\tvar bounds = this._getExpandedVisibleBounds(),\n\t\t\t fg = this._featureGroup,\n\t\t\t\tminZoom = Math.floor(this._map.getMinZoom()),\n\t\t\t i;\n\n\t\t\tthis._ignoreMove = true;\n\n\t\t\t//Add all children of current clusters to map and remove those clusters from map\n\t\t\tthis._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) {\n\t\t\t\tvar startPos = c._latlng,\n\t\t\t\t markers = c._markers,\n\t\t\t\t m;\n\n\t\t\t\tif (!bounds.contains(startPos)) {\n\t\t\t\t\tstartPos = null;\n\t\t\t\t}\n\n\t\t\t\tif (c._isSingleParent() && previousZoomLevel + 1 === newZoomLevel) { //Immediately add the new child and remove us\n\t\t\t\t\tfg.removeLayer(c);\n\t\t\t\t\tc._recursivelyAddChildrenToMap(null, newZoomLevel, bounds);\n\t\t\t\t} else {\n\t\t\t\t\t//Fade out old cluster\n\t\t\t\t\tc.clusterHide();\n\t\t\t\t\tc._recursivelyAddChildrenToMap(startPos, newZoomLevel, bounds);\n\t\t\t\t}\n\n\t\t\t\t//Remove all markers that aren't visible any more\n\t\t\t\t//TODO: Do we actually need to do this on the higher levels too?\n\t\t\t\tfor (i = markers.length - 1; i >= 0; i--) {\n\t\t\t\t\tm = markers[i];\n\t\t\t\t\tif (!bounds.contains(m._latlng)) {\n\t\t\t\t\t\tfg.removeLayer(m);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\tthis._forceLayout();\n\n\t\t\t//Update opacities\n\t\t\tthis._topClusterLevel._recursivelyBecomeVisible(bounds, newZoomLevel);\n\t\t\t//TODO Maybe? Update markers in _recursivelyBecomeVisible\n\t\t\tfg.eachLayer(function (n) {\n\t\t\t\tif (!(n instanceof L.MarkerCluster) && n._icon) {\n\t\t\t\t\tn.clusterShow();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//update the positions of the just added clusters/markers\n\t\t\tthis._topClusterLevel._recursively(bounds, previousZoomLevel, newZoomLevel, function (c) {\n\t\t\t\tc._recursivelyRestoreChildPositions(newZoomLevel);\n\t\t\t});\n\n\t\t\tthis._ignoreMove = false;\n\n\t\t\t//Remove the old clusters and close the zoom animation\n\t\t\tthis._enqueue(function () {\n\t\t\t\t//update the positions of the just added clusters/markers\n\t\t\t\tthis._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) {\n\t\t\t\t\tfg.removeLayer(c);\n\t\t\t\t\tc.clusterShow();\n\t\t\t\t});\n\n\t\t\t\tthis._animationEnd();\n\t\t\t});\n\t\t},\n\n\t\t_animationZoomOut: function (previousZoomLevel, newZoomLevel) {\n\t\t\tthis._animationZoomOutSingle(this._topClusterLevel, previousZoomLevel - 1, newZoomLevel);\n\n\t\t\t//Need to add markers for those that weren't on the map before but are now\n\t\t\tthis._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());\n\t\t\t//Remove markers that were on the map before but won't be now\n\t\t\tthis._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel, this._getExpandedVisibleBounds());\n\t\t},\n\n\t\t_animationAddLayer: function (layer, newCluster) {\n\t\t\tvar me = this,\n\t\t\t fg = this._featureGroup;\n\n\t\t\tfg.addLayer(layer);\n\t\t\tif (newCluster !== layer) {\n\t\t\t\tif (newCluster._childCount > 2) { //Was already a cluster\n\n\t\t\t\t\tnewCluster._updateIcon();\n\t\t\t\t\tthis._forceLayout();\n\t\t\t\t\tthis._animationStart();\n\n\t\t\t\t\tlayer._setPos(this._map.latLngToLayerPoint(newCluster.getLatLng()));\n\t\t\t\t\tlayer.clusterHide();\n\n\t\t\t\t\tthis._enqueue(function () {\n\t\t\t\t\t\tfg.removeLayer(layer);\n\t\t\t\t\t\tlayer.clusterShow();\n\n\t\t\t\t\t\tme._animationEnd();\n\t\t\t\t\t});\n\n\t\t\t\t} else { //Just became a cluster\n\t\t\t\t\tthis._forceLayout();\n\n\t\t\t\t\tme._animationStart();\n\t\t\t\t\tme._animationZoomOutSingle(newCluster, this._map.getMaxZoom(), this._zoom);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Private methods for animated versions.\n\t_animationZoomOutSingle: function (cluster, previousZoomLevel, newZoomLevel) {\n\t\tvar bounds = this._getExpandedVisibleBounds(),\n\t\t\tminZoom = Math.floor(this._map.getMinZoom());\n\n\t\t//Animate all of the markers in the clusters to move to their cluster center point\n\t\tcluster._recursivelyAnimateChildrenInAndAddSelfToMap(bounds, minZoom, previousZoomLevel + 1, newZoomLevel);\n\n\t\tvar me = this;\n\n\t\t//Update the opacity (If we immediately set it they won't animate)\n\t\tthis._forceLayout();\n\t\tcluster._recursivelyBecomeVisible(bounds, newZoomLevel);\n\n\t\t//TODO: Maybe use the transition timing stuff to make this more reliable\n\t\t//When the animations are done, tidy up\n\t\tthis._enqueue(function () {\n\n\t\t\t//This cluster stopped being a cluster before the timeout fired\n\t\t\tif (cluster._childCount === 1) {\n\t\t\t\tvar m = cluster._markers[0];\n\t\t\t\t//If we were in a cluster animation at the time then the opacity and position of our child could be wrong now, so fix it\n\t\t\t\tthis._ignoreMove = true;\n\t\t\t\tm.setLatLng(m.getLatLng());\n\t\t\t\tthis._ignoreMove = false;\n\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\tm.clusterShow();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcluster._recursively(bounds, newZoomLevel, minZoom, function (c) {\n\t\t\t\t\tc._recursivelyRemoveChildrenFromMap(bounds, minZoom, previousZoomLevel + 1);\n\t\t\t\t});\n\t\t\t}\n\t\t\tme._animationEnd();\n\t\t});\n\t},\n\n\t_animationEnd: function () {\n\t\tif (this._map) {\n\t\t\tthis._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');\n\t\t}\n\t\tthis._inZoomAnimation--;\n\t\tthis.fire('animationend');\n\t},\n\n\t//Force a browser layout of stuff in the map\n\t// Should apply the current opacity and location to all elements so we can update them again for an animation\n\t_forceLayout: function () {\n\t\t//In my testing this works, infact offsetWidth of any element seems to work.\n\t\t//Could loop all this._layers and do this for each _icon if it stops working\n\n\t\tL.Util.falseFn(document.body.offsetWidth);\n\t}\n});\n\nL.markerClusterGroup = function (options) {\n\treturn new L.MarkerClusterGroup(options);\n};\n","export var MarkerCluster = L.MarkerCluster = L.Marker.extend({\n\toptions: L.Icon.prototype.options,\n\n\tinitialize: function (group, zoom, a, b) {\n\n\t\tL.Marker.prototype.initialize.call(this, a ? (a._cLatLng || a.getLatLng()) : new L.LatLng(0, 0),\n { icon: this, pane: group.options.clusterPane });\n\n\t\tthis._group = group;\n\t\tthis._zoom = zoom;\n\n\t\tthis._markers = [];\n\t\tthis._childClusters = [];\n\t\tthis._childCount = 0;\n\t\tthis._iconNeedsUpdate = true;\n\t\tthis._boundsNeedUpdate = true;\n\n\t\tthis._bounds = new L.LatLngBounds();\n\n\t\tif (a) {\n\t\t\tthis._addChild(a);\n\t\t}\n\t\tif (b) {\n\t\t\tthis._addChild(b);\n\t\t}\n\t},\n\n\t//Recursively retrieve all child markers of this cluster\n\tgetAllChildMarkers: function (storageArray, ignoreDraggedMarker) {\n\t\tstorageArray = storageArray || [];\n\n\t\tfor (var i = this._childClusters.length - 1; i >= 0; i--) {\n\t\t\tthis._childClusters[i].getAllChildMarkers(storageArray, ignoreDraggedMarker);\n\t\t}\n\n\t\tfor (var j = this._markers.length - 1; j >= 0; j--) {\n\t\t\tif (ignoreDraggedMarker && this._markers[j].__dragStart) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tstorageArray.push(this._markers[j]);\n\t\t}\n\n\t\treturn storageArray;\n\t},\n\n\t//Returns the count of how many child markers we have\n\tgetChildCount: function () {\n\t\treturn this._childCount;\n\t},\n\n\t//Zoom to the minimum of showing all of the child markers, or the extents of this cluster\n\tzoomToBounds: function (fitBoundsOptions) {\n\t\tvar childClusters = this._childClusters.slice(),\n\t\t\tmap = this._group._map,\n\t\t\tboundsZoom = map.getBoundsZoom(this._bounds),\n\t\t\tzoom = this._zoom + 1,\n\t\t\tmapZoom = map.getZoom(),\n\t\t\ti;\n\n\t\t//calculate how far we need to zoom down to see all of the markers\n\t\twhile (childClusters.length > 0 && boundsZoom > zoom) {\n\t\t\tzoom++;\n\t\t\tvar newClusters = [];\n\t\t\tfor (i = 0; i < childClusters.length; i++) {\n\t\t\t\tnewClusters = newClusters.concat(childClusters[i]._childClusters);\n\t\t\t}\n\t\t\tchildClusters = newClusters;\n\t\t}\n\n\t\tif (boundsZoom > zoom) {\n\t\t\tthis._group._map.setView(this._latlng, zoom);\n\t\t} else if (boundsZoom <= mapZoom) { //If fitBounds wouldn't zoom us down, zoom us down instead\n\t\t\tthis._group._map.setView(this._latlng, mapZoom + 1);\n\t\t} else {\n\t\t\tthis._group._map.fitBounds(this._bounds, fitBoundsOptions);\n\t\t}\n\t},\n\n\tgetBounds: function () {\n\t\tvar bounds = new L.LatLngBounds();\n\t\tbounds.extend(this._bounds);\n\t\treturn bounds;\n\t},\n\n\t_updateIcon: function () {\n\t\tthis._iconNeedsUpdate = true;\n\t\tif (this._icon) {\n\t\t\tthis.setIcon(this);\n\t\t}\n\t},\n\n\t//Cludge for Icon, we pretend to be an icon for performance\n\tcreateIcon: function () {\n\t\tif (this._iconNeedsUpdate) {\n\t\t\tthis._iconObj = this._group.options.iconCreateFunction(this);\n\t\t\tthis._iconNeedsUpdate = false;\n\t\t}\n\t\treturn this._iconObj.createIcon();\n\t},\n\tcreateShadow: function () {\n\t\treturn this._iconObj.createShadow();\n\t},\n\n\n\t_addChild: function (new1, isNotificationFromChild) {\n\n\t\tthis._iconNeedsUpdate = true;\n\n\t\tthis._boundsNeedUpdate = true;\n\t\tthis._setClusterCenter(new1);\n\n\t\tif (new1 instanceof L.MarkerCluster) {\n\t\t\tif (!isNotificationFromChild) {\n\t\t\t\tthis._childClusters.push(new1);\n\t\t\t\tnew1.__parent = this;\n\t\t\t}\n\t\t\tthis._childCount += new1._childCount;\n\t\t} else {\n\t\t\tif (!isNotificationFromChild) {\n\t\t\t\tthis._markers.push(new1);\n\t\t\t}\n\t\t\tthis._childCount++;\n\t\t}\n\n\t\tif (this.__parent) {\n\t\t\tthis.__parent._addChild(new1, true);\n\t\t}\n\t},\n\n\t/**\n\t * Makes sure the cluster center is set. If not, uses the child center if it is a cluster, or the marker position.\n\t * @param child L.MarkerCluster|L.Marker that will be used as cluster center if not defined yet.\n\t * @private\n\t */\n\t_setClusterCenter: function (child) {\n\t\tif (!this._cLatLng) {\n\t\t\t// when clustering, take position of the first point as the cluster center\n\t\t\tthis._cLatLng = child._cLatLng || child._latlng;\n\t\t}\n\t},\n\n\t/**\n\t * Assigns impossible bounding values so that the next extend entirely determines the new bounds.\n\t * This method avoids having to trash the previous L.LatLngBounds object and to create a new one, which is much slower for this class.\n\t * As long as the bounds are not extended, most other methods would probably fail, as they would with bounds initialized but not extended.\n\t * @private\n\t */\n\t_resetBounds: function () {\n\t\tvar bounds = this._bounds;\n\n\t\tif (bounds._southWest) {\n\t\t\tbounds._southWest.lat = Infinity;\n\t\t\tbounds._southWest.lng = Infinity;\n\t\t}\n\t\tif (bounds._northEast) {\n\t\t\tbounds._northEast.lat = -Infinity;\n\t\t\tbounds._northEast.lng = -Infinity;\n\t\t}\n\t},\n\n\t_recalculateBounds: function () {\n\t\tvar markers = this._markers,\n\t\t childClusters = this._childClusters,\n\t\t latSum = 0,\n\t\t lngSum = 0,\n\t\t totalCount = this._childCount,\n\t\t i, child, childLatLng, childCount;\n\n\t\t// Case where all markers are removed from the map and we are left with just an empty _topClusterLevel.\n\t\tif (totalCount === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Reset rather than creating a new object, for performance.\n\t\tthis._resetBounds();\n\n\t\t// Child markers.\n\t\tfor (i = 0; i < markers.length; i++) {\n\t\t\tchildLatLng = markers[i]._latlng;\n\n\t\t\tthis._bounds.extend(childLatLng);\n\n\t\t\tlatSum += childLatLng.lat;\n\t\t\tlngSum += childLatLng.lng;\n\t\t}\n\n\t\t// Child clusters.\n\t\tfor (i = 0; i < childClusters.length; i++) {\n\t\t\tchild = childClusters[i];\n\n\t\t\t// Re-compute child bounds and weighted position first if necessary.\n\t\t\tif (child._boundsNeedUpdate) {\n\t\t\t\tchild._recalculateBounds();\n\t\t\t}\n\n\t\t\tthis._bounds.extend(child._bounds);\n\n\t\t\tchildLatLng = child._wLatLng;\n\t\t\tchildCount = child._childCount;\n\n\t\t\tlatSum += childLatLng.lat * childCount;\n\t\t\tlngSum += childLatLng.lng * childCount;\n\t\t}\n\n\t\tthis._latlng = this._wLatLng = new L.LatLng(latSum / totalCount, lngSum / totalCount);\n\n\t\t// Reset dirty flag.\n\t\tthis._boundsNeedUpdate = false;\n\t},\n\n\t//Set our markers position as given and add it to the map\n\t_addToMap: function (startPos) {\n\t\tif (startPos) {\n\t\t\tthis._backupLatlng = this._latlng;\n\t\t\tthis.setLatLng(startPos);\n\t\t}\n\t\tthis._group._featureGroup.addLayer(this);\n\t},\n\n\t_recursivelyAnimateChildrenIn: function (bounds, center, maxZoom) {\n\t\tthis._recursively(bounds, this._group._map.getMinZoom(), maxZoom - 1,\n\t\t\tfunction (c) {\n\t\t\t\tvar markers = c._markers,\n\t\t\t\t\ti, m;\n\t\t\t\tfor (i = markers.length - 1; i >= 0; i--) {\n\t\t\t\t\tm = markers[i];\n\n\t\t\t\t\t//Only do it if the icon is still on the map\n\t\t\t\t\tif (m._icon) {\n\t\t\t\t\t\tm._setPos(center);\n\t\t\t\t\t\tm.clusterHide();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunction (c) {\n\t\t\t\tvar childClusters = c._childClusters,\n\t\t\t\t\tj, cm;\n\t\t\t\tfor (j = childClusters.length - 1; j >= 0; j--) {\n\t\t\t\t\tcm = childClusters[j];\n\t\t\t\t\tif (cm._icon) {\n\t\t\t\t\t\tcm._setPos(center);\n\t\t\t\t\t\tcm.clusterHide();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t},\n\n\t_recursivelyAnimateChildrenInAndAddSelfToMap: function (bounds, mapMinZoom, previousZoomLevel, newZoomLevel) {\n\t\tthis._recursively(bounds, newZoomLevel, mapMinZoom,\n\t\t\tfunction (c) {\n\t\t\t\tc._recursivelyAnimateChildrenIn(bounds, c._group._map.latLngToLayerPoint(c.getLatLng()).round(), previousZoomLevel);\n\n\t\t\t\t//TODO: depthToAnimateIn affects _isSingleParent, if there is a multizoom we may/may not be.\n\t\t\t\t//As a hack we only do a animation free zoom on a single level zoom, if someone does multiple levels then we always animate\n\t\t\t\tif (c._isSingleParent() && previousZoomLevel - 1 === newZoomLevel) {\n\t\t\t\t\tc.clusterShow();\n\t\t\t\t\tc._recursivelyRemoveChildrenFromMap(bounds, mapMinZoom, previousZoomLevel); //Immediately remove our children as we are replacing them. TODO previousBounds not bounds\n\t\t\t\t} else {\n\t\t\t\t\tc.clusterHide();\n\t\t\t\t}\n\n\t\t\t\tc._addToMap();\n\t\t\t}\n\t\t);\n\t},\n\n\t_recursivelyBecomeVisible: function (bounds, zoomLevel) {\n\t\tthis._recursively(bounds, this._group._map.getMinZoom(), zoomLevel, null, function (c) {\n\t\t\tc.clusterShow();\n\t\t});\n\t},\n\n\t_recursivelyAddChildrenToMap: function (startPos, zoomLevel, bounds) {\n\t\tthis._recursively(bounds, this._group._map.getMinZoom() - 1, zoomLevel,\n\t\t\tfunction (c) {\n\t\t\t\tif (zoomLevel === c._zoom) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//Add our child markers at startPos (so they can be animated out)\n\t\t\t\tfor (var i = c._markers.length - 1; i >= 0; i--) {\n\t\t\t\t\tvar nm = c._markers[i];\n\n\t\t\t\t\tif (!bounds.contains(nm._latlng)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (startPos) {\n\t\t\t\t\t\tnm._backupLatlng = nm.getLatLng();\n\n\t\t\t\t\t\tnm.setLatLng(startPos);\n\t\t\t\t\t\tif (nm.clusterHide) {\n\t\t\t\t\t\t\tnm.clusterHide();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tc._group._featureGroup.addLayer(nm);\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunction (c) {\n\t\t\t\tc._addToMap(startPos);\n\t\t\t}\n\t\t);\n\t},\n\n\t_recursivelyRestoreChildPositions: function (zoomLevel) {\n\t\t//Fix positions of child markers\n\t\tfor (var i = this._markers.length - 1; i >= 0; i--) {\n\t\t\tvar nm = this._markers[i];\n\t\t\tif (nm._backupLatlng) {\n\t\t\t\tnm.setLatLng(nm._backupLatlng);\n\t\t\t\tdelete nm._backupLatlng;\n\t\t\t}\n\t\t}\n\n\t\tif (zoomLevel - 1 === this._zoom) {\n\t\t\t//Reposition child clusters\n\t\t\tfor (var j = this._childClusters.length - 1; j >= 0; j--) {\n\t\t\t\tthis._childClusters[j]._restorePosition();\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var k = this._childClusters.length - 1; k >= 0; k--) {\n\t\t\t\tthis._childClusters[k]._recursivelyRestoreChildPositions(zoomLevel);\n\t\t\t}\n\t\t}\n\t},\n\n\t_restorePosition: function () {\n\t\tif (this._backupLatlng) {\n\t\t\tthis.setLatLng(this._backupLatlng);\n\t\t\tdelete this._backupLatlng;\n\t\t}\n\t},\n\n\t//exceptBounds: If set, don't remove any markers/clusters in it\n\t_recursivelyRemoveChildrenFromMap: function (previousBounds, mapMinZoom, zoomLevel, exceptBounds) {\n\t\tvar m, i;\n\t\tthis._recursively(previousBounds, mapMinZoom - 1, zoomLevel - 1,\n\t\t\tfunction (c) {\n\t\t\t\t//Remove markers at every level\n\t\t\t\tfor (i = c._markers.length - 1; i >= 0; i--) {\n\t\t\t\t\tm = c._markers[i];\n\t\t\t\t\tif (!exceptBounds || !exceptBounds.contains(m._latlng)) {\n\t\t\t\t\t\tc._group._featureGroup.removeLayer(m);\n\t\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunction (c) {\n\t\t\t\t//Remove child clusters at just the bottom level\n\t\t\t\tfor (i = c._childClusters.length - 1; i >= 0; i--) {\n\t\t\t\t\tm = c._childClusters[i];\n\t\t\t\t\tif (!exceptBounds || !exceptBounds.contains(m._latlng)) {\n\t\t\t\t\t\tc._group._featureGroup.removeLayer(m);\n\t\t\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\t\t\tm.clusterShow();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t},\n\n\t//Run the given functions recursively to this and child clusters\n\t// boundsToApplyTo: a L.LatLngBounds representing the bounds of what clusters to recurse in to\n\t// zoomLevelToStart: zoom level to start running functions (inclusive)\n\t// zoomLevelToStop: zoom level to stop running functions (inclusive)\n\t// runAtEveryLevel: function that takes an L.MarkerCluster as an argument that should be applied on every level\n\t// runAtBottomLevel: function that takes an L.MarkerCluster as an argument that should be applied at only the bottom level\n\t_recursively: function (boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel) {\n\t\tvar childClusters = this._childClusters,\n\t\t zoom = this._zoom,\n\t\t i, c;\n\n\t\tif (zoomLevelToStart <= zoom) {\n\t\t\tif (runAtEveryLevel) {\n\t\t\t\trunAtEveryLevel(this);\n\t\t\t}\n\t\t\tif (runAtBottomLevel && zoom === zoomLevelToStop) {\n\t\t\t\trunAtBottomLevel(this);\n\t\t\t}\n\t\t}\n\n\t\tif (zoom < zoomLevelToStart || zoom < zoomLevelToStop) {\n\t\t\tfor (i = childClusters.length - 1; i >= 0; i--) {\n\t\t\t\tc = childClusters[i];\n\t\t\t\tif (c._boundsNeedUpdate) {\n\t\t\t\t\tc._recalculateBounds();\n\t\t\t\t}\n\t\t\t\tif (boundsToApplyTo.intersects(c._bounds)) {\n\t\t\t\t\tc._recursively(boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t//Returns true if we are the parent of only one cluster and that cluster is the same as us\n\t_isSingleParent: function () {\n\t\t//Don't need to check this._markers as the rest won't work if there are any\n\t\treturn this._childClusters.length > 0 && this._childClusters[0]._childCount === this._childCount;\n\t}\n});\n\n","/*\n* Extends L.Marker to include two extra methods: clusterHide and clusterShow.\n* \n* They work as setOpacity(0) and setOpacity(1) respectively, but\n* don't overwrite the options.opacity\n* \n*/\n\nL.Marker.include({\n\tclusterHide: function () {\n\t\tvar backup = this.options.opacity;\n\t\tthis.setOpacity(0);\n\t\tthis.options.opacity = backup;\n\t\treturn this;\n\t},\n\t\n\tclusterShow: function () {\n\t\treturn this.setOpacity(this.options.opacity);\n\t}\n});\n\n\n","\nL.DistanceGrid = function (cellSize) {\n\tthis._cellSize = cellSize;\n\tthis._sqCellSize = cellSize * cellSize;\n\tthis._grid = {};\n\tthis._objectPoint = { };\n};\n\nL.DistanceGrid.prototype = {\n\n\taddObject: function (obj, point) {\n\t\tvar x = this._getCoord(point.x),\n\t\t y = this._getCoord(point.y),\n\t\t grid = this._grid,\n\t\t row = grid[y] = grid[y] || {},\n\t\t cell = row[x] = row[x] || [],\n\t\t stamp = L.Util.stamp(obj);\n\n\t\tthis._objectPoint[stamp] = point;\n\n\t\tcell.push(obj);\n\t},\n\n\tupdateObject: function (obj, point) {\n\t\tthis.removeObject(obj);\n\t\tthis.addObject(obj, point);\n\t},\n\n\t//Returns true if the object was found\n\tremoveObject: function (obj, point) {\n\t\tvar x = this._getCoord(point.x),\n\t\t y = this._getCoord(point.y),\n\t\t grid = this._grid,\n\t\t row = grid[y] = grid[y] || {},\n\t\t cell = row[x] = row[x] || [],\n\t\t i, len;\n\n\t\tdelete this._objectPoint[L.Util.stamp(obj)];\n\n\t\tfor (i = 0, len = cell.length; i < len; i++) {\n\t\t\tif (cell[i] === obj) {\n\n\t\t\t\tcell.splice(i, 1);\n\n\t\t\t\tif (len === 1) {\n\t\t\t\t\tdelete row[x];\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t},\n\n\teachObject: function (fn, context) {\n\t\tvar i, j, k, len, row, cell, removed,\n\t\t grid = this._grid;\n\n\t\tfor (i in grid) {\n\t\t\trow = grid[i];\n\n\t\t\tfor (j in row) {\n\t\t\t\tcell = row[j];\n\n\t\t\t\tfor (k = 0, len = cell.length; k < len; k++) {\n\t\t\t\t\tremoved = fn.call(context, cell[k]);\n\t\t\t\t\tif (removed) {\n\t\t\t\t\t\tk--;\n\t\t\t\t\t\tlen--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tgetNearObject: function (point) {\n\t\tvar x = this._getCoord(point.x),\n\t\t y = this._getCoord(point.y),\n\t\t i, j, k, row, cell, len, obj, dist,\n\t\t objectPoint = this._objectPoint,\n\t\t closestDistSq = this._sqCellSize,\n\t\t closest = null;\n\n\t\tfor (i = y - 1; i <= y + 1; i++) {\n\t\t\trow = this._grid[i];\n\t\t\tif (row) {\n\n\t\t\t\tfor (j = x - 1; j <= x + 1; j++) {\n\t\t\t\t\tcell = row[j];\n\t\t\t\t\tif (cell) {\n\n\t\t\t\t\t\tfor (k = 0, len = cell.length; k < len; k++) {\n\t\t\t\t\t\t\tobj = cell[k];\n\t\t\t\t\t\t\tdist = this._sqDist(objectPoint[L.Util.stamp(obj)], point);\n\t\t\t\t\t\t\tif (dist < closestDistSq ||\n\t\t\t\t\t\t\t\tdist <= closestDistSq && closest === null) {\n\t\t\t\t\t\t\t\tclosestDistSq = dist;\n\t\t\t\t\t\t\t\tclosest = obj;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn closest;\n\t},\n\n\t_getCoord: function (x) {\n\t\tvar coord = Math.floor(x / this._cellSize);\n\t\treturn isFinite(coord) ? coord : x;\n\t},\n\n\t_sqDist: function (p, p2) {\n\t\tvar dx = p2.x - p.x,\n\t\t dy = p2.y - p.y;\n\t\treturn dx * dx + dy * dy;\n\t}\n};\n","/* Copyright (c) 2012 the authors listed at the following URL, and/or\nthe authors of referenced articles or incorporated external code:\nhttp://en.literateprograms.org/Quickhull_(Javascript)?action=history&offset=20120410175256\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nRetrieved from: http://en.literateprograms.org/Quickhull_(Javascript)?oldid=18434\n*/\n\n(function () {\n\tL.QuickHull = {\n\n\t\t/*\n\t\t * @param {Object} cpt a point to be measured from the baseline\n\t\t * @param {Array} bl the baseline, as represented by a two-element\n\t\t * array of latlng objects.\n\t\t * @returns {Number} an approximate distance measure\n\t\t */\n\t\tgetDistant: function (cpt, bl) {\n\t\t\tvar vY = bl[1].lat - bl[0].lat,\n\t\t\t\tvX = bl[0].lng - bl[1].lng;\n\t\t\treturn (vX * (cpt.lat - bl[0].lat) + vY * (cpt.lng - bl[0].lng));\n\t\t},\n\n\t\t/*\n\t\t * @param {Array} baseLine a two-element array of latlng objects\n\t\t * representing the baseline to project from\n\t\t * @param {Array} latLngs an array of latlng objects\n\t\t * @returns {Object} the maximum point and all new points to stay\n\t\t * in consideration for the hull.\n\t\t */\n\t\tfindMostDistantPointFromBaseLine: function (baseLine, latLngs) {\n\t\t\tvar maxD = 0,\n\t\t\t\tmaxPt = null,\n\t\t\t\tnewPoints = [],\n\t\t\t\ti, pt, d;\n\n\t\t\tfor (i = latLngs.length - 1; i >= 0; i--) {\n\t\t\t\tpt = latLngs[i];\n\t\t\t\td = this.getDistant(pt, baseLine);\n\n\t\t\t\tif (d > 0) {\n\t\t\t\t\tnewPoints.push(pt);\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (d > maxD) {\n\t\t\t\t\tmaxD = d;\n\t\t\t\t\tmaxPt = pt;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn { maxPoint: maxPt, newPoints: newPoints };\n\t\t},\n\n\n\t\t/*\n\t\t * Given a baseline, compute the convex hull of latLngs as an array\n\t\t * of latLngs.\n\t\t *\n\t\t * @param {Array} latLngs\n\t\t * @returns {Array}\n\t\t */\n\t\tbuildConvexHull: function (baseLine, latLngs) {\n\t\t\tvar convexHullBaseLines = [],\n\t\t\t\tt = this.findMostDistantPointFromBaseLine(baseLine, latLngs);\n\n\t\t\tif (t.maxPoint) { // if there is still a point \"outside\" the base line\n\t\t\t\tconvexHullBaseLines =\n\t\t\t\t\tconvexHullBaseLines.concat(\n\t\t\t\t\t\tthis.buildConvexHull([baseLine[0], t.maxPoint], t.newPoints)\n\t\t\t\t\t);\n\t\t\t\tconvexHullBaseLines =\n\t\t\t\t\tconvexHullBaseLines.concat(\n\t\t\t\t\t\tthis.buildConvexHull([t.maxPoint, baseLine[1]], t.newPoints)\n\t\t\t\t\t);\n\t\t\t\treturn convexHullBaseLines;\n\t\t\t} else { // if there is no more point \"outside\" the base line, the current base line is part of the convex hull\n\t\t\t\treturn [baseLine[0]];\n\t\t\t}\n\t\t},\n\n\t\t/*\n\t\t * Given an array of latlngs, compute a convex hull as an array\n\t\t * of latlngs\n\t\t *\n\t\t * @param {Array} latLngs\n\t\t * @returns {Array}\n\t\t */\n\t\tgetConvexHull: function (latLngs) {\n\t\t\t// find first baseline\n\t\t\tvar maxLat = false, minLat = false,\n\t\t\t\tmaxLng = false, minLng = false,\n\t\t\t\tmaxLatPt = null, minLatPt = null,\n\t\t\t\tmaxLngPt = null, minLngPt = null,\n\t\t\t\tmaxPt = null, minPt = null,\n\t\t\t\ti;\n\n\t\t\tfor (i = latLngs.length - 1; i >= 0; i--) {\n\t\t\t\tvar pt = latLngs[i];\n\t\t\t\tif (maxLat === false || pt.lat > maxLat) {\n\t\t\t\t\tmaxLatPt = pt;\n\t\t\t\t\tmaxLat = pt.lat;\n\t\t\t\t}\n\t\t\t\tif (minLat === false || pt.lat < minLat) {\n\t\t\t\t\tminLatPt = pt;\n\t\t\t\t\tminLat = pt.lat;\n\t\t\t\t}\n\t\t\t\tif (maxLng === false || pt.lng > maxLng) {\n\t\t\t\t\tmaxLngPt = pt;\n\t\t\t\t\tmaxLng = pt.lng;\n\t\t\t\t}\n\t\t\t\tif (minLng === false || pt.lng < minLng) {\n\t\t\t\t\tminLngPt = pt;\n\t\t\t\t\tminLng = pt.lng;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif (minLat !== maxLat) {\n\t\t\t\tminPt = minLatPt;\n\t\t\t\tmaxPt = maxLatPt;\n\t\t\t} else {\n\t\t\t\tminPt = minLngPt;\n\t\t\t\tmaxPt = maxLngPt;\n\t\t\t}\n\n\t\t\tvar ch = [].concat(this.buildConvexHull([minPt, maxPt], latLngs),\n\t\t\t\t\t\t\t\tthis.buildConvexHull([maxPt, minPt], latLngs));\n\t\t\treturn ch;\n\t\t}\n\t};\n}());\n\nL.MarkerCluster.include({\n\tgetConvexHull: function () {\n\t\tvar childMarkers = this.getAllChildMarkers(),\n\t\t\tpoints = [],\n\t\t\tp, i;\n\n\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\tp = childMarkers[i].getLatLng();\n\t\t\tpoints.push(p);\n\t\t}\n\n\t\treturn L.QuickHull.getConvexHull(points);\n\t}\n});\n","//This code is 100% based on https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet\n//Huge thanks to jawj for implementing it first to make my job easy :-)\n\nL.MarkerCluster.include({\n\n\t_2PI: Math.PI * 2,\n\t_circleFootSeparation: 25, //related to circumference of circle\n\t_circleStartAngle: 0,\n\n\t_spiralFootSeparation: 28, //related to size of spiral (experiment!)\n\t_spiralLengthStart: 11,\n\t_spiralLengthFactor: 5,\n\n\t_circleSpiralSwitchover: 9, //show spiral instead of circle from this marker count upwards.\n\t\t\t\t\t\t\t\t// 0 -> always spiral; Infinity -> always circle\n\n\tspiderfy: function () {\n\t\tif (this._group._spiderfied === this || this._group._inZoomAnimation) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar childMarkers = this.getAllChildMarkers(null, true),\n\t\t\tgroup = this._group,\n\t\t\tmap = group._map,\n\t\t\tcenter = map.latLngToLayerPoint(this._latlng),\n\t\t\tpositions;\n\n\t\tthis._group._unspiderfy();\n\t\tthis._group._spiderfied = this;\n\n\t\t//TODO Maybe: childMarkers order by distance to center\n\n\t\tif (this._group.options.spiderfyShapePositions) {\n\t\t\tpositions = this._group.options.spiderfyShapePositions(childMarkers.length, center);\n\t\t} else if (childMarkers.length >= this._circleSpiralSwitchover) {\n\t\t\tpositions = this._generatePointsSpiral(childMarkers.length, center);\n\t\t} else {\n\t\t\tcenter.y += 10; // Otherwise circles look wrong => hack for standard blue icon, renders differently for other icons.\n\t\t\tpositions = this._generatePointsCircle(childMarkers.length, center);\n\t\t}\n\n\t\tthis._animationSpiderfy(childMarkers, positions);\n\t},\n\n\tunspiderfy: function (zoomDetails) {\n\t\t/// Argument from zoomanim if being called in a zoom animation or null otherwise\n\t\tif (this._group._inZoomAnimation) {\n\t\t\treturn;\n\t\t}\n\t\tthis._animationUnspiderfy(zoomDetails);\n\n\t\tthis._group._spiderfied = null;\n\t},\n\n\t_generatePointsCircle: function (count, centerPt) {\n\t\tvar circumference = this._group.options.spiderfyDistanceMultiplier * this._circleFootSeparation * (2 + count),\n\t\t\tlegLength = circumference / this._2PI, //radius from circumference\n\t\t\tangleStep = this._2PI / count,\n\t\t\tres = [],\n\t\t\ti, angle;\n\n\t\tlegLength = Math.max(legLength, 35); // Minimum distance to get outside the cluster icon.\n\n\t\tres.length = count;\n\n\t\tfor (i = 0; i < count; i++) { // Clockwise, like spiral.\n\t\t\tangle = this._circleStartAngle + i * angleStep;\n\t\t\tres[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();\n\t\t}\n\n\t\treturn res;\n\t},\n\n\t_generatePointsSpiral: function (count, centerPt) {\n\t\tvar spiderfyDistanceMultiplier = this._group.options.spiderfyDistanceMultiplier,\n\t\t\tlegLength = spiderfyDistanceMultiplier * this._spiralLengthStart,\n\t\t\tseparation = spiderfyDistanceMultiplier * this._spiralFootSeparation,\n\t\t\tlengthFactor = spiderfyDistanceMultiplier * this._spiralLengthFactor * this._2PI,\n\t\t\tangle = 0,\n\t\t\tres = [],\n\t\t\ti;\n\n\t\tres.length = count;\n\n\t\t// Higher index, closer position to cluster center.\n\t\tfor (i = count; i >= 0; i--) {\n\t\t\t// Skip the first position, so that we are already farther from center and we avoid\n\t\t\t// being under the default cluster icon (especially important for Circle Markers).\n\t\t\tif (i < count) {\n\t\t\t\tres[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();\n\t\t\t}\n\t\t\tangle += separation / legLength + i * 0.0005;\n\t\t\tlegLength += lengthFactor / angle;\n\t\t}\n\t\treturn res;\n\t},\n\n\t_noanimationUnspiderfy: function () {\n\t\tvar group = this._group,\n\t\t\tmap = group._map,\n\t\t\tfg = group._featureGroup,\n\t\t\tchildMarkers = this.getAllChildMarkers(null, true),\n\t\t\tm, i;\n\n\t\tgroup._ignoreMove = true;\n\n\t\tthis.setOpacity(1);\n\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\tm = childMarkers[i];\n\n\t\t\tfg.removeLayer(m);\n\n\t\t\tif (m._preSpiderfyLatlng) {\n\t\t\t\tm.setLatLng(m._preSpiderfyLatlng);\n\t\t\t\tdelete m._preSpiderfyLatlng;\n\t\t\t}\n\t\t\tif (m.setZIndexOffset) {\n\t\t\t\tm.setZIndexOffset(0);\n\t\t\t}\n\n\t\t\tif (m._spiderLeg) {\n\t\t\t\tmap.removeLayer(m._spiderLeg);\n\t\t\t\tdelete m._spiderLeg;\n\t\t\t}\n\t\t}\n\n\t\tgroup.fire('unspiderfied', {\n\t\t\tcluster: this,\n\t\t\tmarkers: childMarkers\n\t\t});\n\t\tgroup._ignoreMove = false;\n\t\tgroup._spiderfied = null;\n\t}\n});\n\n//Non Animated versions of everything\nL.MarkerClusterNonAnimated = L.MarkerCluster.extend({\n\t_animationSpiderfy: function (childMarkers, positions) {\n\t\tvar group = this._group,\n\t\t\tmap = group._map,\n\t\t\tfg = group._featureGroup,\n\t\t\tlegOptions = this._group.options.spiderLegPolylineOptions,\n\t\t\ti, m, leg, newPos;\n\n\t\tgroup._ignoreMove = true;\n\n\t\t// Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition.\n\t\t// The reverse order trick no longer improves performance on modern browsers.\n\t\tfor (i = 0; i < childMarkers.length; i++) {\n\t\t\tnewPos = map.layerPointToLatLng(positions[i]);\n\t\t\tm = childMarkers[i];\n\n\t\t\t// Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it.\n\t\t\tleg = new L.Polyline([this._latlng, newPos], legOptions);\n\t\t\tmap.addLayer(leg);\n\t\t\tm._spiderLeg = leg;\n\n\t\t\t// Now add the marker.\n\t\t\tm._preSpiderfyLatlng = m._latlng;\n\t\t\tm.setLatLng(newPos);\n\t\t\tif (m.setZIndexOffset) {\n\t\t\t\tm.setZIndexOffset(1000000); //Make these appear on top of EVERYTHING\n\t\t\t}\n\n\t\t\tfg.addLayer(m);\n\t\t}\n\t\tthis.setOpacity(0.3);\n\n\t\tgroup._ignoreMove = false;\n\t\tgroup.fire('spiderfied', {\n\t\t\tcluster: this,\n\t\t\tmarkers: childMarkers\n\t\t});\n\t},\n\n\t_animationUnspiderfy: function () {\n\t\tthis._noanimationUnspiderfy();\n\t}\n});\n\n//Animated versions here\nL.MarkerCluster.include({\n\n\t_animationSpiderfy: function (childMarkers, positions) {\n\t\tvar me = this,\n\t\t\tgroup = this._group,\n\t\t\tmap = group._map,\n\t\t\tfg = group._featureGroup,\n\t\t\tthisLayerLatLng = this._latlng,\n\t\t\tthisLayerPos = map.latLngToLayerPoint(thisLayerLatLng),\n\t\t\tsvg = L.Path.SVG,\n\t\t\tlegOptions = L.extend({}, this._group.options.spiderLegPolylineOptions), // Copy the options so that we can modify them for animation.\n\t\t\tfinalLegOpacity = legOptions.opacity,\n\t\t\ti, m, leg, legPath, legLength, newPos;\n\n\t\tif (finalLegOpacity === undefined) {\n\t\t\tfinalLegOpacity = L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity;\n\t\t}\n\n\t\tif (svg) {\n\t\t\t// If the initial opacity of the spider leg is not 0 then it appears before the animation starts.\n\t\t\tlegOptions.opacity = 0;\n\n\t\t\t// Add the class for CSS transitions.\n\t\t\tlegOptions.className = (legOptions.className || '') + ' leaflet-cluster-spider-leg';\n\t\t} else {\n\t\t\t// Make sure we have a defined opacity.\n\t\t\tlegOptions.opacity = finalLegOpacity;\n\t\t}\n\n\t\tgroup._ignoreMove = true;\n\n\t\t// Add markers and spider legs to map, hidden at our center point.\n\t\t// Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition.\n\t\t// The reverse order trick no longer improves performance on modern browsers.\n\t\tfor (i = 0; i < childMarkers.length; i++) {\n\t\t\tm = childMarkers[i];\n\n\t\t\tnewPos = map.layerPointToLatLng(positions[i]);\n\n\t\t\t// Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it.\n\t\t\tleg = new L.Polyline([thisLayerLatLng, newPos], legOptions);\n\t\t\tmap.addLayer(leg);\n\t\t\tm._spiderLeg = leg;\n\n\t\t\t// Explanations: https://jakearchibald.com/2013/animated-line-drawing-svg/\n\t\t\t// In our case the transition property is declared in the CSS file.\n\t\t\tif (svg) {\n\t\t\t\tlegPath = leg._path;\n\t\t\t\tlegLength = legPath.getTotalLength() + 0.1; // Need a small extra length to avoid remaining dot in Firefox.\n\t\t\t\tlegPath.style.strokeDasharray = legLength; // Just 1 length is enough, it will be duplicated.\n\t\t\t\tlegPath.style.strokeDashoffset = legLength;\n\t\t\t}\n\n\t\t\t// If it is a marker, add it now and we'll animate it out\n\t\t\tif (m.setZIndexOffset) {\n\t\t\t\tm.setZIndexOffset(1000000); // Make normal markers appear on top of EVERYTHING\n\t\t\t}\n\t\t\tif (m.clusterHide) {\n\t\t\t\tm.clusterHide();\n\t\t\t}\n\t\t\t\n\t\t\t// Vectors just get immediately added\n\t\t\tfg.addLayer(m);\n\n\t\t\tif (m._setPos) {\n\t\t\t\tm._setPos(thisLayerPos);\n\t\t\t}\n\t\t}\n\n\t\tgroup._forceLayout();\n\t\tgroup._animationStart();\n\n\t\t// Reveal markers and spider legs.\n\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\tnewPos = map.layerPointToLatLng(positions[i]);\n\t\t\tm = childMarkers[i];\n\n\t\t\t//Move marker to new position\n\t\t\tm._preSpiderfyLatlng = m._latlng;\n\t\t\tm.setLatLng(newPos);\n\t\t\t\n\t\t\tif (m.clusterShow) {\n\t\t\t\tm.clusterShow();\n\t\t\t}\n\n\t\t\t// Animate leg (animation is actually delegated to CSS transition).\n\t\t\tif (svg) {\n\t\t\t\tleg = m._spiderLeg;\n\t\t\t\tlegPath = leg._path;\n\t\t\t\tlegPath.style.strokeDashoffset = 0;\n\t\t\t\t//legPath.style.strokeOpacity = finalLegOpacity;\n\t\t\t\tleg.setStyle({opacity: finalLegOpacity});\n\t\t\t}\n\t\t}\n\t\tthis.setOpacity(0.3);\n\n\t\tgroup._ignoreMove = false;\n\n\t\tsetTimeout(function () {\n\t\t\tgroup._animationEnd();\n\t\t\tgroup.fire('spiderfied', {\n\t\t\t\tcluster: me,\n\t\t\t\tmarkers: childMarkers\n\t\t\t});\n\t\t}, 200);\n\t},\n\n\t_animationUnspiderfy: function (zoomDetails) {\n\t\tvar me = this,\n\t\t\tgroup = this._group,\n\t\t\tmap = group._map,\n\t\t\tfg = group._featureGroup,\n\t\t\tthisLayerPos = zoomDetails ? map._latLngToNewLayerPoint(this._latlng, zoomDetails.zoom, zoomDetails.center) : map.latLngToLayerPoint(this._latlng),\n\t\t\tchildMarkers = this.getAllChildMarkers(null, true),\n\t\t\tsvg = L.Path.SVG,\n\t\t\tm, i, leg, legPath, legLength, nonAnimatable;\n\n\t\tgroup._ignoreMove = true;\n\t\tgroup._animationStart();\n\n\t\t//Make us visible and bring the child markers back in\n\t\tthis.setOpacity(1);\n\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\tm = childMarkers[i];\n\n\t\t\t//Marker was added to us after we were spiderfied\n\t\t\tif (!m._preSpiderfyLatlng) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t//Close any popup on the marker first, otherwise setting the location of the marker will make the map scroll\n\t\t\tm.closePopup();\n\n\t\t\t//Fix up the location to the real one\n\t\t\tm.setLatLng(m._preSpiderfyLatlng);\n\t\t\tdelete m._preSpiderfyLatlng;\n\n\t\t\t//Hack override the location to be our center\n\t\t\tnonAnimatable = true;\n\t\t\tif (m._setPos) {\n\t\t\t\tm._setPos(thisLayerPos);\n\t\t\t\tnonAnimatable = false;\n\t\t\t}\n\t\t\tif (m.clusterHide) {\n\t\t\t\tm.clusterHide();\n\t\t\t\tnonAnimatable = false;\n\t\t\t}\n\t\t\tif (nonAnimatable) {\n\t\t\t\tfg.removeLayer(m);\n\t\t\t}\n\n\t\t\t// Animate the spider leg back in (animation is actually delegated to CSS transition).\n\t\t\tif (svg) {\n\t\t\t\tleg = m._spiderLeg;\n\t\t\t\tlegPath = leg._path;\n\t\t\t\tlegLength = legPath.getTotalLength() + 0.1;\n\t\t\t\tlegPath.style.strokeDashoffset = legLength;\n\t\t\t\tleg.setStyle({opacity: 0});\n\t\t\t}\n\t\t}\n\n\t\tgroup._ignoreMove = false;\n\n\t\tsetTimeout(function () {\n\t\t\t//If we have only <= one child left then that marker will be shown on the map so don't remove it!\n\t\t\tvar stillThereChildCount = 0;\n\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\tm = childMarkers[i];\n\t\t\t\tif (m._spiderLeg) {\n\t\t\t\t\tstillThereChildCount++;\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\tfor (i = childMarkers.length - 1; i >= 0; i--) {\n\t\t\t\tm = childMarkers[i];\n\n\t\t\t\tif (!m._spiderLeg) { //Has already been unspiderfied\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (m.clusterShow) {\n\t\t\t\t\tm.clusterShow();\n\t\t\t\t}\n\t\t\t\tif (m.setZIndexOffset) {\n\t\t\t\t\tm.setZIndexOffset(0);\n\t\t\t\t}\n\n\t\t\t\tif (stillThereChildCount > 1) {\n\t\t\t\t\tfg.removeLayer(m);\n\t\t\t\t}\n\n\t\t\t\tmap.removeLayer(m._spiderLeg);\n\t\t\t\tdelete m._spiderLeg;\n\t\t\t}\n\t\t\tgroup._animationEnd();\n\t\t\tgroup.fire('unspiderfied', {\n\t\t\t\tcluster: me,\n\t\t\t\tmarkers: childMarkers\n\t\t\t});\n\t\t}, 200);\n\t}\n});\n\n\nL.MarkerClusterGroup.include({\n\t//The MarkerCluster currently spiderfied (if any)\n\t_spiderfied: null,\n\n\tunspiderfy: function () {\n\t\tthis._unspiderfy.apply(this, arguments);\n\t},\n\n\t_spiderfierOnAdd: function () {\n\t\tthis._map.on('click', this._unspiderfyWrapper, this);\n\n\t\tif (this._map.options.zoomAnimation) {\n\t\t\tthis._map.on('zoomstart', this._unspiderfyZoomStart, this);\n\t\t}\n\t\t//Browsers without zoomAnimation or a big zoom don't fire zoomstart\n\t\tthis._map.on('zoomend', this._noanimationUnspiderfy, this);\n\n\t\tif (!L.Browser.touch) {\n\t\t\tthis._map.getRenderer(this);\n\t\t\t//Needs to happen in the pageload, not after, or animations don't work in webkit\n\t\t\t// http://stackoverflow.com/questions/8455200/svg-animate-with-dynamically-added-elements\n\t\t\t//Disable on touch browsers as the animation messes up on a touch zoom and isn't very noticable\n\t\t}\n\t},\n\n\t_spiderfierOnRemove: function () {\n\t\tthis._map.off('click', this._unspiderfyWrapper, this);\n\t\tthis._map.off('zoomstart', this._unspiderfyZoomStart, this);\n\t\tthis._map.off('zoomanim', this._unspiderfyZoomAnim, this);\n\t\tthis._map.off('zoomend', this._noanimationUnspiderfy, this);\n\n\t\t//Ensure that markers are back where they should be\n\t\t// Use no animation to avoid a sticky leaflet-cluster-anim class on mapPane\n\t\tthis._noanimationUnspiderfy();\n\t},\n\n\t//On zoom start we add a zoomanim handler so that we are guaranteed to be last (after markers are animated)\n\t//This means we can define the animation they do rather than Markers doing an animation to their actual location\n\t_unspiderfyZoomStart: function () {\n\t\tif (!this._map) { //May have been removed from the map by a zoomEnd handler\n\t\t\treturn;\n\t\t}\n\n\t\tthis._map.on('zoomanim', this._unspiderfyZoomAnim, this);\n\t},\n\n\t_unspiderfyZoomAnim: function (zoomDetails) {\n\t\t//Wait until the first zoomanim after the user has finished touch-zooming before running the animation\n\t\tif (L.DomUtil.hasClass(this._map._mapPane, 'leaflet-touching')) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._map.off('zoomanim', this._unspiderfyZoomAnim, this);\n\t\tthis._unspiderfy(zoomDetails);\n\t},\n\n\t_unspiderfyWrapper: function () {\n\t\t/// _unspiderfy but passes no arguments\n\t\tthis._unspiderfy();\n\t},\n\n\t_unspiderfy: function (zoomDetails) {\n\t\tif (this._spiderfied) {\n\t\t\tthis._spiderfied.unspiderfy(zoomDetails);\n\t\t}\n\t},\n\n\t_noanimationUnspiderfy: function () {\n\t\tif (this._spiderfied) {\n\t\t\tthis._spiderfied._noanimationUnspiderfy();\n\t\t}\n\t},\n\n\t//If the given layer is currently being spiderfied then we unspiderfy it so it isn't on the map anymore etc\n\t_unspiderfyLayer: function (layer) {\n\t\tif (layer._spiderLeg) {\n\t\t\tthis._featureGroup.removeLayer(layer);\n\n\t\t\tif (layer.clusterShow) {\n\t\t\t\tlayer.clusterShow();\n\t\t\t}\n\t\t\t\t//Position will be fixed up immediately in _animationUnspiderfy\n\t\t\tif (layer.setZIndexOffset) {\n\t\t\t\tlayer.setZIndexOffset(0);\n\t\t\t}\n\n\t\t\tthis._map.removeLayer(layer._spiderLeg);\n\t\t\tdelete layer._spiderLeg;\n\t\t}\n\t}\n});\n","/**\n * Adds 1 public method to MCG and 1 to L.Marker to facilitate changing\n * markers' icon options and refreshing their icon and their parent clusters\n * accordingly (case where their iconCreateFunction uses data of childMarkers\n * to make up the cluster icon).\n */\n\n\nL.MarkerClusterGroup.include({\n\t/**\n\t * Updates the icon of all clusters which are parents of the given marker(s).\n\t * In singleMarkerMode, also updates the given marker(s) icon.\n\t * @param layers L.MarkerClusterGroup|L.LayerGroup|Array(L.Marker)|Map(L.Marker)|\n\t * L.MarkerCluster|L.Marker (optional) list of markers (or single marker) whose parent\n\t * clusters need to be updated. If not provided, retrieves all child markers of this.\n\t * @returns {L.MarkerClusterGroup}\n\t */\n\trefreshClusters: function (layers) {\n\t\tif (!layers) {\n\t\t\tlayers = this._topClusterLevel.getAllChildMarkers();\n\t\t} else if (layers instanceof L.MarkerClusterGroup) {\n\t\t\tlayers = layers._topClusterLevel.getAllChildMarkers();\n\t\t} else if (layers instanceof L.LayerGroup) {\n\t\t\tlayers = layers._layers;\n\t\t} else if (layers instanceof L.MarkerCluster) {\n\t\t\tlayers = layers.getAllChildMarkers();\n\t\t} else if (layers instanceof L.Marker) {\n\t\t\tlayers = [layers];\n\t\t} // else: must be an Array(L.Marker)|Map(L.Marker)\n\t\tthis._flagParentsIconsNeedUpdate(layers);\n\t\tthis._refreshClustersIcons();\n\n\t\t// In case of singleMarkerMode, also re-draw the markers.\n\t\tif (this.options.singleMarkerMode) {\n\t\t\tthis._refreshSingleMarkerModeMarkers(layers);\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t/**\n\t * Simply flags all parent clusters of the given markers as having a \"dirty\" icon.\n\t * @param layers Array(L.Marker)|Map(L.Marker) list of markers.\n\t * @private\n\t */\n\t_flagParentsIconsNeedUpdate: function (layers) {\n\t\tvar id, parent;\n\n\t\t// Assumes layers is an Array or an Object whose prototype is non-enumerable.\n\t\tfor (id in layers) {\n\t\t\t// Flag parent clusters' icon as \"dirty\", all the way up.\n\t\t\t// Dumb process that flags multiple times upper parents, but still\n\t\t\t// much more efficient than trying to be smart and make short lists,\n\t\t\t// at least in the case of a hierarchy following a power law:\n\t\t\t// http://jsperf.com/flag-nodes-in-power-hierarchy/2\n\t\t\tparent = layers[id].__parent;\n\t\t\twhile (parent) {\n\t\t\t\tparent._iconNeedsUpdate = true;\n\t\t\t\tparent = parent.__parent;\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Re-draws the icon of the supplied markers.\n\t * To be used in singleMarkerMode only.\n\t * @param layers Array(L.Marker)|Map(L.Marker) list of markers.\n\t * @private\n\t */\n\t_refreshSingleMarkerModeMarkers: function (layers) {\n\t\tvar id, layer;\n\n\t\tfor (id in layers) {\n\t\t\tlayer = layers[id];\n\n\t\t\t// Make sure we do not override markers that do not belong to THIS group.\n\t\t\tif (this.hasLayer(layer)) {\n\t\t\t\t// Need to re-create the icon first, then re-draw the marker.\n\t\t\t\tlayer.setIcon(this._overrideMarkerIcon(layer));\n\t\t\t}\n\t\t}\n\t}\n});\n\nL.Marker.include({\n\t/**\n\t * Updates the given options in the marker's icon and refreshes the marker.\n\t * @param options map object of icon options.\n\t * @param directlyRefreshClusters boolean (optional) true to trigger\n\t * MCG.refreshClustersOf() right away with this single marker.\n\t * @returns {L.Marker}\n\t */\n\trefreshIconOptions: function (options, directlyRefreshClusters) {\n\t\tvar icon = this.options.icon;\n\n\t\tL.setOptions(icon, options);\n\n\t\tthis.setIcon(icon);\n\n\t\t// Shortcut to refresh the associated MCG clusters right away.\n\t\t// To be used when refreshing a single marker.\n\t\t// Otherwise, better use MCG.refreshClusters() once at the end with\n\t\t// the list of modified markers.\n\t\tif (directlyRefreshClusters && this.__parent) {\n\t\t\tthis.__parent._group.refreshClusters(this);\n\t\t}\n\n\t\treturn this;\n\t}\n});\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/netbox_device_map/static/netbox_device_map/leaflet.markercluster/leaflet.markercluster.js b/netbox_device_map/static/netbox_device_map/leaflet.markercluster/leaflet.markercluster.js new file mode 100644 index 0000000..66fe516 --- /dev/null +++ b/netbox_device_map/static/netbox_device_map/leaflet.markercluster/leaflet.markercluster.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(((e=e||self).Leaflet=e.Leaflet||{},e.Leaflet.markercluster={}))}(this,function(e){"use strict";var t=L.MarkerClusterGroup=L.FeatureGroup.extend({options:{maxClusterRadius:80,iconCreateFunction:null,clusterPane:L.Marker.prototype.options.pane,spiderfyOnEveryZoom:!1,spiderfyOnMaxZoom:!0,showCoverageOnHover:!0,zoomToBoundsOnClick:!0,singleMarkerMode:!1,disableClusteringAtZoom:null,removeOutsideVisibleBounds:!0,animate:!0,animateAddingMarkers:!1,spiderfyShapePositions:null,spiderfyDistanceMultiplier:1,spiderLegPolylineOptions:{weight:1.5,color:"#222",opacity:.5},chunkedLoading:!1,chunkInterval:200,chunkDelay:50,chunkProgress:null,polygonOptions:{}},initialize:function(e){L.Util.setOptions(this,e),this.options.iconCreateFunction||(this.options.iconCreateFunction=this._defaultIconCreateFunction),this._featureGroup=L.featureGroup(),this._featureGroup.addEventParent(this),this._nonPointGroup=L.featureGroup(),this._nonPointGroup.addEventParent(this),this._inZoomAnimation=0,this._needsClustering=[],this._needsRemoving=[],this._currentShownBounds=null,this._queue=[],this._childMarkerEventHandlers={dragstart:this._childMarkerDragStart,move:this._childMarkerMoved,dragend:this._childMarkerDragEnd};var t=L.DomUtil.TRANSITION&&this.options.animate;L.extend(this,t?this._withAnimation:this._noAnimation),this._markerCluster=t?L.MarkerCluster:L.MarkerClusterNonAnimated},addLayer:function(e){if(e instanceof L.LayerGroup)return this.addLayers([e]);if(!e.getLatLng)return this._nonPointGroup.addLayer(e),this.fire("layeradd",{layer:e}),this;if(!this._map)return this._needsClustering.push(e),this.fire("layeradd",{layer:e}),this;if(this.hasLayer(e))return this;this._unspiderfy&&this._unspiderfy(),this._addLayer(e,this._maxZoom),this.fire("layeradd",{layer:e}),this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons();var t=e,i=this._zoom;if(e.__parent)for(;t.__parent._zoom>=i;)t=t.__parent;return this._currentShownBounds.contains(t.getLatLng())&&(this.options.animateAddingMarkers?this._animationAddLayer(e,t):this._animationAddLayerNonAnimated(e,t)),this},removeLayer:function(e){return e instanceof L.LayerGroup?this.removeLayers([e]):(e.getLatLng?this._map?e.__parent&&(this._unspiderfy&&(this._unspiderfy(),this._unspiderfyLayer(e)),this._removeLayer(e,!0),this.fire("layerremove",{layer:e}),this._topClusterLevel._recalculateBounds(),this._refreshClustersIcons(),e.off(this._childMarkerEventHandlers,this),this._featureGroup.hasLayer(e)&&(this._featureGroup.removeLayer(e),e.clusterShow&&e.clusterShow())):(!this._arraySplice(this._needsClustering,e)&&this.hasLayer(e)&&this._needsRemoving.push({layer:e,latlng:e._latlng}),this.fire("layerremove",{layer:e})):(this._nonPointGroup.removeLayer(e),this.fire("layerremove",{layer:e})),this)},addLayers:function(n,s){if(!L.Util.isArray(n))return this.addLayer(n);var o,a=this._featureGroup,h=this._nonPointGroup,l=this.options.chunkedLoading,u=this.options.chunkInterval,_=this.options.chunkProgress,d=n.length,p=0,c=!0;if(this._map){var f=(new Date).getTime(),m=L.bind(function(){var e=(new Date).getTime();for(this._map&&this._unspiderfy&&this._unspiderfy();p"+t+"",className:"marker-cluster"+i,iconSize:new L.Point(40,40)})},_bindEvents:function(){var e=this._map,t=this.options.spiderfyOnMaxZoom,i=this.options.showCoverageOnHover,r=this.options.zoomToBoundsOnClick,n=this.options.spiderfyOnEveryZoom;(t||r||n)&&this.on("clusterclick clusterkeypress",this._zoomOrSpiderfy,this),i&&(this.on("clustermouseover",this._showCoverage,this),this.on("clustermouseout",this._hideCoverage,this),e.on("zoomend",this._hideCoverage,this))},_zoomOrSpiderfy:function(e){var t=e.layer,i=t;if("clusterkeypress"!==e.type||!e.originalEvent||13===e.originalEvent.keyCode){for(;1===i._childClusters.length;)i=i._childClusters[0];i._zoom===this._maxZoom&&i._childCount===t._childCount&&this.options.spiderfyOnMaxZoom?t.spiderfy():this.options.zoomToBoundsOnClick&&t.zoomToBounds(),this.options.spiderfyOnEveryZoom&&t.spiderfy(),e.originalEvent&&13===e.originalEvent.keyCode&&this._map._container.focus()}},_showCoverage:function(e){var t=this._map;this._inZoomAnimation||(this._shownPolygon&&t.removeLayer(this._shownPolygon),2h._zoom;r--)u=new this._markerCluster(this,r,u),n[r].addObject(u,this._map.project(a.getLatLng(),r));return h._addChild(u),void this._removeFromGridUnclustered(a,t)}s[t].addObject(e,i)}this._topClusterLevel._addChild(e),e.__parent=this._topClusterLevel},_refreshClustersIcons:function(){this._featureGroup.eachLayer(function(e){e instanceof L.MarkerCluster&&e._iconNeedsUpdate&&e._updateIcon()})},_enqueue:function(e){this._queue.push(e),this._queueTimeout||(this._queueTimeout=setTimeout(L.bind(this._processQueue,this),300))},_processQueue:function(){for(var e=0;ee?(this._animationStart(),this._animationZoomOut(this._zoom,e)):this._moveEnd()},_getExpandedVisibleBounds:function(){return this.options.removeOutsideVisibleBounds?L.Browser.mobile?this._checkBoundsMaxLat(this._map.getBounds()):this._checkBoundsMaxLat(this._map.getBounds().pad(1)):this._mapBoundsInfinite},_checkBoundsMaxLat:function(e){var t=this._maxLat;return void 0!==t&&(e.getNorth()>=t&&(e._northEast.lat=1/0),e.getSouth()<=-t&&(e._southWest.lat=-1/0)),e},_animationAddLayerNonAnimated:function(e,t){if(t===e)this._featureGroup.addLayer(e);else if(2===t._childCount){t._addToMap();var i=t.getAllChildMarkers();this._featureGroup.removeLayer(i[0]),this._featureGroup.removeLayer(i[1])}else t._updateIcon()},_extractNonGroupLayers:function(e,t){var i,r=e.getLayers(),n=0;for(t=t||[];ni)&&(i=(o=d).lat),(!1===r||d.latn)&&(n=(h=d).lng),(!1===s||d.lng=this._circleSpiralSwitchover?this._generatePointsSpiral(t.length,i):(i.y+=10,this._generatePointsCircle(t.length,i)),this._animationSpiderfy(t,e)}},unspiderfy:function(e){this._group._inZoomAnimation||(this._animationUnspiderfy(e),this._group._spiderfied=null)},_generatePointsCircle:function(e,t){var i,r,n=this._group.options.spiderfyDistanceMultiplier*this._circleFootSeparation*(2+e)/this._2PI,s=this._2PI/e,o=[];for(n=Math.max(n,35),o.length=e,i=0;iFhCYNy;#0irRPomHqW|G1C*;4?@4#E?jH>?v@U%cy?3dQAc-DchXVErpOh~ z-jbon+tNbnl6hoEb;)TVk+%hTDDi_G%i3*RZ&15!$Fjr^f;Ke&A@|?=`2&+{zr+3a z{D*=t(`AXyS%X7N z%a#RZw6vD^t_rnM`L4E>m=U&R!A-&}nZIi$BOPvkhrCuUe@BN~-lRD)f44;J%TwgE zcze8u!PQ_NR7?o(NylLXVTfDO zxs5=@|GsYEsNo4M#nT%N!UE(?dnS)t2+{ELYAFp*3=iF=|EQnTp`#vlSXuGVraYo? z+RCzXo6h3qA8{KG?S4nE(lM+;Eb4nT3XV;7gcAxUi5m)`k5tv}cPy()8ZR3TLW3I- zAS^}cq-IJvL7a4RgR!yk@~RT%$lA7{L5ES*hyx)M4(yxI$Ub(4f)K|^v1>zvwQY!_ zIrWw8q9GS^!Dp~}+?mbnB6jDF8mVlbQ!jFKDY;w=7;XO{9bq7>LXGK24WA`;rL)_Z z)&j}pbV(;6gY;VMhbxgvn`X;6x}VUEE-7 z%)7j-%t8S=ZL3yc)HbXDAqJZvBTPoiW_A-+a8m3_Z?v{DN7Tnr#O_VUMT0UBt$;p` zDh6JbGHN8JJ*JN%y2%msb97@_S>9!%Egwk;?PEkU9ntz&3uR}%Fj5d$JHQbQb3}a{ zSzFT^#n=VInPpcAS}CNxj?_ zVscANk5Cfz(51EI1pz};AWWb|kgbYNb4wCEGUn3+eMUMV?1-{=I4TlmLJMot@rd07 zZuo2hk1ccu{YmGkcYdWAVdk{Z4Nm?^cTD&}jGm+Q1SYIXMwmG*oO*83&#>l%nbR`G zhh=lZ%xIb7kU3#;TBbfECrnC9P=-XpL|TG2BoZdj61*XiFbW8?1Z_wp%#;>${SUIy V$8qr;L*)Pf002ovPDHLkV1hYLS~36t literal 0 HcmV?d00001 diff --git a/netbox_device_map/static/netbox_device_map/leaflet/images/layers.png b/netbox_device_map/static/netbox_device_map/leaflet/images/layers.png new file mode 100644 index 0000000000000000000000000000000000000000..1a72e5784b2b456eac5d7670738db80697af3377 GIT binary patch literal 696 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 e-I|>x8~*?ZhF3snGbtJX0000cOl4 literal 0 HcmV?d00001 diff --git a/netbox_device_map/static/netbox_device_map/leaflet/images/marker-icon.png b/netbox_device_map/static/netbox_device_map/leaflet/images/marker-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..950edf24677ded147df13b26f91baa2b0fa70513 GIT binary patch literal 1466 zcmV;r1x5OaP)P001cn1^@s6z>|W`000GnNklGNuHDcIX17Zdjl&3`L?0sTjIws<{((Dh&g-s0<@jYQyl?D*X^?%13;ml^gy> ziMrY_^1WI=(g@LMizu=zCoA>C`6|QEq1eV92k*7m>G65*&@&6)aC&e}G zI)pf-Za|N`DT&Cn1J|o`19mumxW~hiKiKyc-P`S@q)rdTo84@QI@;0yXrG%9uhI>A zG5QHb6s4=<6xy{1 z@NMxEkryp{LS44%z$3lP^cX!9+2-;CTt3wM4(k*#C{aiIiLuB>jJj;KPhPzIC00bL zU3a#;aJld94lCW=`4&aAy8M7PY=HQ>O%$YEP4c4UY#CRxfgbE~(|uiI=YS8q;O9y6 zmIkXzR`}p7ti|PrM3a}WMnR=3NVnWdAAR>b9X@)DKL6=YsvmH%?I24wdq?Gh54_;# z$?_LvgjEdspdQlft#4CQ z`2Zyvy?*)N1Ftw|{_hakhG9WjS?Az@I@+IZ8JbWewR!XUK4&6346+d#~gsE0SY(LX8&JfY>Aj)RxGy96nwhs2rv zzW6pTnMpFkDSkT*a*6Dx|u@ds6ISVn0@^RmIsKZ5Y;bazbc;tTSq(kg(=481ODrPyNB6n z-$+U}(w$m6U6H$w17Bw+wDaFIe~GvNMYvnw31MpY0eQKT9l>SU``8k7w4)z!GZKMI z#_cEKq7k~i%nlK@6c-K?+R;B#5$?T#YpKD`t_4bAs^#E+@5QW$@OX3*`;(#{U^d-vY)&xEE>n5lYl&T?Amke9$Lam@{1K@O ze*LXqlKQHiv=gx+V^Cbb2?z@ISBQ*3amF;9UJ3SBg(N|710TLamQmYZ&Qjn2LuO<* zCZlB4n%@pc&7NNnY1}x+NWpHlq`OJEo|`aYN9<`RBUB+79g;>dgb6YlfN#kGL?lO_ z!6~M^7sOnbsUkKk<@Ysie&`G>ruxH&Mgy&8;i=A zB9OO!xR{AyODw>DS-q5YM{0ExFEAzt zm>RdS+ssW(-8|?xr0(?$vBVB*%(xDLtq3Hf0I5yFm<_g=W2`QWAax{1rWVH=I!VrP zs(rTFX@W#t$hXNvbgX`gK&^w_YD;CQ!B@e0QbLIWaKAXQe2-kkloo;{iF#6}z!4=W zi$giRj1{ zt;2w`VSCF#WE&*ev7jpsC=6175@(~nTE2;7M-L((0bH@yG}-TB$R~WXd?tA$s3|%y zA`9$sA(>F%J3ioz<-LJl*^o1|w84l>HBR`>3l9c8$5Xr@xCiIQ7{x$fMCzOk_-M=% z+{a_Q#;42`#KfUte@$NT77uaTz?b-fBe)1s5XE$yA79fm?KqM^VgLXD07*qoM6N<$ Ef<_J(9smFU literal 0 HcmV?d00001 diff --git a/netbox_device_map/static/netbox_device_map/leaflet/leaflet-src.esm.js b/netbox_device_map/static/netbox_device_map/leaflet/leaflet-src.esm.js new file mode 100644 index 0000000..415fbfd --- /dev/null +++ b/netbox_device_map/static/netbox_device_map/leaflet/leaflet-src.esm.js @@ -0,0 +1,14033 @@ +/* @preserve + * Leaflet 1.8.0, a JS library for interactive maps. https://leafletjs.com + * (c) 2010-2022 Vladimir Agafonkin, (c) 2010-2011 CloudMade + */ + +var version = "1.8.0"; + +/* + * @namespace Util + * + * Various utility functions, used by Leaflet internally. + */ + +// @function extend(dest: Object, src?: Object): Object +// Merges the properties of the `src` object (or multiple objects) into `dest` object and returns the latter. Has an `L.extend` shortcut. +function extend(dest) { + var i, j, len, src; + + for (j = 1, len = arguments.length; j < len; j++) { + src = arguments[j]; + for (i in src) { + dest[i] = src[i]; + } + } + return dest; +} + +// @function create(proto: Object, properties?: Object): Object +// Compatibility polyfill for [Object.create](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/create) +var create$2 = Object.create || (function () { + function F() {} + return function (proto) { + F.prototype = proto; + return new F(); + }; +})(); + +// @function bind(fn: Function, …): Function +// Returns a new function bound to the arguments passed, like [Function.prototype.bind](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind). +// Has a `L.bind()` shortcut. +function bind(fn, obj) { + var slice = Array.prototype.slice; + + if (fn.bind) { + return fn.bind.apply(fn, slice.call(arguments, 1)); + } + + var args = slice.call(arguments, 2); + + return function () { + return fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments); + }; +} + +// @property lastId: Number +// Last unique ID used by [`stamp()`](#util-stamp) +var lastId = 0; + +// @function stamp(obj: Object): Number +// Returns the unique ID of an object, assigning it one if it doesn't have it. +function stamp(obj) { + if (!('_leaflet_id' in obj)) { + obj['_leaflet_id'] = ++lastId; + } + return obj._leaflet_id; +} + +// @function throttle(fn: Function, time: Number, context: Object): Function +// Returns a function which executes function `fn` with the given scope `context` +// (so that the `this` keyword refers to `context` inside `fn`'s code). The function +// `fn` will be called no more than one time per given amount of `time`. The arguments +// received by the bound function will be any arguments passed when binding the +// function, followed by any arguments passed when invoking the bound function. +// Has an `L.throttle` shortcut. +function throttle(fn, time, context) { + var lock, args, wrapperFn, later; + + later = function () { + // reset lock and call if queued + lock = false; + if (args) { + wrapperFn.apply(context, args); + args = false; + } + }; + + wrapperFn = function () { + if (lock) { + // called too soon, queue to call later + args = arguments; + + } else { + // call and lock until later + fn.apply(context, arguments); + setTimeout(later, time); + lock = true; + } + }; + + return wrapperFn; +} + +// @function wrapNum(num: Number, range: Number[], includeMax?: Boolean): Number +// Returns the number `num` modulo `range` in such a way so it lies within +// `range[0]` and `range[1]`. The returned value will be always smaller than +// `range[1]` unless `includeMax` is set to `true`. +function wrapNum(x, range, includeMax) { + var max = range[1], + min = range[0], + d = max - min; + return x === max && includeMax ? x : ((x - min) % d + d) % d + min; +} + +// @function falseFn(): Function +// Returns a function which always returns `false`. +function falseFn() { return false; } + +// @function formatNum(num: Number, precision?: Number|false): Number +// Returns the number `num` rounded with specified `precision`. +// The default `precision` value is 6 decimal places. +// `false` can be passed to skip any processing (can be useful to avoid round-off errors). +function formatNum(num, precision) { + if (precision === false) { return num; } + var pow = Math.pow(10, precision === undefined ? 6 : precision); + return Math.round(num * pow) / pow; +} + +// @function trim(str: String): String +// Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim) +function trim(str) { + return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, ''); +} + +// @function splitWords(str: String): String[] +// Trims and splits the string on whitespace and returns the array of parts. +function splitWords(str) { + return trim(str).split(/\s+/); +} + +// @function setOptions(obj: Object, options: Object): Object +// Merges the given properties to the `options` of the `obj` object, returning the resulting options. See `Class options`. Has an `L.setOptions` shortcut. +function setOptions(obj, options) { + if (!Object.prototype.hasOwnProperty.call(obj, 'options')) { + obj.options = obj.options ? create$2(obj.options) : {}; + } + for (var i in options) { + obj.options[i] = options[i]; + } + return obj.options; +} + +// @function getParamString(obj: Object, existingUrl?: String, uppercase?: Boolean): String +// Converts an object into a parameter URL string, e.g. `{a: "foo", b: "bar"}` +// translates to `'?a=foo&b=bar'`. If `existingUrl` is set, the parameters will +// be appended at the end. If `uppercase` is `true`, the parameter names will +// be uppercased (e.g. `'?A=foo&B=bar'`) +function getParamString(obj, existingUrl, uppercase) { + var params = []; + for (var i in obj) { + params.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i])); + } + return ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&'); +} + +var templateRe = /\{ *([\w_ -]+) *\}/g; + +// @function template(str: String, data: Object): String +// Simple templating facility, accepts a template string of the form `'Hello {a}, {b}'` +// and a data object like `{a: 'foo', b: 'bar'}`, returns evaluated string +// `('Hello foo, bar')`. You can also specify functions instead of strings for +// data values — they will be evaluated passing `data` as an argument. +function template(str, data) { + return str.replace(templateRe, function (str, key) { + var value = data[key]; + + if (value === undefined) { + throw new Error('No value provided for variable ' + str); + + } else if (typeof value === 'function') { + value = value(data); + } + return value; + }); +} + +// @function isArray(obj): Boolean +// Compatibility polyfill for [Array.isArray](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray) +var isArray = Array.isArray || function (obj) { + return (Object.prototype.toString.call(obj) === '[object Array]'); +}; + +// @function indexOf(array: Array, el: Object): Number +// Compatibility polyfill for [Array.prototype.indexOf](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf) +function indexOf(array, el) { + for (var i = 0; i < array.length; i++) { + if (array[i] === el) { return i; } + } + return -1; +} + +// @property emptyImageUrl: String +// Data URI string containing a base64-encoded empty GIF image. +// Used as a hack to free memory from unused images on WebKit-powered +// mobile devices (by setting image `src` to this string). +var emptyImageUrl = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs='; + +// inspired by https://paulirish.com/2011/requestanimationframe-for-smart-animating/ + +function getPrefixed(name) { + return window['webkit' + name] || window['moz' + name] || window['ms' + name]; +} + +var lastTime = 0; + +// fallback for IE 7-8 +function timeoutDefer(fn) { + var time = +new Date(), + timeToCall = Math.max(0, 16 - (time - lastTime)); + + lastTime = time + timeToCall; + return window.setTimeout(fn, timeToCall); +} + +var requestFn = window.requestAnimationFrame || getPrefixed('RequestAnimationFrame') || timeoutDefer; +var cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') || + getPrefixed('CancelRequestAnimationFrame') || function (id) { window.clearTimeout(id); }; + +// @function requestAnimFrame(fn: Function, context?: Object, immediate?: Boolean): Number +// Schedules `fn` to be executed when the browser repaints. `fn` is bound to +// `context` if given. When `immediate` is set, `fn` is called immediately if +// the browser doesn't have native support for +// [`window.requestAnimationFrame`](https://developer.mozilla.org/docs/Web/API/window/requestAnimationFrame), +// otherwise it's delayed. Returns a request ID that can be used to cancel the request. +function requestAnimFrame(fn, context, immediate) { + if (immediate && requestFn === timeoutDefer) { + fn.call(context); + } else { + return requestFn.call(window, bind(fn, context)); + } +} + +// @function cancelAnimFrame(id: Number): undefined +// Cancels a previous `requestAnimFrame`. See also [window.cancelAnimationFrame](https://developer.mozilla.org/docs/Web/API/window/cancelAnimationFrame). +function cancelAnimFrame(id) { + if (id) { + cancelFn.call(window, id); + } +} + +var Util = { + __proto__: null, + extend: extend, + create: create$2, + bind: bind, + get lastId () { return lastId; }, + stamp: stamp, + throttle: throttle, + wrapNum: wrapNum, + falseFn: falseFn, + formatNum: formatNum, + trim: trim, + splitWords: splitWords, + setOptions: setOptions, + getParamString: getParamString, + template: template, + isArray: isArray, + indexOf: indexOf, + emptyImageUrl: emptyImageUrl, + requestFn: requestFn, + cancelFn: cancelFn, + requestAnimFrame: requestAnimFrame, + cancelAnimFrame: cancelAnimFrame +}; + +// @class Class +// @aka L.Class + +// @section +// @uninheritable + +// Thanks to John Resig and Dean Edwards for inspiration! + +function Class() {} + +Class.extend = function (props) { + + // @function extend(props: Object): Function + // [Extends the current class](#class-inheritance) given the properties to be included. + // Returns a Javascript function that is a class constructor (to be called with `new`). + var NewClass = function () { + + setOptions(this); + + // call the constructor + if (this.initialize) { + this.initialize.apply(this, arguments); + } + + // call all constructor hooks + this.callInitHooks(); + }; + + var parentProto = NewClass.__super__ = this.prototype; + + var proto = create$2(parentProto); + proto.constructor = NewClass; + + NewClass.prototype = proto; + + // inherit parent's statics + for (var i in this) { + if (Object.prototype.hasOwnProperty.call(this, i) && i !== 'prototype' && i !== '__super__') { + NewClass[i] = this[i]; + } + } + + // mix static properties into the class + if (props.statics) { + extend(NewClass, props.statics); + } + + // mix includes into the prototype + if (props.includes) { + checkDeprecatedMixinEvents(props.includes); + extend.apply(null, [proto].concat(props.includes)); + } + + // mix given properties into the prototype + extend(proto, props); + delete proto.statics; + delete proto.includes; + + // merge options + if (proto.options) { + proto.options = parentProto.options ? create$2(parentProto.options) : {}; + extend(proto.options, props.options); + } + + proto._initHooks = []; + + // add method for calling all hooks + proto.callInitHooks = function () { + + if (this._initHooksCalled) { return; } + + if (parentProto.callInitHooks) { + parentProto.callInitHooks.call(this); + } + + this._initHooksCalled = true; + + for (var i = 0, len = proto._initHooks.length; i < len; i++) { + proto._initHooks[i].call(this); + } + }; + + return NewClass; +}; + + +// @function include(properties: Object): this +// [Includes a mixin](#class-includes) into the current class. +Class.include = function (props) { + var parentOptions = this.prototype.options; + extend(this.prototype, props); + if (props.options) { + this.prototype.options = parentOptions; + this.mergeOptions(props.options); + } + return this; +}; + +// @function mergeOptions(options: Object): this +// [Merges `options`](#class-options) into the defaults of the class. +Class.mergeOptions = function (options) { + extend(this.prototype.options, options); + return this; +}; + +// @function addInitHook(fn: Function): this +// Adds a [constructor hook](#class-constructor-hooks) to the class. +Class.addInitHook = function (fn) { // (Function) || (String, args...) + var args = Array.prototype.slice.call(arguments, 1); + + var init = typeof fn === 'function' ? fn : function () { + this[fn].apply(this, args); + }; + + this.prototype._initHooks = this.prototype._initHooks || []; + this.prototype._initHooks.push(init); + return this; +}; + +function checkDeprecatedMixinEvents(includes) { + if (typeof L === 'undefined' || !L || !L.Mixin) { return; } + + includes = isArray(includes) ? includes : [includes]; + + for (var i = 0; i < includes.length; i++) { + if (includes[i] === L.Mixin.Events) { + console.warn('Deprecated include of L.Mixin.Events: ' + + 'this property will be removed in future releases, ' + + 'please inherit from L.Evented instead.', new Error().stack); + } + } +} + +/* + * @class Evented + * @aka L.Evented + * @inherits Class + * + * A set of methods shared between event-powered classes (like `Map` and `Marker`). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire `'click'` event). + * + * @example + * + * ```js + * map.on('click', function(e) { + * alert(e.latlng); + * } ); + * ``` + * + * Leaflet deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function: + * + * ```js + * function onClick(e) { ... } + * + * map.on('click', onClick); + * map.off('click', onClick); + * ``` + */ + +var Events = { + /* @method on(type: String, fn: Function, context?: Object): this + * Adds a listener function (`fn`) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. `'click dblclick'`). + * + * @alternative + * @method on(eventMap: Object): this + * Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}` + */ + on: function (types, fn, context) { + + // types can be a map of types/handlers + if (typeof types === 'object') { + for (var type in types) { + // we don't process space-separated events here for performance; + // it's a hot path since Layer uses the on(obj) syntax + this._on(type, types[type], fn); + } + + } else { + // types can be a string of space-separated words + types = splitWords(types); + + for (var i = 0, len = types.length; i < len; i++) { + this._on(types[i], fn, context); + } + } + + return this; + }, + + /* @method off(type: String, fn?: Function, context?: Object): this + * Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to `on`, you must pass the same context to `off` in order to remove the listener. + * + * @alternative + * @method off(eventMap: Object): this + * Removes a set of type/listener pairs. + * + * @alternative + * @method off: this + * Removes all listeners to all events on the object. This includes implicitly attached events. + */ + off: function (types, fn, context) { + + if (!arguments.length) { + // clear all listeners if called without arguments + delete this._events; + + } else if (typeof types === 'object') { + for (var type in types) { + this._off(type, types[type], fn); + } + + } else { + types = splitWords(types); + + var removeAll = arguments.length === 1; + for (var i = 0, len = types.length; i < len; i++) { + if (removeAll) { + this._off(types[i]); + } else { + this._off(types[i], fn, context); + } + } + } + + return this; + }, + + // attach listener (without syntactic sugar now) + _on: function (type, fn, context) { + if (typeof fn !== 'function') { + console.warn('wrong listener type: ' + typeof fn); + return; + } + this._events = this._events || {}; + + /* get/init listeners for type */ + var typeListeners = this._events[type]; + if (!typeListeners) { + typeListeners = []; + this._events[type] = typeListeners; + } + + if (context === this) { + // Less memory footprint. + context = undefined; + } + var newListener = {fn: fn, ctx: context}, + listeners = typeListeners; + + // check if fn already there + for (var i = 0, len = listeners.length; i < len; i++) { + if (listeners[i].fn === fn && listeners[i].ctx === context) { + return; + } + } + + listeners.push(newListener); + }, + + _off: function (type, fn, context) { + var listeners, + i, + len; + + if (!this._events) { return; } + + listeners = this._events[type]; + + if (!listeners) { + return; + } + + if (arguments.length === 1) { // remove all + if (this._firingCount) { + // Set all removed listeners to noop + // so they are not called if remove happens in fire + for (i = 0, len = listeners.length; i < len; i++) { + listeners[i].fn = falseFn; + } + } + // clear all listeners for a type if function isn't specified + delete this._events[type]; + return; + } + + if (context === this) { + context = undefined; + } + + if (typeof fn !== 'function') { + console.warn('wrong listener type: ' + typeof fn); + return; + } + // find fn and remove it + for (i = 0, len = listeners.length; i < len; i++) { + var l = listeners[i]; + if (l.ctx !== context) { continue; } + if (l.fn === fn) { + if (this._firingCount) { + // set the removed listener to noop so that's not called if remove happens in fire + l.fn = falseFn; + + /* copy array in case events are being fired */ + this._events[type] = listeners = listeners.slice(); + } + listeners.splice(i, 1); + + return; + } + } + console.warn('listener not found'); + }, + + // @method fire(type: String, data?: Object, propagate?: Boolean): this + // Fires an event of the specified type. You can optionally provide a data + // object — the first argument of the listener function will contain its + // properties. The event can optionally be propagated to event parents. + fire: function (type, data, propagate) { + if (!this.listens(type, propagate)) { return this; } + + var event = extend({}, data, { + type: type, + target: this, + sourceTarget: data && data.sourceTarget || this + }); + + if (this._events) { + var listeners = this._events[type]; + + if (listeners) { + this._firingCount = (this._firingCount + 1) || 1; + for (var i = 0, len = listeners.length; i < len; i++) { + var l = listeners[i]; + l.fn.call(l.ctx || this, event); + } + + this._firingCount--; + } + } + + if (propagate) { + // propagate the event to parents (set with addEventParent) + this._propagateEvent(event); + } + + return this; + }, + + // @method listens(type: String, propagate?: Boolean): Boolean + // Returns `true` if a particular event type has any listeners attached to it. + // The verification can optionally be propagated, it will return `true` if parents have the listener attached to it. + listens: function (type, propagate) { + if (typeof type !== 'string') { + console.warn('"string" type argument expected'); + } + var listeners = this._events && this._events[type]; + if (listeners && listeners.length) { return true; } + + if (propagate) { + // also check parents for listeners if event propagates + for (var id in this._eventParents) { + if (this._eventParents[id].listens(type, propagate)) { return true; } + } + } + return false; + }, + + // @method once(…): this + // Behaves as [`on(…)`](#evented-on), except the listener will only get fired once and then removed. + once: function (types, fn, context) { + + if (typeof types === 'object') { + for (var type in types) { + this.once(type, types[type], fn); + } + return this; + } + + var handler = bind(function () { + this + .off(types, fn, context) + .off(types, handler, context); + }, this); + + // add a listener that's executed once and removed after that + return this + .on(types, fn, context) + .on(types, handler, context); + }, + + // @method addEventParent(obj: Evented): this + // Adds an event parent - an `Evented` that will receive propagated events + addEventParent: function (obj) { + this._eventParents = this._eventParents || {}; + this._eventParents[stamp(obj)] = obj; + return this; + }, + + // @method removeEventParent(obj: Evented): this + // Removes an event parent, so it will stop receiving propagated events + removeEventParent: function (obj) { + if (this._eventParents) { + delete this._eventParents[stamp(obj)]; + } + return this; + }, + + _propagateEvent: function (e) { + for (var id in this._eventParents) { + this._eventParents[id].fire(e.type, extend({ + layer: e.target, + propagatedFrom: e.target + }, e), true); + } + } +}; + +// aliases; we should ditch those eventually + +// @method addEventListener(…): this +// Alias to [`on(…)`](#evented-on) +Events.addEventListener = Events.on; + +// @method removeEventListener(…): this +// Alias to [`off(…)`](#evented-off) + +// @method clearAllEventListeners(…): this +// Alias to [`off()`](#evented-off) +Events.removeEventListener = Events.clearAllEventListeners = Events.off; + +// @method addOneTimeEventListener(…): this +// Alias to [`once(…)`](#evented-once) +Events.addOneTimeEventListener = Events.once; + +// @method fireEvent(…): this +// Alias to [`fire(…)`](#evented-fire) +Events.fireEvent = Events.fire; + +// @method hasEventListeners(…): Boolean +// Alias to [`listens(…)`](#evented-listens) +Events.hasEventListeners = Events.listens; + +var Evented = Class.extend(Events); + +/* + * @class Point + * @aka L.Point + * + * Represents a point with `x` and `y` coordinates in pixels. + * + * @example + * + * ```js + * var point = L.point(200, 300); + * ``` + * + * All Leaflet methods and options that accept `Point` objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent: + * + * ```js + * map.panBy([200, 300]); + * map.panBy(L.point(200, 300)); + * ``` + * + * Note that `Point` does not inherit from Leaflet's `Class` object, + * which means new classes can't inherit from it, and new methods + * can't be added to it with the `include` function. + */ + +function Point(x, y, round) { + // @property x: Number; The `x` coordinate of the point + this.x = (round ? Math.round(x) : x); + // @property y: Number; The `y` coordinate of the point + this.y = (round ? Math.round(y) : y); +} + +var trunc = Math.trunc || function (v) { + return v > 0 ? Math.floor(v) : Math.ceil(v); +}; + +Point.prototype = { + + // @method clone(): Point + // Returns a copy of the current point. + clone: function () { + return new Point(this.x, this.y); + }, + + // @method add(otherPoint: Point): Point + // Returns the result of addition of the current and the given points. + add: function (point) { + // non-destructive, returns a new point + return this.clone()._add(toPoint(point)); + }, + + _add: function (point) { + // destructive, used directly for performance in situations where it's safe to modify existing point + this.x += point.x; + this.y += point.y; + return this; + }, + + // @method subtract(otherPoint: Point): Point + // Returns the result of subtraction of the given point from the current. + subtract: function (point) { + return this.clone()._subtract(toPoint(point)); + }, + + _subtract: function (point) { + this.x -= point.x; + this.y -= point.y; + return this; + }, + + // @method divideBy(num: Number): Point + // Returns the result of division of the current point by the given number. + divideBy: function (num) { + return this.clone()._divideBy(num); + }, + + _divideBy: function (num) { + this.x /= num; + this.y /= num; + return this; + }, + + // @method multiplyBy(num: Number): Point + // Returns the result of multiplication of the current point by the given number. + multiplyBy: function (num) { + return this.clone()._multiplyBy(num); + }, + + _multiplyBy: function (num) { + this.x *= num; + this.y *= num; + return this; + }, + + // @method scaleBy(scale: Point): Point + // Multiply each coordinate of the current point by each coordinate of + // `scale`. In linear algebra terms, multiply the point by the + // [scaling matrix](https://en.wikipedia.org/wiki/Scaling_%28geometry%29#Matrix_representation) + // defined by `scale`. + scaleBy: function (point) { + return new Point(this.x * point.x, this.y * point.y); + }, + + // @method unscaleBy(scale: Point): Point + // Inverse of `scaleBy`. Divide each coordinate of the current point by + // each coordinate of `scale`. + unscaleBy: function (point) { + return new Point(this.x / point.x, this.y / point.y); + }, + + // @method round(): Point + // Returns a copy of the current point with rounded coordinates. + round: function () { + return this.clone()._round(); + }, + + _round: function () { + this.x = Math.round(this.x); + this.y = Math.round(this.y); + return this; + }, + + // @method floor(): Point + // Returns a copy of the current point with floored coordinates (rounded down). + floor: function () { + return this.clone()._floor(); + }, + + _floor: function () { + this.x = Math.floor(this.x); + this.y = Math.floor(this.y); + return this; + }, + + // @method ceil(): Point + // Returns a copy of the current point with ceiled coordinates (rounded up). + ceil: function () { + return this.clone()._ceil(); + }, + + _ceil: function () { + this.x = Math.ceil(this.x); + this.y = Math.ceil(this.y); + return this; + }, + + // @method trunc(): Point + // Returns a copy of the current point with truncated coordinates (rounded towards zero). + trunc: function () { + return this.clone()._trunc(); + }, + + _trunc: function () { + this.x = trunc(this.x); + this.y = trunc(this.y); + return this; + }, + + // @method distanceTo(otherPoint: Point): Number + // Returns the cartesian distance between the current and the given points. + distanceTo: function (point) { + point = toPoint(point); + + var x = point.x - this.x, + y = point.y - this.y; + + return Math.sqrt(x * x + y * y); + }, + + // @method equals(otherPoint: Point): Boolean + // Returns `true` if the given point has the same coordinates. + equals: function (point) { + point = toPoint(point); + + return point.x === this.x && + point.y === this.y; + }, + + // @method contains(otherPoint: Point): Boolean + // Returns `true` if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values). + contains: function (point) { + point = toPoint(point); + + return Math.abs(point.x) <= Math.abs(this.x) && + Math.abs(point.y) <= Math.abs(this.y); + }, + + // @method toString(): String + // Returns a string representation of the point for debugging purposes. + toString: function () { + return 'Point(' + + formatNum(this.x) + ', ' + + formatNum(this.y) + ')'; + } +}; + +// @factory L.point(x: Number, y: Number, round?: Boolean) +// Creates a Point object with the given `x` and `y` coordinates. If optional `round` is set to true, rounds the `x` and `y` values. + +// @alternative +// @factory L.point(coords: Number[]) +// Expects an array of the form `[x, y]` instead. + +// @alternative +// @factory L.point(coords: Object) +// Expects a plain object of the form `{x: Number, y: Number}` instead. +function toPoint(x, y, round) { + if (x instanceof Point) { + return x; + } + if (isArray(x)) { + return new Point(x[0], x[1]); + } + if (x === undefined || x === null) { + return x; + } + if (typeof x === 'object' && 'x' in x && 'y' in x) { + return new Point(x.x, x.y); + } + return new Point(x, y, round); +} + +/* + * @class Bounds + * @aka L.Bounds + * + * Represents a rectangular area in pixel coordinates. + * + * @example + * + * ```js + * var p1 = L.point(10, 10), + * p2 = L.point(40, 60), + * bounds = L.bounds(p1, p2); + * ``` + * + * All Leaflet methods that accept `Bounds` objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this: + * + * ```js + * otherBounds.intersects([[10, 10], [40, 60]]); + * ``` + * + * Note that `Bounds` does not inherit from Leaflet's `Class` object, + * which means new classes can't inherit from it, and new methods + * can't be added to it with the `include` function. + */ + +function Bounds(a, b) { + if (!a) { return; } + + var points = b ? [a, b] : a; + + for (var i = 0, len = points.length; i < len; i++) { + this.extend(points[i]); + } +} + +Bounds.prototype = { + // @method extend(point: Point): this + // Extends the bounds to contain the given point. + extend: function (point) { // (Point) + point = toPoint(point); + + // @property min: Point + // The top left corner of the rectangle. + // @property max: Point + // The bottom right corner of the rectangle. + if (!this.min && !this.max) { + this.min = point.clone(); + this.max = point.clone(); + } else { + this.min.x = Math.min(point.x, this.min.x); + this.max.x = Math.max(point.x, this.max.x); + this.min.y = Math.min(point.y, this.min.y); + this.max.y = Math.max(point.y, this.max.y); + } + return this; + }, + + // @method getCenter(round?: Boolean): Point + // Returns the center point of the bounds. + getCenter: function (round) { + return new Point( + (this.min.x + this.max.x) / 2, + (this.min.y + this.max.y) / 2, round); + }, + + // @method getBottomLeft(): Point + // Returns the bottom-left point of the bounds. + getBottomLeft: function () { + return new Point(this.min.x, this.max.y); + }, + + // @method getTopRight(): Point + // Returns the top-right point of the bounds. + getTopRight: function () { // -> Point + return new Point(this.max.x, this.min.y); + }, + + // @method getTopLeft(): Point + // Returns the top-left point of the bounds (i.e. [`this.min`](#bounds-min)). + getTopLeft: function () { + return this.min; // left, top + }, + + // @method getBottomRight(): Point + // Returns the bottom-right point of the bounds (i.e. [`this.max`](#bounds-max)). + getBottomRight: function () { + return this.max; // right, bottom + }, + + // @method getSize(): Point + // Returns the size of the given bounds + getSize: function () { + return this.max.subtract(this.min); + }, + + // @method contains(otherBounds: Bounds): Boolean + // Returns `true` if the rectangle contains the given one. + // @alternative + // @method contains(point: Point): Boolean + // Returns `true` if the rectangle contains the given point. + contains: function (obj) { + var min, max; + + if (typeof obj[0] === 'number' || obj instanceof Point) { + obj = toPoint(obj); + } else { + obj = toBounds(obj); + } + + if (obj instanceof Bounds) { + min = obj.min; + max = obj.max; + } else { + min = max = obj; + } + + return (min.x >= this.min.x) && + (max.x <= this.max.x) && + (min.y >= this.min.y) && + (max.y <= this.max.y); + }, + + // @method intersects(otherBounds: Bounds): Boolean + // Returns `true` if the rectangle intersects the given bounds. Two bounds + // intersect if they have at least one point in common. + intersects: function (bounds) { // (Bounds) -> Boolean + bounds = toBounds(bounds); + + var min = this.min, + max = this.max, + min2 = bounds.min, + max2 = bounds.max, + xIntersects = (max2.x >= min.x) && (min2.x <= max.x), + yIntersects = (max2.y >= min.y) && (min2.y <= max.y); + + return xIntersects && yIntersects; + }, + + // @method overlaps(otherBounds: Bounds): Boolean + // Returns `true` if the rectangle overlaps the given bounds. Two bounds + // overlap if their intersection is an area. + overlaps: function (bounds) { // (Bounds) -> Boolean + bounds = toBounds(bounds); + + var min = this.min, + max = this.max, + min2 = bounds.min, + max2 = bounds.max, + xOverlaps = (max2.x > min.x) && (min2.x < max.x), + yOverlaps = (max2.y > min.y) && (min2.y < max.y); + + return xOverlaps && yOverlaps; + }, + + isValid: function () { + return !!(this.min && this.max); + } +}; + + +// @factory L.bounds(corner1: Point, corner2: Point) +// Creates a Bounds object from two corners coordinate pairs. +// @alternative +// @factory L.bounds(points: Point[]) +// Creates a Bounds object from the given array of points. +function toBounds(a, b) { + if (!a || a instanceof Bounds) { + return a; + } + return new Bounds(a, b); +} + +/* + * @class LatLngBounds + * @aka L.LatLngBounds + * + * Represents a rectangular geographical area on a map. + * + * @example + * + * ```js + * var corner1 = L.latLng(40.712, -74.227), + * corner2 = L.latLng(40.774, -74.125), + * bounds = L.latLngBounds(corner1, corner2); + * ``` + * + * All Leaflet methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this: + * + * ```js + * map.fitBounds([ + * [40.712, -74.227], + * [40.774, -74.125] + * ]); + * ``` + * + * Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners _outside_ the [-180, 180] degrees longitude range. + * + * Note that `LatLngBounds` does not inherit from Leaflet's `Class` object, + * which means new classes can't inherit from it, and new methods + * can't be added to it with the `include` function. + */ + +function LatLngBounds(corner1, corner2) { // (LatLng, LatLng) or (LatLng[]) + if (!corner1) { return; } + + var latlngs = corner2 ? [corner1, corner2] : corner1; + + for (var i = 0, len = latlngs.length; i < len; i++) { + this.extend(latlngs[i]); + } +} + +LatLngBounds.prototype = { + + // @method extend(latlng: LatLng): this + // Extend the bounds to contain the given point + + // @alternative + // @method extend(otherBounds: LatLngBounds): this + // Extend the bounds to contain the given bounds + extend: function (obj) { + var sw = this._southWest, + ne = this._northEast, + sw2, ne2; + + if (obj instanceof LatLng) { + sw2 = obj; + ne2 = obj; + + } else if (obj instanceof LatLngBounds) { + sw2 = obj._southWest; + ne2 = obj._northEast; + + if (!sw2 || !ne2) { return this; } + + } else { + return obj ? this.extend(toLatLng(obj) || toLatLngBounds(obj)) : this; + } + + if (!sw && !ne) { + this._southWest = new LatLng(sw2.lat, sw2.lng); + this._northEast = new LatLng(ne2.lat, ne2.lng); + } else { + sw.lat = Math.min(sw2.lat, sw.lat); + sw.lng = Math.min(sw2.lng, sw.lng); + ne.lat = Math.max(ne2.lat, ne.lat); + ne.lng = Math.max(ne2.lng, ne.lng); + } + + return this; + }, + + // @method pad(bufferRatio: Number): LatLngBounds + // Returns bounds created by extending or retracting the current bounds by a given ratio in each direction. + // For example, a ratio of 0.5 extends the bounds by 50% in each direction. + // Negative values will retract the bounds. + pad: function (bufferRatio) { + var sw = this._southWest, + ne = this._northEast, + heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio, + widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio; + + return new LatLngBounds( + new LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer), + new LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer)); + }, + + // @method getCenter(): LatLng + // Returns the center point of the bounds. + getCenter: function () { + return new LatLng( + (this._southWest.lat + this._northEast.lat) / 2, + (this._southWest.lng + this._northEast.lng) / 2); + }, + + // @method getSouthWest(): LatLng + // Returns the south-west point of the bounds. + getSouthWest: function () { + return this._southWest; + }, + + // @method getNorthEast(): LatLng + // Returns the north-east point of the bounds. + getNorthEast: function () { + return this._northEast; + }, + + // @method getNorthWest(): LatLng + // Returns the north-west point of the bounds. + getNorthWest: function () { + return new LatLng(this.getNorth(), this.getWest()); + }, + + // @method getSouthEast(): LatLng + // Returns the south-east point of the bounds. + getSouthEast: function () { + return new LatLng(this.getSouth(), this.getEast()); + }, + + // @method getWest(): Number + // Returns the west longitude of the bounds + getWest: function () { + return this._southWest.lng; + }, + + // @method getSouth(): Number + // Returns the south latitude of the bounds + getSouth: function () { + return this._southWest.lat; + }, + + // @method getEast(): Number + // Returns the east longitude of the bounds + getEast: function () { + return this._northEast.lng; + }, + + // @method getNorth(): Number + // Returns the north latitude of the bounds + getNorth: function () { + return this._northEast.lat; + }, + + // @method contains(otherBounds: LatLngBounds): Boolean + // Returns `true` if the rectangle contains the given one. + + // @alternative + // @method contains (latlng: LatLng): Boolean + // Returns `true` if the rectangle contains the given point. + contains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean + if (typeof obj[0] === 'number' || obj instanceof LatLng || 'lat' in obj) { + obj = toLatLng(obj); + } else { + obj = toLatLngBounds(obj); + } + + var sw = this._southWest, + ne = this._northEast, + sw2, ne2; + + if (obj instanceof LatLngBounds) { + sw2 = obj.getSouthWest(); + ne2 = obj.getNorthEast(); + } else { + sw2 = ne2 = obj; + } + + return (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) && + (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng); + }, + + // @method intersects(otherBounds: LatLngBounds): Boolean + // Returns `true` if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common. + intersects: function (bounds) { + bounds = toLatLngBounds(bounds); + + var sw = this._southWest, + ne = this._northEast, + sw2 = bounds.getSouthWest(), + ne2 = bounds.getNorthEast(), + + latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat), + lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng); + + return latIntersects && lngIntersects; + }, + + // @method overlaps(otherBounds: LatLngBounds): Boolean + // Returns `true` if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area. + overlaps: function (bounds) { + bounds = toLatLngBounds(bounds); + + var sw = this._southWest, + ne = this._northEast, + sw2 = bounds.getSouthWest(), + ne2 = bounds.getNorthEast(), + + latOverlaps = (ne2.lat > sw.lat) && (sw2.lat < ne.lat), + lngOverlaps = (ne2.lng > sw.lng) && (sw2.lng < ne.lng); + + return latOverlaps && lngOverlaps; + }, + + // @method toBBoxString(): String + // Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data. + toBBoxString: function () { + return [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(','); + }, + + // @method equals(otherBounds: LatLngBounds, maxMargin?: Number): Boolean + // Returns `true` if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting `maxMargin` to a small number. + equals: function (bounds, maxMargin) { + if (!bounds) { return false; } + + bounds = toLatLngBounds(bounds); + + return this._southWest.equals(bounds.getSouthWest(), maxMargin) && + this._northEast.equals(bounds.getNorthEast(), maxMargin); + }, + + // @method isValid(): Boolean + // Returns `true` if the bounds are properly initialized. + isValid: function () { + return !!(this._southWest && this._northEast); + } +}; + +// TODO International date line? + +// @factory L.latLngBounds(corner1: LatLng, corner2: LatLng) +// Creates a `LatLngBounds` object by defining two diagonally opposite corners of the rectangle. + +// @alternative +// @factory L.latLngBounds(latlngs: LatLng[]) +// Creates a `LatLngBounds` object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with [`fitBounds`](#map-fitbounds). +function toLatLngBounds(a, b) { + if (a instanceof LatLngBounds) { + return a; + } + return new LatLngBounds(a, b); +} + +/* @class LatLng + * @aka L.LatLng + * + * Represents a geographical point with a certain latitude and longitude. + * + * @example + * + * ``` + * var latlng = L.latLng(50.5, 30.5); + * ``` + * + * All Leaflet methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent: + * + * ``` + * map.panTo([50, 30]); + * map.panTo({lon: 30, lat: 50}); + * map.panTo({lat: 50, lng: 30}); + * map.panTo(L.latLng(50, 30)); + * ``` + * + * Note that `LatLng` does not inherit from Leaflet's `Class` object, + * which means new classes can't inherit from it, and new methods + * can't be added to it with the `include` function. + */ + +function LatLng(lat, lng, alt) { + if (isNaN(lat) || isNaN(lng)) { + throw new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')'); + } + + // @property lat: Number + // Latitude in degrees + this.lat = +lat; + + // @property lng: Number + // Longitude in degrees + this.lng = +lng; + + // @property alt: Number + // Altitude in meters (optional) + if (alt !== undefined) { + this.alt = +alt; + } +} + +LatLng.prototype = { + // @method equals(otherLatLng: LatLng, maxMargin?: Number): Boolean + // Returns `true` if the given `LatLng` point is at the same position (within a small margin of error). The margin of error can be overridden by setting `maxMargin` to a small number. + equals: function (obj, maxMargin) { + if (!obj) { return false; } + + obj = toLatLng(obj); + + var margin = Math.max( + Math.abs(this.lat - obj.lat), + Math.abs(this.lng - obj.lng)); + + return margin <= (maxMargin === undefined ? 1.0E-9 : maxMargin); + }, + + // @method toString(): String + // Returns a string representation of the point (for debugging purposes). + toString: function (precision) { + return 'LatLng(' + + formatNum(this.lat, precision) + ', ' + + formatNum(this.lng, precision) + ')'; + }, + + // @method distanceTo(otherLatLng: LatLng): Number + // Returns the distance (in meters) to the given `LatLng` calculated using the [Spherical Law of Cosines](https://en.wikipedia.org/wiki/Spherical_law_of_cosines). + distanceTo: function (other) { + return Earth.distance(this, toLatLng(other)); + }, + + // @method wrap(): LatLng + // Returns a new `LatLng` object with the longitude wrapped so it's always between -180 and +180 degrees. + wrap: function () { + return Earth.wrapLatLng(this); + }, + + // @method toBounds(sizeInMeters: Number): LatLngBounds + // Returns a new `LatLngBounds` object in which each boundary is `sizeInMeters/2` meters apart from the `LatLng`. + toBounds: function (sizeInMeters) { + var latAccuracy = 180 * sizeInMeters / 40075017, + lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat); + + return toLatLngBounds( + [this.lat - latAccuracy, this.lng - lngAccuracy], + [this.lat + latAccuracy, this.lng + lngAccuracy]); + }, + + clone: function () { + return new LatLng(this.lat, this.lng, this.alt); + } +}; + + + +// @factory L.latLng(latitude: Number, longitude: Number, altitude?: Number): LatLng +// Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude). + +// @alternative +// @factory L.latLng(coords: Array): LatLng +// Expects an array of the form `[Number, Number]` or `[Number, Number, Number]` instead. + +// @alternative +// @factory L.latLng(coords: Object): LatLng +// Expects an plain object of the form `{lat: Number, lng: Number}` or `{lat: Number, lng: Number, alt: Number}` instead. + +function toLatLng(a, b, c) { + if (a instanceof LatLng) { + return a; + } + if (isArray(a) && typeof a[0] !== 'object') { + if (a.length === 3) { + return new LatLng(a[0], a[1], a[2]); + } + if (a.length === 2) { + return new LatLng(a[0], a[1]); + } + return null; + } + if (a === undefined || a === null) { + return a; + } + if (typeof a === 'object' && 'lat' in a) { + return new LatLng(a.lat, 'lng' in a ? a.lng : a.lon, a.alt); + } + if (b === undefined) { + return null; + } + return new LatLng(a, b, c); +} + +/* + * @namespace CRS + * @crs L.CRS.Base + * Object that defines coordinate reference systems for projecting + * geographical points into pixel (screen) coordinates and back (and to + * coordinates in other units for [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services). See + * [spatial reference system](https://en.wikipedia.org/wiki/Spatial_reference_system). + * + * Leaflet defines the most usual CRSs by default. If you want to use a + * CRS not defined by default, take a look at the + * [Proj4Leaflet](https://github.com/kartena/Proj4Leaflet) plugin. + * + * Note that the CRS instances do not inherit from Leaflet's `Class` object, + * and can't be instantiated. Also, new classes can't inherit from them, + * and methods can't be added to them with the `include` function. + */ + +var CRS = { + // @method latLngToPoint(latlng: LatLng, zoom: Number): Point + // Projects geographical coordinates into pixel coordinates for a given zoom. + latLngToPoint: function (latlng, zoom) { + var projectedPoint = this.projection.project(latlng), + scale = this.scale(zoom); + + return this.transformation._transform(projectedPoint, scale); + }, + + // @method pointToLatLng(point: Point, zoom: Number): LatLng + // The inverse of `latLngToPoint`. Projects pixel coordinates on a given + // zoom into geographical coordinates. + pointToLatLng: function (point, zoom) { + var scale = this.scale(zoom), + untransformedPoint = this.transformation.untransform(point, scale); + + return this.projection.unproject(untransformedPoint); + }, + + // @method project(latlng: LatLng): Point + // Projects geographical coordinates into coordinates in units accepted for + // this CRS (e.g. meters for EPSG:3857, for passing it to WMS services). + project: function (latlng) { + return this.projection.project(latlng); + }, + + // @method unproject(point: Point): LatLng + // Given a projected coordinate returns the corresponding LatLng. + // The inverse of `project`. + unproject: function (point) { + return this.projection.unproject(point); + }, + + // @method scale(zoom: Number): Number + // Returns the scale used when transforming projected coordinates into + // pixel coordinates for a particular zoom. For example, it returns + // `256 * 2^zoom` for Mercator-based CRS. + scale: function (zoom) { + return 256 * Math.pow(2, zoom); + }, + + // @method zoom(scale: Number): Number + // Inverse of `scale()`, returns the zoom level corresponding to a scale + // factor of `scale`. + zoom: function (scale) { + return Math.log(scale / 256) / Math.LN2; + }, + + // @method getProjectedBounds(zoom: Number): Bounds + // Returns the projection's bounds scaled and transformed for the provided `zoom`. + getProjectedBounds: function (zoom) { + if (this.infinite) { return null; } + + var b = this.projection.bounds, + s = this.scale(zoom), + min = this.transformation.transform(b.min, s), + max = this.transformation.transform(b.max, s); + + return new Bounds(min, max); + }, + + // @method distance(latlng1: LatLng, latlng2: LatLng): Number + // Returns the distance between two geographical coordinates. + + // @property code: String + // Standard code name of the CRS passed into WMS services (e.g. `'EPSG:3857'`) + // + // @property wrapLng: Number[] + // An array of two numbers defining whether the longitude (horizontal) coordinate + // axis wraps around a given range and how. Defaults to `[-180, 180]` in most + // geographical CRSs. If `undefined`, the longitude axis does not wrap around. + // + // @property wrapLat: Number[] + // Like `wrapLng`, but for the latitude (vertical) axis. + + // wrapLng: [min, max], + // wrapLat: [min, max], + + // @property infinite: Boolean + // If true, the coordinate space will be unbounded (infinite in both axes) + infinite: false, + + // @method wrapLatLng(latlng: LatLng): LatLng + // Returns a `LatLng` where lat and lng has been wrapped according to the + // CRS's `wrapLat` and `wrapLng` properties, if they are outside the CRS's bounds. + wrapLatLng: function (latlng) { + var lng = this.wrapLng ? wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng, + lat = this.wrapLat ? wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat, + alt = latlng.alt; + + return new LatLng(lat, lng, alt); + }, + + // @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds + // Returns a `LatLngBounds` with the same size as the given one, ensuring + // that its center is within the CRS's bounds. + // Only accepts actual `L.LatLngBounds` instances, not arrays. + wrapLatLngBounds: function (bounds) { + var center = bounds.getCenter(), + newCenter = this.wrapLatLng(center), + latShift = center.lat - newCenter.lat, + lngShift = center.lng - newCenter.lng; + + if (latShift === 0 && lngShift === 0) { + return bounds; + } + + var sw = bounds.getSouthWest(), + ne = bounds.getNorthEast(), + newSw = new LatLng(sw.lat - latShift, sw.lng - lngShift), + newNe = new LatLng(ne.lat - latShift, ne.lng - lngShift); + + return new LatLngBounds(newSw, newNe); + } +}; + +/* + * @namespace CRS + * @crs L.CRS.Earth + * + * Serves as the base for CRS that are global such that they cover the earth. + * Can only be used as the base for other CRS and cannot be used directly, + * since it does not have a `code`, `projection` or `transformation`. `distance()` returns + * meters. + */ + +var Earth = extend({}, CRS, { + wrapLng: [-180, 180], + + // Mean Earth Radius, as recommended for use by + // the International Union of Geodesy and Geophysics, + // see https://rosettacode.org/wiki/Haversine_formula + R: 6371000, + + // distance between two geographical points using spherical law of cosines approximation + distance: function (latlng1, latlng2) { + var rad = Math.PI / 180, + lat1 = latlng1.lat * rad, + lat2 = latlng2.lat * rad, + sinDLat = Math.sin((latlng2.lat - latlng1.lat) * rad / 2), + sinDLon = Math.sin((latlng2.lng - latlng1.lng) * rad / 2), + a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon, + c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + return this.R * c; + } +}); + +/* + * @namespace Projection + * @projection L.Projection.SphericalMercator + * + * Spherical Mercator projection — the most common projection for online maps, + * used by almost all free and commercial tile providers. Assumes that Earth is + * a sphere. Used by the `EPSG:3857` CRS. + */ + +var earthRadius = 6378137; + +var SphericalMercator = { + + R: earthRadius, + MAX_LATITUDE: 85.0511287798, + + project: function (latlng) { + var d = Math.PI / 180, + max = this.MAX_LATITUDE, + lat = Math.max(Math.min(max, latlng.lat), -max), + sin = Math.sin(lat * d); + + return new Point( + this.R * latlng.lng * d, + this.R * Math.log((1 + sin) / (1 - sin)) / 2); + }, + + unproject: function (point) { + var d = 180 / Math.PI; + + return new LatLng( + (2 * Math.atan(Math.exp(point.y / this.R)) - (Math.PI / 2)) * d, + point.x * d / this.R); + }, + + bounds: (function () { + var d = earthRadius * Math.PI; + return new Bounds([-d, -d], [d, d]); + })() +}; + +/* + * @class Transformation + * @aka L.Transformation + * + * Represents an affine transformation: a set of coefficients `a`, `b`, `c`, `d` + * for transforming a point of a form `(x, y)` into `(a*x + b, c*y + d)` and doing + * the reverse. Used by Leaflet in its projections code. + * + * @example + * + * ```js + * var transformation = L.transformation(2, 5, -1, 10), + * p = L.point(1, 2), + * p2 = transformation.transform(p), // L.point(7, 8) + * p3 = transformation.untransform(p2); // L.point(1, 2) + * ``` + */ + + +// factory new L.Transformation(a: Number, b: Number, c: Number, d: Number) +// Creates a `Transformation` object with the given coefficients. +function Transformation(a, b, c, d) { + if (isArray(a)) { + // use array properties + this._a = a[0]; + this._b = a[1]; + this._c = a[2]; + this._d = a[3]; + return; + } + this._a = a; + this._b = b; + this._c = c; + this._d = d; +} + +Transformation.prototype = { + // @method transform(point: Point, scale?: Number): Point + // Returns a transformed point, optionally multiplied by the given scale. + // Only accepts actual `L.Point` instances, not arrays. + transform: function (point, scale) { // (Point, Number) -> Point + return this._transform(point.clone(), scale); + }, + + // destructive transform (faster) + _transform: function (point, scale) { + scale = scale || 1; + point.x = scale * (this._a * point.x + this._b); + point.y = scale * (this._c * point.y + this._d); + return point; + }, + + // @method untransform(point: Point, scale?: Number): Point + // Returns the reverse transformation of the given point, optionally divided + // by the given scale. Only accepts actual `L.Point` instances, not arrays. + untransform: function (point, scale) { + scale = scale || 1; + return new Point( + (point.x / scale - this._b) / this._a, + (point.y / scale - this._d) / this._c); + } +}; + +// factory L.transformation(a: Number, b: Number, c: Number, d: Number) + +// @factory L.transformation(a: Number, b: Number, c: Number, d: Number) +// Instantiates a Transformation object with the given coefficients. + +// @alternative +// @factory L.transformation(coefficients: Array): Transformation +// Expects an coefficients array of the form +// `[a: Number, b: Number, c: Number, d: Number]`. + +function toTransformation(a, b, c, d) { + return new Transformation(a, b, c, d); +} + +/* + * @namespace CRS + * @crs L.CRS.EPSG3857 + * + * The most common CRS for online maps, used by almost all free and commercial + * tile providers. Uses Spherical Mercator projection. Set in by default in + * Map's `crs` option. + */ + +var EPSG3857 = extend({}, Earth, { + code: 'EPSG:3857', + projection: SphericalMercator, + + transformation: (function () { + var scale = 0.5 / (Math.PI * SphericalMercator.R); + return toTransformation(scale, 0.5, -scale, 0.5); + }()) +}); + +var EPSG900913 = extend({}, EPSG3857, { + code: 'EPSG:900913' +}); + +// @namespace SVG; @section +// There are several static functions which can be called without instantiating L.SVG: + +// @function create(name: String): SVGElement +// Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement), +// corresponding to the class name passed. For example, using 'line' will return +// an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement). +function svgCreate(name) { + return document.createElementNS('http://www.w3.org/2000/svg', name); +} + +// @function pointsToPath(rings: Point[], closed: Boolean): String +// Generates a SVG path string for multiple rings, with each ring turning +// into "M..L..L.." instructions +function pointsToPath(rings, closed) { + var str = '', + i, j, len, len2, points, p; + + for (i = 0, len = rings.length; i < len; i++) { + points = rings[i]; + + for (j = 0, len2 = points.length; j < len2; j++) { + p = points[j]; + str += (j ? 'L' : 'M') + p.x + ' ' + p.y; + } + + // closes the ring for polygons; "x" is VML syntax + str += closed ? (Browser.svg ? 'z' : 'x') : ''; + } + + // SVG complains about empty path strings + return str || 'M0 0'; +} + +/* + * @namespace Browser + * @aka L.Browser + * + * A namespace with static properties for browser/feature detection used by Leaflet internally. + * + * @example + * + * ```js + * if (L.Browser.ielt9) { + * alert('Upgrade your browser, dude!'); + * } + * ``` + */ + +var style = document.documentElement.style; + +// @property ie: Boolean; `true` for all Internet Explorer versions (not Edge). +var ie = 'ActiveXObject' in window; + +// @property ielt9: Boolean; `true` for Internet Explorer versions less than 9. +var ielt9 = ie && !document.addEventListener; + +// @property edge: Boolean; `true` for the Edge web browser. +var edge = 'msLaunchUri' in navigator && !('documentMode' in document); + +// @property webkit: Boolean; +// `true` for webkit-based browsers like Chrome and Safari (including mobile versions). +var webkit = userAgentContains('webkit'); + +// @property android: Boolean +// **Deprecated.** `true` for any browser running on an Android platform. +var android = userAgentContains('android'); + +// @property android23: Boolean; **Deprecated.** `true` for browsers running on Android 2 or Android 3. +var android23 = userAgentContains('android 2') || userAgentContains('android 3'); + +/* See https://stackoverflow.com/a/17961266 for details on detecting stock Android */ +var webkitVer = parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10); // also matches AppleWebKit +// @property androidStock: Boolean; **Deprecated.** `true` for the Android stock browser (i.e. not Chrome) +var androidStock = android && userAgentContains('Google') && webkitVer < 537 && !('AudioNode' in window); + +// @property opera: Boolean; `true` for the Opera browser +var opera = !!window.opera; + +// @property chrome: Boolean; `true` for the Chrome browser. +var chrome = !edge && userAgentContains('chrome'); + +// @property gecko: Boolean; `true` for gecko-based browsers like Firefox. +var gecko = userAgentContains('gecko') && !webkit && !opera && !ie; + +// @property safari: Boolean; `true` for the Safari browser. +var safari = !chrome && userAgentContains('safari'); + +var phantom = userAgentContains('phantom'); + +// @property opera12: Boolean +// `true` for the Opera browser supporting CSS transforms (version 12 or later). +var opera12 = 'OTransition' in style; + +// @property win: Boolean; `true` when the browser is running in a Windows platform +var win = navigator.platform.indexOf('Win') === 0; + +// @property ie3d: Boolean; `true` for all Internet Explorer versions supporting CSS transforms. +var ie3d = ie && ('transition' in style); + +// @property webkit3d: Boolean; `true` for webkit-based browsers supporting CSS transforms. +var webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23; + +// @property gecko3d: Boolean; `true` for gecko-based browsers supporting CSS transforms. +var gecko3d = 'MozPerspective' in style; + +// @property any3d: Boolean +// `true` for all browsers supporting CSS transforms. +var any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantom; + +// @property mobile: Boolean; `true` for all browsers running in a mobile device. +var mobile = typeof orientation !== 'undefined' || userAgentContains('mobile'); + +// @property mobileWebkit: Boolean; `true` for all webkit-based browsers in a mobile device. +var mobileWebkit = mobile && webkit; + +// @property mobileWebkit3d: Boolean +// `true` for all webkit-based browsers in a mobile device supporting CSS transforms. +var mobileWebkit3d = mobile && webkit3d; + +// @property msPointer: Boolean +// `true` for browsers implementing the Microsoft touch events model (notably IE10). +var msPointer = !window.PointerEvent && window.MSPointerEvent; + +// @property pointer: Boolean +// `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx). +var pointer = !!(window.PointerEvent || msPointer); + +// @property touchNative: Boolean +// `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events). +// **This does not necessarily mean** that the browser is running in a computer with +// a touchscreen, it only means that the browser is capable of understanding +// touch events. +var touchNative = 'ontouchstart' in window || !!window.TouchEvent; + +// @property touch: Boolean +// `true` for all browsers supporting either [touch](#browser-touch) or [pointer](#browser-pointer) events. +// Note: pointer events will be preferred (if available), and processed for all `touch*` listeners. +var touch = !window.L_NO_TOUCH && (touchNative || pointer); + +// @property mobileOpera: Boolean; `true` for the Opera browser in a mobile device. +var mobileOpera = mobile && opera; + +// @property mobileGecko: Boolean +// `true` for gecko-based browsers running in a mobile device. +var mobileGecko = mobile && gecko; + +// @property retina: Boolean +// `true` for browsers on a high-resolution "retina" screen or on any screen when browser's display zoom is more than 100%. +var retina = (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1; + +// @property passiveEvents: Boolean +// `true` for browsers that support passive events. +var passiveEvents = (function () { + var supportsPassiveOption = false; + try { + var opts = Object.defineProperty({}, 'passive', { + get: function () { // eslint-disable-line getter-return + supportsPassiveOption = true; + } + }); + window.addEventListener('testPassiveEventSupport', falseFn, opts); + window.removeEventListener('testPassiveEventSupport', falseFn, opts); + } catch (e) { + // Errors can safely be ignored since this is only a browser support test. + } + return supportsPassiveOption; +}()); + +// @property canvas: Boolean +// `true` when the browser supports [``](https://developer.mozilla.org/docs/Web/API/Canvas_API). +var canvas$1 = (function () { + return !!document.createElement('canvas').getContext; +}()); + +// @property svg: Boolean +// `true` when the browser supports [SVG](https://developer.mozilla.org/docs/Web/SVG). +var svg$1 = !!(document.createElementNS && svgCreate('svg').createSVGRect); + +var inlineSvg = !!svg$1 && (function () { + var div = document.createElement('div'); + div.innerHTML = ''; + return (div.firstChild && div.firstChild.namespaceURI) === 'http://www.w3.org/2000/svg'; +})(); + +// @property vml: Boolean +// `true` if the browser supports [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language). +var vml = !svg$1 && (function () { + try { + var div = document.createElement('div'); + div.innerHTML = ''; + + var shape = div.firstChild; + shape.style.behavior = 'url(#default#VML)'; + + return shape && (typeof shape.adj === 'object'); + + } catch (e) { + return false; + } +}()); + +function userAgentContains(str) { + return navigator.userAgent.toLowerCase().indexOf(str) >= 0; +} + + +var Browser = { + ie: ie, + ielt9: ielt9, + edge: edge, + webkit: webkit, + android: android, + android23: android23, + androidStock: androidStock, + opera: opera, + chrome: chrome, + gecko: gecko, + safari: safari, + phantom: phantom, + opera12: opera12, + win: win, + ie3d: ie3d, + webkit3d: webkit3d, + gecko3d: gecko3d, + any3d: any3d, + mobile: mobile, + mobileWebkit: mobileWebkit, + mobileWebkit3d: mobileWebkit3d, + msPointer: msPointer, + pointer: pointer, + touch: touch, + touchNative: touchNative, + mobileOpera: mobileOpera, + mobileGecko: mobileGecko, + retina: retina, + passiveEvents: passiveEvents, + canvas: canvas$1, + svg: svg$1, + vml: vml, + inlineSvg: inlineSvg +}; + +/* + * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices. + */ + +var POINTER_DOWN = Browser.msPointer ? 'MSPointerDown' : 'pointerdown'; +var POINTER_MOVE = Browser.msPointer ? 'MSPointerMove' : 'pointermove'; +var POINTER_UP = Browser.msPointer ? 'MSPointerUp' : 'pointerup'; +var POINTER_CANCEL = Browser.msPointer ? 'MSPointerCancel' : 'pointercancel'; +var pEvent = { + touchstart : POINTER_DOWN, + touchmove : POINTER_MOVE, + touchend : POINTER_UP, + touchcancel : POINTER_CANCEL +}; +var handle = { + touchstart : _onPointerStart, + touchmove : _handlePointer, + touchend : _handlePointer, + touchcancel : _handlePointer +}; +var _pointers = {}; +var _pointerDocListener = false; + +// Provides a touch events wrapper for (ms)pointer events. +// ref https://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890 + +function addPointerListener(obj, type, handler) { + if (type === 'touchstart') { + _addPointerDocListener(); + } + if (!handle[type]) { + console.warn('wrong event specified:', type); + return L.Util.falseFn; + } + handler = handle[type].bind(this, handler); + obj.addEventListener(pEvent[type], handler, false); + return handler; +} + +function removePointerListener(obj, type, handler) { + if (!pEvent[type]) { + console.warn('wrong event specified:', type); + return; + } + obj.removeEventListener(pEvent[type], handler, false); +} + +function _globalPointerDown(e) { + _pointers[e.pointerId] = e; +} + +function _globalPointerMove(e) { + if (_pointers[e.pointerId]) { + _pointers[e.pointerId] = e; + } +} + +function _globalPointerUp(e) { + delete _pointers[e.pointerId]; +} + +function _addPointerDocListener() { + // need to keep track of what pointers and how many are active to provide e.touches emulation + if (!_pointerDocListener) { + // we listen document as any drags that end by moving the touch off the screen get fired there + document.addEventListener(POINTER_DOWN, _globalPointerDown, true); + document.addEventListener(POINTER_MOVE, _globalPointerMove, true); + document.addEventListener(POINTER_UP, _globalPointerUp, true); + document.addEventListener(POINTER_CANCEL, _globalPointerUp, true); + + _pointerDocListener = true; + } +} + +function _handlePointer(handler, e) { + if (e.pointerType === (e.MSPOINTER_TYPE_MOUSE || 'mouse')) { return; } + + e.touches = []; + for (var i in _pointers) { + e.touches.push(_pointers[i]); + } + e.changedTouches = [e]; + + handler(e); +} + +function _onPointerStart(handler, e) { + // IE10 specific: MsTouch needs preventDefault. See #2000 + if (e.MSPOINTER_TYPE_TOUCH && e.pointerType === e.MSPOINTER_TYPE_TOUCH) { + preventDefault(e); + } + _handlePointer(handler, e); +} + +/* + * Extends the event handling code with double tap support for mobile browsers. + * + * Note: currently most browsers fire native dblclick, with only a few exceptions + * (see https://github.com/Leaflet/Leaflet/issues/7012#issuecomment-595087386) + */ + +function makeDblclick(event) { + // in modern browsers `type` cannot be just overridden: + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Getter_only + var newEvent = {}, + prop, i; + for (i in event) { + prop = event[i]; + newEvent[i] = prop && prop.bind ? prop.bind(event) : prop; + } + event = newEvent; + newEvent.type = 'dblclick'; + newEvent.detail = 2; + newEvent.isTrusted = false; + newEvent._simulated = true; // for debug purposes + return newEvent; +} + +var delay = 200; +function addDoubleTapListener(obj, handler) { + // Most browsers handle double tap natively + obj.addEventListener('dblclick', handler); + + // On some platforms the browser doesn't fire native dblclicks for touch events. + // It seems that in all such cases `detail` property of `click` event is always `1`. + // So here we rely on that fact to avoid excessive 'dblclick' simulation when not needed. + var last = 0, + detail; + function simDblclick(e) { + if (e.detail !== 1) { + detail = e.detail; // keep in sync to avoid false dblclick in some cases + return; + } + + if (e.pointerType === 'mouse' || + (e.sourceCapabilities && !e.sourceCapabilities.firesTouchEvents)) { + + return; + } + + var now = Date.now(); + if (now - last <= delay) { + detail++; + if (detail === 2) { + handler(makeDblclick(e)); + } + } else { + detail = 1; + } + last = now; + } + + obj.addEventListener('click', simDblclick); + + return { + dblclick: handler, + simDblclick: simDblclick + }; +} + +function removeDoubleTapListener(obj, handlers) { + obj.removeEventListener('dblclick', handlers.dblclick); + obj.removeEventListener('click', handlers.simDblclick); +} + +/* + * @namespace DomUtil + * + * Utility functions to work with the [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model) + * tree, used by Leaflet internally. + * + * Most functions expecting or returning a `HTMLElement` also work for + * SVG elements. The only difference is that classes refer to CSS classes + * in HTML and SVG classes in SVG. + */ + + +// @property TRANSFORM: String +// Vendor-prefixed transform style name (e.g. `'webkitTransform'` for WebKit). +var TRANSFORM = testProp( + ['transform', 'webkitTransform', 'OTransform', 'MozTransform', 'msTransform']); + +// webkitTransition comes first because some browser versions that drop vendor prefix don't do +// the same for the transitionend event, in particular the Android 4.1 stock browser + +// @property TRANSITION: String +// Vendor-prefixed transition style name. +var TRANSITION = testProp( + ['webkitTransition', 'transition', 'OTransition', 'MozTransition', 'msTransition']); + +// @property TRANSITION_END: String +// Vendor-prefixed transitionend event name. +var TRANSITION_END = + TRANSITION === 'webkitTransition' || TRANSITION === 'OTransition' ? TRANSITION + 'End' : 'transitionend'; + + +// @function get(id: String|HTMLElement): HTMLElement +// Returns an element given its DOM id, or returns the element itself +// if it was passed directly. +function get(id) { + return typeof id === 'string' ? document.getElementById(id) : id; +} + +// @function getStyle(el: HTMLElement, styleAttrib: String): String +// Returns the value for a certain style attribute on an element, +// including computed values or values set through CSS. +function getStyle(el, style) { + var value = el.style[style] || (el.currentStyle && el.currentStyle[style]); + + if ((!value || value === 'auto') && document.defaultView) { + var css = document.defaultView.getComputedStyle(el, null); + value = css ? css[style] : null; + } + return value === 'auto' ? null : value; +} + +// @function create(tagName: String, className?: String, container?: HTMLElement): HTMLElement +// Creates an HTML element with `tagName`, sets its class to `className`, and optionally appends it to `container` element. +function create$1(tagName, className, container) { + var el = document.createElement(tagName); + el.className = className || ''; + + if (container) { + container.appendChild(el); + } + return el; +} + +// @function remove(el: HTMLElement) +// Removes `el` from its parent element +function remove(el) { + var parent = el.parentNode; + if (parent) { + parent.removeChild(el); + } +} + +// @function empty(el: HTMLElement) +// Removes all of `el`'s children elements from `el` +function empty(el) { + while (el.firstChild) { + el.removeChild(el.firstChild); + } +} + +// @function toFront(el: HTMLElement) +// Makes `el` the last child of its parent, so it renders in front of the other children. +function toFront(el) { + var parent = el.parentNode; + if (parent && parent.lastChild !== el) { + parent.appendChild(el); + } +} + +// @function toBack(el: HTMLElement) +// Makes `el` the first child of its parent, so it renders behind the other children. +function toBack(el) { + var parent = el.parentNode; + if (parent && parent.firstChild !== el) { + parent.insertBefore(el, parent.firstChild); + } +} + +// @function hasClass(el: HTMLElement, name: String): Boolean +// Returns `true` if the element's class attribute contains `name`. +function hasClass(el, name) { + if (el.classList !== undefined) { + return el.classList.contains(name); + } + var className = getClass(el); + return className.length > 0 && new RegExp('(^|\\s)' + name + '(\\s|$)').test(className); +} + +// @function addClass(el: HTMLElement, name: String) +// Adds `name` to the element's class attribute. +function addClass(el, name) { + if (el.classList !== undefined) { + var classes = splitWords(name); + for (var i = 0, len = classes.length; i < len; i++) { + el.classList.add(classes[i]); + } + } else if (!hasClass(el, name)) { + var className = getClass(el); + setClass(el, (className ? className + ' ' : '') + name); + } +} + +// @function removeClass(el: HTMLElement, name: String) +// Removes `name` from the element's class attribute. +function removeClass(el, name) { + if (el.classList !== undefined) { + el.classList.remove(name); + } else { + setClass(el, trim((' ' + getClass(el) + ' ').replace(' ' + name + ' ', ' '))); + } +} + +// @function setClass(el: HTMLElement, name: String) +// Sets the element's class. +function setClass(el, name) { + if (el.className.baseVal === undefined) { + el.className = name; + } else { + // in case of SVG element + el.className.baseVal = name; + } +} + +// @function getClass(el: HTMLElement): String +// Returns the element's class. +function getClass(el) { + // Check if the element is an SVGElementInstance and use the correspondingElement instead + // (Required for linked SVG elements in IE11.) + if (el.correspondingElement) { + el = el.correspondingElement; + } + return el.className.baseVal === undefined ? el.className : el.className.baseVal; +} + +// @function setOpacity(el: HTMLElement, opacity: Number) +// Set the opacity of an element (including old IE support). +// `opacity` must be a number from `0` to `1`. +function setOpacity(el, value) { + if ('opacity' in el.style) { + el.style.opacity = value; + } else if ('filter' in el.style) { + _setOpacityIE(el, value); + } +} + +function _setOpacityIE(el, value) { + var filter = false, + filterName = 'DXImageTransform.Microsoft.Alpha'; + + // filters collection throws an error if we try to retrieve a filter that doesn't exist + try { + filter = el.filters.item(filterName); + } catch (e) { + // don't set opacity to 1 if we haven't already set an opacity, + // it isn't needed and breaks transparent pngs. + if (value === 1) { return; } + } + + value = Math.round(value * 100); + + if (filter) { + filter.Enabled = (value !== 100); + filter.Opacity = value; + } else { + el.style.filter += ' progid:' + filterName + '(opacity=' + value + ')'; + } +} + +// @function testProp(props: String[]): String|false +// Goes through the array of style names and returns the first name +// that is a valid style name for an element. If no such name is found, +// it returns false. Useful for vendor-prefixed styles like `transform`. +function testProp(props) { + var style = document.documentElement.style; + + for (var i = 0; i < props.length; i++) { + if (props[i] in style) { + return props[i]; + } + } + return false; +} + +// @function setTransform(el: HTMLElement, offset: Point, scale?: Number) +// Resets the 3D CSS transform of `el` so it is translated by `offset` pixels +// and optionally scaled by `scale`. Does not have an effect if the +// browser doesn't support 3D CSS transforms. +function setTransform(el, offset, scale) { + var pos = offset || new Point(0, 0); + + el.style[TRANSFORM] = + (Browser.ie3d ? + 'translate(' + pos.x + 'px,' + pos.y + 'px)' : + 'translate3d(' + pos.x + 'px,' + pos.y + 'px,0)') + + (scale ? ' scale(' + scale + ')' : ''); +} + +// @function setPosition(el: HTMLElement, position: Point) +// Sets the position of `el` to coordinates specified by `position`, +// using CSS translate or top/left positioning depending on the browser +// (used by Leaflet internally to position its layers). +function setPosition(el, point) { + + /*eslint-disable */ + el._leaflet_pos = point; + /* eslint-enable */ + + if (Browser.any3d) { + setTransform(el, point); + } else { + el.style.left = point.x + 'px'; + el.style.top = point.y + 'px'; + } +} + +// @function getPosition(el: HTMLElement): Point +// Returns the coordinates of an element previously positioned with setPosition. +function getPosition(el) { + // this method is only used for elements previously positioned using setPosition, + // so it's safe to cache the position for performance + + return el._leaflet_pos || new Point(0, 0); +} + +// @function disableTextSelection() +// Prevents the user from generating `selectstart` DOM events, usually generated +// when the user drags the mouse through a page with text. Used internally +// by Leaflet to override the behaviour of any click-and-drag interaction on +// the map. Affects drag interactions on the whole document. + +// @function enableTextSelection() +// Cancels the effects of a previous [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection). +var disableTextSelection; +var enableTextSelection; +var _userSelect; +if ('onselectstart' in document) { + disableTextSelection = function () { + on(window, 'selectstart', preventDefault); + }; + enableTextSelection = function () { + off(window, 'selectstart', preventDefault); + }; +} else { + var userSelectProperty = testProp( + ['userSelect', 'WebkitUserSelect', 'OUserSelect', 'MozUserSelect', 'msUserSelect']); + + disableTextSelection = function () { + if (userSelectProperty) { + var style = document.documentElement.style; + _userSelect = style[userSelectProperty]; + style[userSelectProperty] = 'none'; + } + }; + enableTextSelection = function () { + if (userSelectProperty) { + document.documentElement.style[userSelectProperty] = _userSelect; + _userSelect = undefined; + } + }; +} + +// @function disableImageDrag() +// As [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection), but +// for `dragstart` DOM events, usually generated when the user drags an image. +function disableImageDrag() { + on(window, 'dragstart', preventDefault); +} + +// @function enableImageDrag() +// Cancels the effects of a previous [`L.DomUtil.disableImageDrag`](#domutil-disabletextselection). +function enableImageDrag() { + off(window, 'dragstart', preventDefault); +} + +var _outlineElement, _outlineStyle; +// @function preventOutline(el: HTMLElement) +// Makes the [outline](https://developer.mozilla.org/docs/Web/CSS/outline) +// of the element `el` invisible. Used internally by Leaflet to prevent +// focusable elements from displaying an outline when the user performs a +// drag interaction on them. +function preventOutline(element) { + while (element.tabIndex === -1) { + element = element.parentNode; + } + if (!element.style) { return; } + restoreOutline(); + _outlineElement = element; + _outlineStyle = element.style.outline; + element.style.outline = 'none'; + on(window, 'keydown', restoreOutline); +} + +// @function restoreOutline() +// Cancels the effects of a previous [`L.DomUtil.preventOutline`](). +function restoreOutline() { + if (!_outlineElement) { return; } + _outlineElement.style.outline = _outlineStyle; + _outlineElement = undefined; + _outlineStyle = undefined; + off(window, 'keydown', restoreOutline); +} + +// @function getSizedParentNode(el: HTMLElement): HTMLElement +// Finds the closest parent node which size (width and height) is not null. +function getSizedParentNode(element) { + do { + element = element.parentNode; + } while ((!element.offsetWidth || !element.offsetHeight) && element !== document.body); + return element; +} + +// @function getScale(el: HTMLElement): Object +// Computes the CSS scale currently applied on the element. +// Returns an object with `x` and `y` members as horizontal and vertical scales respectively, +// and `boundingClientRect` as the result of [`getBoundingClientRect()`](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). +function getScale(element) { + var rect = element.getBoundingClientRect(); // Read-only in old browsers. + + return { + x: rect.width / element.offsetWidth || 1, + y: rect.height / element.offsetHeight || 1, + boundingClientRect: rect + }; +} + +var DomUtil = { + __proto__: null, + TRANSFORM: TRANSFORM, + TRANSITION: TRANSITION, + TRANSITION_END: TRANSITION_END, + get: get, + getStyle: getStyle, + create: create$1, + remove: remove, + empty: empty, + toFront: toFront, + toBack: toBack, + hasClass: hasClass, + addClass: addClass, + removeClass: removeClass, + setClass: setClass, + getClass: getClass, + setOpacity: setOpacity, + testProp: testProp, + setTransform: setTransform, + setPosition: setPosition, + getPosition: getPosition, + get disableTextSelection () { return disableTextSelection; }, + get enableTextSelection () { return enableTextSelection; }, + disableImageDrag: disableImageDrag, + enableImageDrag: enableImageDrag, + preventOutline: preventOutline, + restoreOutline: restoreOutline, + getSizedParentNode: getSizedParentNode, + getScale: getScale +}; + +/* + * @namespace DomEvent + * Utility functions to work with the [DOM events](https://developer.mozilla.org/docs/Web/API/Event), used by Leaflet internally. + */ + +// Inspired by John Resig, Dean Edwards and YUI addEvent implementations. + +// @function on(el: HTMLElement, types: String, fn: Function, context?: Object): this +// Adds a listener function (`fn`) to a particular DOM event type of the +// element `el`. You can optionally specify the context of the listener +// (object the `this` keyword will point to). You can also pass several +// space-separated types (e.g. `'click dblclick'`). + +// @alternative +// @function on(el: HTMLElement, eventMap: Object, context?: Object): this +// Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}` +function on(obj, types, fn, context) { + + if (types && typeof types === 'object') { + for (var type in types) { + addOne(obj, type, types[type], fn); + } + } else { + types = splitWords(types); + + for (var i = 0, len = types.length; i < len; i++) { + addOne(obj, types[i], fn, context); + } + } + + return this; +} + +var eventsKey = '_leaflet_events'; + +// @function off(el: HTMLElement, types: String, fn: Function, context?: Object): this +// Removes a previously added listener function. +// Note that if you passed a custom context to on, you must pass the same +// context to `off` in order to remove the listener. + +// @alternative +// @function off(el: HTMLElement, eventMap: Object, context?: Object): this +// Removes a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}` + +// @alternative +// @function off(el: HTMLElement, types: String): this +// Removes all previously added listeners of given types. + +// @alternative +// @function off(el: HTMLElement): this +// Removes all previously added listeners from given HTMLElement +function off(obj, types, fn, context) { + + if (arguments.length === 1) { + batchRemove(obj); + delete obj[eventsKey]; + + } else if (types && typeof types === 'object') { + for (var type in types) { + removeOne(obj, type, types[type], fn); + } + + } else { + types = splitWords(types); + + if (arguments.length === 2) { + batchRemove(obj, function (type) { + return indexOf(types, type) !== -1; + }); + } else { + for (var i = 0, len = types.length; i < len; i++) { + removeOne(obj, types[i], fn, context); + } + } + } + + return this; +} + +function batchRemove(obj, filterFn) { + for (var id in obj[eventsKey]) { + var type = id.split(/\d/)[0]; + if (!filterFn || filterFn(type)) { + removeOne(obj, type, null, null, id); + } + } +} + +var mouseSubst = { + mouseenter: 'mouseover', + mouseleave: 'mouseout', + wheel: !('onwheel' in window) && 'mousewheel' +}; + +function addOne(obj, type, fn, context) { + var id = type + stamp(fn) + (context ? '_' + stamp(context) : ''); + + if (obj[eventsKey] && obj[eventsKey][id]) { return this; } + + var handler = function (e) { + return fn.call(context || obj, e || window.event); + }; + + var originalHandler = handler; + + if (!Browser.touchNative && Browser.pointer && type.indexOf('touch') === 0) { + // Needs DomEvent.Pointer.js + handler = addPointerListener(obj, type, handler); + + } else if (Browser.touch && (type === 'dblclick')) { + handler = addDoubleTapListener(obj, handler); + + } else if ('addEventListener' in obj) { + + if (type === 'touchstart' || type === 'touchmove' || type === 'wheel' || type === 'mousewheel') { + obj.addEventListener(mouseSubst[type] || type, handler, Browser.passiveEvents ? {passive: false} : false); + + } else if (type === 'mouseenter' || type === 'mouseleave') { + handler = function (e) { + e = e || window.event; + if (isExternalTarget(obj, e)) { + originalHandler(e); + } + }; + obj.addEventListener(mouseSubst[type], handler, false); + + } else { + obj.addEventListener(type, originalHandler, false); + } + + } else { + obj.attachEvent('on' + type, handler); + } + + obj[eventsKey] = obj[eventsKey] || {}; + obj[eventsKey][id] = handler; +} + +function removeOne(obj, type, fn, context, id) { + id = id || type + stamp(fn) + (context ? '_' + stamp(context) : ''); + var handler = obj[eventsKey] && obj[eventsKey][id]; + + if (!handler) { return this; } + + if (!Browser.touchNative && Browser.pointer && type.indexOf('touch') === 0) { + removePointerListener(obj, type, handler); + + } else if (Browser.touch && (type === 'dblclick')) { + removeDoubleTapListener(obj, handler); + + } else if ('removeEventListener' in obj) { + + obj.removeEventListener(mouseSubst[type] || type, handler, false); + + } else { + obj.detachEvent('on' + type, handler); + } + + obj[eventsKey][id] = null; +} + +// @function stopPropagation(ev: DOMEvent): this +// Stop the given event from propagation to parent elements. Used inside the listener functions: +// ```js +// L.DomEvent.on(div, 'click', function (ev) { +// L.DomEvent.stopPropagation(ev); +// }); +// ``` +function stopPropagation(e) { + + if (e.stopPropagation) { + e.stopPropagation(); + } else if (e.originalEvent) { // In case of Leaflet event. + e.originalEvent._stopped = true; + } else { + e.cancelBubble = true; + } + + return this; +} + +// @function disableScrollPropagation(el: HTMLElement): this +// Adds `stopPropagation` to the element's `'wheel'` events (plus browser variants). +function disableScrollPropagation(el) { + addOne(el, 'wheel', stopPropagation); + return this; +} + +// @function disableClickPropagation(el: HTMLElement): this +// Adds `stopPropagation` to the element's `'click'`, `'dblclick'`, `'contextmenu'`, +// `'mousedown'` and `'touchstart'` events (plus browser variants). +function disableClickPropagation(el) { + on(el, 'mousedown touchstart dblclick contextmenu', stopPropagation); + el['_leaflet_disable_click'] = true; + return this; +} + +// @function preventDefault(ev: DOMEvent): this +// Prevents the default action of the DOM Event `ev` from happening (such as +// following a link in the href of the a element, or doing a POST request +// with page reload when a `
` is submitted). +// Use it inside listener functions. +function preventDefault(e) { + if (e.preventDefault) { + e.preventDefault(); + } else { + e.returnValue = false; + } + return this; +} + +// @function stop(ev: DOMEvent): this +// Does `stopPropagation` and `preventDefault` at the same time. +function stop(e) { + preventDefault(e); + stopPropagation(e); + return this; +} + +// @function getMousePosition(ev: DOMEvent, container?: HTMLElement): Point +// Gets normalized mouse position from a DOM event relative to the +// `container` (border excluded) or to the whole page if not specified. +function getMousePosition(e, container) { + if (!container) { + return new Point(e.clientX, e.clientY); + } + + var scale = getScale(container), + offset = scale.boundingClientRect; // left and top values are in page scale (like the event clientX/Y) + + return new Point( + // offset.left/top values are in page scale (like clientX/Y), + // whereas clientLeft/Top (border width) values are the original values (before CSS scale applies). + (e.clientX - offset.left) / scale.x - container.clientLeft, + (e.clientY - offset.top) / scale.y - container.clientTop + ); +} + +// Chrome on Win scrolls double the pixels as in other platforms (see #4538), +// and Firefox scrolls device pixels, not CSS pixels +var wheelPxFactor = + (Browser.win && Browser.chrome) ? 2 * window.devicePixelRatio : + Browser.gecko ? window.devicePixelRatio : 1; + +// @function getWheelDelta(ev: DOMEvent): Number +// Gets normalized wheel delta from a wheel DOM event, in vertical +// pixels scrolled (negative if scrolling down). +// Events from pointing devices without precise scrolling are mapped to +// a best guess of 60 pixels. +function getWheelDelta(e) { + return (Browser.edge) ? e.wheelDeltaY / 2 : // Don't trust window-geometry-based delta + (e.deltaY && e.deltaMode === 0) ? -e.deltaY / wheelPxFactor : // Pixels + (e.deltaY && e.deltaMode === 1) ? -e.deltaY * 20 : // Lines + (e.deltaY && e.deltaMode === 2) ? -e.deltaY * 60 : // Pages + (e.deltaX || e.deltaZ) ? 0 : // Skip horizontal/depth wheel events + e.wheelDelta ? (e.wheelDeltaY || e.wheelDelta) / 2 : // Legacy IE pixels + (e.detail && Math.abs(e.detail) < 32765) ? -e.detail * 20 : // Legacy Moz lines + e.detail ? e.detail / -32765 * 60 : // Legacy Moz pages + 0; +} + +// check if element really left/entered the event target (for mouseenter/mouseleave) +function isExternalTarget(el, e) { + + var related = e.relatedTarget; + + if (!related) { return true; } + + try { + while (related && (related !== el)) { + related = related.parentNode; + } + } catch (err) { + return false; + } + return (related !== el); +} + +var DomEvent = { + __proto__: null, + on: on, + off: off, + stopPropagation: stopPropagation, + disableScrollPropagation: disableScrollPropagation, + disableClickPropagation: disableClickPropagation, + preventDefault: preventDefault, + stop: stop, + getMousePosition: getMousePosition, + getWheelDelta: getWheelDelta, + isExternalTarget: isExternalTarget, + addListener: on, + removeListener: off +}; + +/* + * @class PosAnimation + * @aka L.PosAnimation + * @inherits Evented + * Used internally for panning animations, utilizing CSS3 Transitions for modern browsers and a timer fallback for IE6-9. + * + * @example + * ```js + * var fx = new L.PosAnimation(); + * fx.run(el, [300, 500], 0.5); + * ``` + * + * @constructor L.PosAnimation() + * Creates a `PosAnimation` object. + * + */ + +var PosAnimation = Evented.extend({ + + // @method run(el: HTMLElement, newPos: Point, duration?: Number, easeLinearity?: Number) + // Run an animation of a given element to a new position, optionally setting + // duration in seconds (`0.25` by default) and easing linearity factor (3rd + // argument of the [cubic bezier curve](https://cubic-bezier.com/#0,0,.5,1), + // `0.5` by default). + run: function (el, newPos, duration, easeLinearity) { + this.stop(); + + this._el = el; + this._inProgress = true; + this._duration = duration || 0.25; + this._easeOutPower = 1 / Math.max(easeLinearity || 0.5, 0.2); + + this._startPos = getPosition(el); + this._offset = newPos.subtract(this._startPos); + this._startTime = +new Date(); + + // @event start: Event + // Fired when the animation starts + this.fire('start'); + + this._animate(); + }, + + // @method stop() + // Stops the animation (if currently running). + stop: function () { + if (!this._inProgress) { return; } + + this._step(true); + this._complete(); + }, + + _animate: function () { + // animation loop + this._animId = requestAnimFrame(this._animate, this); + this._step(); + }, + + _step: function (round) { + var elapsed = (+new Date()) - this._startTime, + duration = this._duration * 1000; + + if (elapsed < duration) { + this._runFrame(this._easeOut(elapsed / duration), round); + } else { + this._runFrame(1); + this._complete(); + } + }, + + _runFrame: function (progress, round) { + var pos = this._startPos.add(this._offset.multiplyBy(progress)); + if (round) { + pos._round(); + } + setPosition(this._el, pos); + + // @event step: Event + // Fired continuously during the animation. + this.fire('step'); + }, + + _complete: function () { + cancelAnimFrame(this._animId); + + this._inProgress = false; + // @event end: Event + // Fired when the animation ends. + this.fire('end'); + }, + + _easeOut: function (t) { + return 1 - Math.pow(1 - t, this._easeOutPower); + } +}); + +/* + * @class Map + * @aka L.Map + * @inherits Evented + * + * The central class of the API — it is used to create a map on a page and manipulate it. + * + * @example + * + * ```js + * // initialize the map on the "map" div with a given center and zoom + * var map = L.map('map', { + * center: [51.505, -0.09], + * zoom: 13 + * }); + * ``` + * + */ + +var Map = Evented.extend({ + + options: { + // @section Map State Options + // @option crs: CRS = L.CRS.EPSG3857 + // The [Coordinate Reference System](#crs) to use. Don't change this if you're not + // sure what it means. + crs: EPSG3857, + + // @option center: LatLng = undefined + // Initial geographic center of the map + center: undefined, + + // @option zoom: Number = undefined + // Initial map zoom level + zoom: undefined, + + // @option minZoom: Number = * + // Minimum zoom level of the map. + // If not specified and at least one `GridLayer` or `TileLayer` is in the map, + // the lowest of their `minZoom` options will be used instead. + minZoom: undefined, + + // @option maxZoom: Number = * + // Maximum zoom level of the map. + // If not specified and at least one `GridLayer` or `TileLayer` is in the map, + // the highest of their `maxZoom` options will be used instead. + maxZoom: undefined, + + // @option layers: Layer[] = [] + // Array of layers that will be added to the map initially + layers: [], + + // @option maxBounds: LatLngBounds = null + // When this option is set, the map restricts the view to the given + // geographical bounds, bouncing the user back if the user tries to pan + // outside the view. To set the restriction dynamically, use + // [`setMaxBounds`](#map-setmaxbounds) method. + maxBounds: undefined, + + // @option renderer: Renderer = * + // The default method for drawing vector layers on the map. `L.SVG` + // or `L.Canvas` by default depending on browser support. + renderer: undefined, + + + // @section Animation Options + // @option zoomAnimation: Boolean = true + // Whether the map zoom animation is enabled. By default it's enabled + // in all browsers that support CSS3 Transitions except Android. + zoomAnimation: true, + + // @option zoomAnimationThreshold: Number = 4 + // Won't animate zoom if the zoom difference exceeds this value. + zoomAnimationThreshold: 4, + + // @option fadeAnimation: Boolean = true + // Whether the tile fade animation is enabled. By default it's enabled + // in all browsers that support CSS3 Transitions except Android. + fadeAnimation: true, + + // @option markerZoomAnimation: Boolean = true + // Whether markers animate their zoom with the zoom animation, if disabled + // they will disappear for the length of the animation. By default it's + // enabled in all browsers that support CSS3 Transitions except Android. + markerZoomAnimation: true, + + // @option transform3DLimit: Number = 2^23 + // Defines the maximum size of a CSS translation transform. The default + // value should not be changed unless a web browser positions layers in + // the wrong place after doing a large `panBy`. + transform3DLimit: 8388608, // Precision limit of a 32-bit float + + // @section Interaction Options + // @option zoomSnap: Number = 1 + // Forces the map's zoom level to always be a multiple of this, particularly + // right after a [`fitBounds()`](#map-fitbounds) or a pinch-zoom. + // By default, the zoom level snaps to the nearest integer; lower values + // (e.g. `0.5` or `0.1`) allow for greater granularity. A value of `0` + // means the zoom level will not be snapped after `fitBounds` or a pinch-zoom. + zoomSnap: 1, + + // @option zoomDelta: Number = 1 + // Controls how much the map's zoom level will change after a + // [`zoomIn()`](#map-zoomin), [`zoomOut()`](#map-zoomout), pressing `+` + // or `-` on the keyboard, or using the [zoom controls](#control-zoom). + // Values smaller than `1` (e.g. `0.5`) allow for greater granularity. + zoomDelta: 1, + + // @option trackResize: Boolean = true + // Whether the map automatically handles browser window resize to update itself. + trackResize: true + }, + + initialize: function (id, options) { // (HTMLElement or String, Object) + options = setOptions(this, options); + + // Make sure to assign internal flags at the beginning, + // to avoid inconsistent state in some edge cases. + this._handlers = []; + this._layers = {}; + this._zoomBoundLayers = {}; + this._sizeChanged = true; + + this._initContainer(id); + this._initLayout(); + + // hack for https://github.com/Leaflet/Leaflet/issues/1980 + this._onResize = bind(this._onResize, this); + + this._initEvents(); + + if (options.maxBounds) { + this.setMaxBounds(options.maxBounds); + } + + if (options.zoom !== undefined) { + this._zoom = this._limitZoom(options.zoom); + } + + if (options.center && options.zoom !== undefined) { + this.setView(toLatLng(options.center), options.zoom, {reset: true}); + } + + this.callInitHooks(); + + // don't animate on browsers without hardware-accelerated transitions or old Android/Opera + this._zoomAnimated = TRANSITION && Browser.any3d && !Browser.mobileOpera && + this.options.zoomAnimation; + + // zoom transitions run with the same duration for all layers, so if one of transitionend events + // happens after starting zoom animation (propagating to the map pane), we know that it ended globally + if (this._zoomAnimated) { + this._createAnimProxy(); + on(this._proxy, TRANSITION_END, this._catchTransitionEnd, this); + } + + this._addLayers(this.options.layers); + }, + + + // @section Methods for modifying map state + + // @method setView(center: LatLng, zoom: Number, options?: Zoom/pan options): this + // Sets the view of the map (geographical center and zoom) with the given + // animation options. + setView: function (center, zoom, options) { + + zoom = zoom === undefined ? this._zoom : this._limitZoom(zoom); + center = this._limitCenter(toLatLng(center), zoom, this.options.maxBounds); + options = options || {}; + + this._stop(); + + if (this._loaded && !options.reset && options !== true) { + + if (options.animate !== undefined) { + options.zoom = extend({animate: options.animate}, options.zoom); + options.pan = extend({animate: options.animate, duration: options.duration}, options.pan); + } + + // try animating pan or zoom + var moved = (this._zoom !== zoom) ? + this._tryAnimatedZoom && this._tryAnimatedZoom(center, zoom, options.zoom) : + this._tryAnimatedPan(center, options.pan); + + if (moved) { + // prevent resize handler call, the view will refresh after animation anyway + clearTimeout(this._sizeTimer); + return this; + } + } + + // animation didn't start, just reset the map view + this._resetView(center, zoom); + + return this; + }, + + // @method setZoom(zoom: Number, options?: Zoom/pan options): this + // Sets the zoom of the map. + setZoom: function (zoom, options) { + if (!this._loaded) { + this._zoom = zoom; + return this; + } + return this.setView(this.getCenter(), zoom, {zoom: options}); + }, + + // @method zoomIn(delta?: Number, options?: Zoom options): this + // Increases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default). + zoomIn: function (delta, options) { + delta = delta || (Browser.any3d ? this.options.zoomDelta : 1); + return this.setZoom(this._zoom + delta, options); + }, + + // @method zoomOut(delta?: Number, options?: Zoom options): this + // Decreases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default). + zoomOut: function (delta, options) { + delta = delta || (Browser.any3d ? this.options.zoomDelta : 1); + return this.setZoom(this._zoom - delta, options); + }, + + // @method setZoomAround(latlng: LatLng, zoom: Number, options: Zoom options): this + // Zooms the map while keeping a specified geographical point on the map + // stationary (e.g. used internally for scroll zoom and double-click zoom). + // @alternative + // @method setZoomAround(offset: Point, zoom: Number, options: Zoom options): this + // Zooms the map while keeping a specified pixel on the map (relative to the top-left corner) stationary. + setZoomAround: function (latlng, zoom, options) { + var scale = this.getZoomScale(zoom), + viewHalf = this.getSize().divideBy(2), + containerPoint = latlng instanceof Point ? latlng : this.latLngToContainerPoint(latlng), + + centerOffset = containerPoint.subtract(viewHalf).multiplyBy(1 - 1 / scale), + newCenter = this.containerPointToLatLng(viewHalf.add(centerOffset)); + + return this.setView(newCenter, zoom, {zoom: options}); + }, + + _getBoundsCenterZoom: function (bounds, options) { + + options = options || {}; + bounds = bounds.getBounds ? bounds.getBounds() : toLatLngBounds(bounds); + + var paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]), + paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]), + + zoom = this.getBoundsZoom(bounds, false, paddingTL.add(paddingBR)); + + zoom = (typeof options.maxZoom === 'number') ? Math.min(options.maxZoom, zoom) : zoom; + + if (zoom === Infinity) { + return { + center: bounds.getCenter(), + zoom: zoom + }; + } + + var paddingOffset = paddingBR.subtract(paddingTL).divideBy(2), + + swPoint = this.project(bounds.getSouthWest(), zoom), + nePoint = this.project(bounds.getNorthEast(), zoom), + center = this.unproject(swPoint.add(nePoint).divideBy(2).add(paddingOffset), zoom); + + return { + center: center, + zoom: zoom + }; + }, + + // @method fitBounds(bounds: LatLngBounds, options?: fitBounds options): this + // Sets a map view that contains the given geographical bounds with the + // maximum zoom level possible. + fitBounds: function (bounds, options) { + + bounds = toLatLngBounds(bounds); + + if (!bounds.isValid()) { + throw new Error('Bounds are not valid.'); + } + + var target = this._getBoundsCenterZoom(bounds, options); + return this.setView(target.center, target.zoom, options); + }, + + // @method fitWorld(options?: fitBounds options): this + // Sets a map view that mostly contains the whole world with the maximum + // zoom level possible. + fitWorld: function (options) { + return this.fitBounds([[-90, -180], [90, 180]], options); + }, + + // @method panTo(latlng: LatLng, options?: Pan options): this + // Pans the map to a given center. + panTo: function (center, options) { // (LatLng) + return this.setView(center, this._zoom, {pan: options}); + }, + + // @method panBy(offset: Point, options?: Pan options): this + // Pans the map by a given number of pixels (animated). + panBy: function (offset, options) { + offset = toPoint(offset).round(); + options = options || {}; + + if (!offset.x && !offset.y) { + return this.fire('moveend'); + } + // If we pan too far, Chrome gets issues with tiles + // and makes them disappear or appear in the wrong place (slightly offset) #2602 + if (options.animate !== true && !this.getSize().contains(offset)) { + this._resetView(this.unproject(this.project(this.getCenter()).add(offset)), this.getZoom()); + return this; + } + + if (!this._panAnim) { + this._panAnim = new PosAnimation(); + + this._panAnim.on({ + 'step': this._onPanTransitionStep, + 'end': this._onPanTransitionEnd + }, this); + } + + // don't fire movestart if animating inertia + if (!options.noMoveStart) { + this.fire('movestart'); + } + + // animate pan unless animate: false specified + if (options.animate !== false) { + addClass(this._mapPane, 'leaflet-pan-anim'); + + var newPos = this._getMapPanePos().subtract(offset).round(); + this._panAnim.run(this._mapPane, newPos, options.duration || 0.25, options.easeLinearity); + } else { + this._rawPanBy(offset); + this.fire('move').fire('moveend'); + } + + return this; + }, + + // @method flyTo(latlng: LatLng, zoom?: Number, options?: Zoom/pan options): this + // Sets the view of the map (geographical center and zoom) performing a smooth + // pan-zoom animation. + flyTo: function (targetCenter, targetZoom, options) { + + options = options || {}; + if (options.animate === false || !Browser.any3d) { + return this.setView(targetCenter, targetZoom, options); + } + + this._stop(); + + var from = this.project(this.getCenter()), + to = this.project(targetCenter), + size = this.getSize(), + startZoom = this._zoom; + + targetCenter = toLatLng(targetCenter); + targetZoom = targetZoom === undefined ? startZoom : targetZoom; + + var w0 = Math.max(size.x, size.y), + w1 = w0 * this.getZoomScale(startZoom, targetZoom), + u1 = (to.distanceTo(from)) || 1, + rho = 1.42, + rho2 = rho * rho; + + function r(i) { + var s1 = i ? -1 : 1, + s2 = i ? w1 : w0, + t1 = w1 * w1 - w0 * w0 + s1 * rho2 * rho2 * u1 * u1, + b1 = 2 * s2 * rho2 * u1, + b = t1 / b1, + sq = Math.sqrt(b * b + 1) - b; + + // workaround for floating point precision bug when sq = 0, log = -Infinite, + // thus triggering an infinite loop in flyTo + var log = sq < 0.000000001 ? -18 : Math.log(sq); + + return log; + } + + function sinh(n) { return (Math.exp(n) - Math.exp(-n)) / 2; } + function cosh(n) { return (Math.exp(n) + Math.exp(-n)) / 2; } + function tanh(n) { return sinh(n) / cosh(n); } + + var r0 = r(0); + + function w(s) { return w0 * (cosh(r0) / cosh(r0 + rho * s)); } + function u(s) { return w0 * (cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2; } + + function easeOut(t) { return 1 - Math.pow(1 - t, 1.5); } + + var start = Date.now(), + S = (r(1) - r0) / rho, + duration = options.duration ? 1000 * options.duration : 1000 * S * 0.8; + + function frame() { + var t = (Date.now() - start) / duration, + s = easeOut(t) * S; + + if (t <= 1) { + this._flyToFrame = requestAnimFrame(frame, this); + + this._move( + this.unproject(from.add(to.subtract(from).multiplyBy(u(s) / u1)), startZoom), + this.getScaleZoom(w0 / w(s), startZoom), + {flyTo: true}); + + } else { + this + ._move(targetCenter, targetZoom) + ._moveEnd(true); + } + } + + this._moveStart(true, options.noMoveStart); + + frame.call(this); + return this; + }, + + // @method flyToBounds(bounds: LatLngBounds, options?: fitBounds options): this + // Sets the view of the map with a smooth animation like [`flyTo`](#map-flyto), + // but takes a bounds parameter like [`fitBounds`](#map-fitbounds). + flyToBounds: function (bounds, options) { + var target = this._getBoundsCenterZoom(bounds, options); + return this.flyTo(target.center, target.zoom, options); + }, + + // @method setMaxBounds(bounds: LatLngBounds): this + // Restricts the map view to the given bounds (see the [maxBounds](#map-maxbounds) option). + setMaxBounds: function (bounds) { + bounds = toLatLngBounds(bounds); + + if (!bounds.isValid()) { + this.options.maxBounds = null; + return this.off('moveend', this._panInsideMaxBounds); + } else if (this.options.maxBounds) { + this.off('moveend', this._panInsideMaxBounds); + } + + this.options.maxBounds = bounds; + + if (this._loaded) { + this._panInsideMaxBounds(); + } + + return this.on('moveend', this._panInsideMaxBounds); + }, + + // @method setMinZoom(zoom: Number): this + // Sets the lower limit for the available zoom levels (see the [minZoom](#map-minzoom) option). + setMinZoom: function (zoom) { + var oldZoom = this.options.minZoom; + this.options.minZoom = zoom; + + if (this._loaded && oldZoom !== zoom) { + this.fire('zoomlevelschange'); + + if (this.getZoom() < this.options.minZoom) { + return this.setZoom(zoom); + } + } + + return this; + }, + + // @method setMaxZoom(zoom: Number): this + // Sets the upper limit for the available zoom levels (see the [maxZoom](#map-maxzoom) option). + setMaxZoom: function (zoom) { + var oldZoom = this.options.maxZoom; + this.options.maxZoom = zoom; + + if (this._loaded && oldZoom !== zoom) { + this.fire('zoomlevelschange'); + + if (this.getZoom() > this.options.maxZoom) { + return this.setZoom(zoom); + } + } + + return this; + }, + + // @method panInsideBounds(bounds: LatLngBounds, options?: Pan options): this + // Pans the map to the closest view that would lie inside the given bounds (if it's not already), controlling the animation using the options specific, if any. + panInsideBounds: function (bounds, options) { + this._enforcingBounds = true; + var center = this.getCenter(), + newCenter = this._limitCenter(center, this._zoom, toLatLngBounds(bounds)); + + if (!center.equals(newCenter)) { + this.panTo(newCenter, options); + } + + this._enforcingBounds = false; + return this; + }, + + // @method panInside(latlng: LatLng, options?: padding options): this + // Pans the map the minimum amount to make the `latlng` visible. Use + // padding options to fit the display to more restricted bounds. + // If `latlng` is already within the (optionally padded) display bounds, + // the map will not be panned. + panInside: function (latlng, options) { + options = options || {}; + + var paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]), + paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]), + pixelCenter = this.project(this.getCenter()), + pixelPoint = this.project(latlng), + pixelBounds = this.getPixelBounds(), + paddedBounds = toBounds([pixelBounds.min.add(paddingTL), pixelBounds.max.subtract(paddingBR)]), + paddedSize = paddedBounds.getSize(); + + if (!paddedBounds.contains(pixelPoint)) { + this._enforcingBounds = true; + var centerOffset = pixelPoint.subtract(paddedBounds.getCenter()); + var offset = paddedBounds.extend(pixelPoint).getSize().subtract(paddedSize); + pixelCenter.x += centerOffset.x < 0 ? -offset.x : offset.x; + pixelCenter.y += centerOffset.y < 0 ? -offset.y : offset.y; + this.panTo(this.unproject(pixelCenter), options); + this._enforcingBounds = false; + } + return this; + }, + + // @method invalidateSize(options: Zoom/pan options): this + // Checks if the map container size changed and updates the map if so — + // call it after you've changed the map size dynamically, also animating + // pan by default. If `options.pan` is `false`, panning will not occur. + // If `options.debounceMoveend` is `true`, it will delay `moveend` event so + // that it doesn't happen often even if the method is called many + // times in a row. + + // @alternative + // @method invalidateSize(animate: Boolean): this + // Checks if the map container size changed and updates the map if so — + // call it after you've changed the map size dynamically, also animating + // pan by default. + invalidateSize: function (options) { + if (!this._loaded) { return this; } + + options = extend({ + animate: false, + pan: true + }, options === true ? {animate: true} : options); + + var oldSize = this.getSize(); + this._sizeChanged = true; + this._lastCenter = null; + + var newSize = this.getSize(), + oldCenter = oldSize.divideBy(2).round(), + newCenter = newSize.divideBy(2).round(), + offset = oldCenter.subtract(newCenter); + + if (!offset.x && !offset.y) { return this; } + + if (options.animate && options.pan) { + this.panBy(offset); + + } else { + if (options.pan) { + this._rawPanBy(offset); + } + + this.fire('move'); + + if (options.debounceMoveend) { + clearTimeout(this._sizeTimer); + this._sizeTimer = setTimeout(bind(this.fire, this, 'moveend'), 200); + } else { + this.fire('moveend'); + } + } + + // @section Map state change events + // @event resize: ResizeEvent + // Fired when the map is resized. + return this.fire('resize', { + oldSize: oldSize, + newSize: newSize + }); + }, + + // @section Methods for modifying map state + // @method stop(): this + // Stops the currently running `panTo` or `flyTo` animation, if any. + stop: function () { + this.setZoom(this._limitZoom(this._zoom)); + if (!this.options.zoomSnap) { + this.fire('viewreset'); + } + return this._stop(); + }, + + // @section Geolocation methods + // @method locate(options?: Locate options): this + // Tries to locate the user using the Geolocation API, firing a [`locationfound`](#map-locationfound) + // event with location data on success or a [`locationerror`](#map-locationerror) event on failure, + // and optionally sets the map view to the user's location with respect to + // detection accuracy (or to the world view if geolocation failed). + // Note that, if your page doesn't use HTTPS, this method will fail in + // modern browsers ([Chrome 50 and newer](https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins)) + // See `Locate options` for more details. + locate: function (options) { + + options = this._locateOptions = extend({ + timeout: 10000, + watch: false + // setView: false + // maxZoom: + // maximumAge: 0 + // enableHighAccuracy: false + }, options); + + if (!('geolocation' in navigator)) { + this._handleGeolocationError({ + code: 0, + message: 'Geolocation not supported.' + }); + return this; + } + + var onResponse = bind(this._handleGeolocationResponse, this), + onError = bind(this._handleGeolocationError, this); + + if (options.watch) { + this._locationWatchId = + navigator.geolocation.watchPosition(onResponse, onError, options); + } else { + navigator.geolocation.getCurrentPosition(onResponse, onError, options); + } + return this; + }, + + // @method stopLocate(): this + // Stops watching location previously initiated by `map.locate({watch: true})` + // and aborts resetting the map view if map.locate was called with + // `{setView: true}`. + stopLocate: function () { + if (navigator.geolocation && navigator.geolocation.clearWatch) { + navigator.geolocation.clearWatch(this._locationWatchId); + } + if (this._locateOptions) { + this._locateOptions.setView = false; + } + return this; + }, + + _handleGeolocationError: function (error) { + if (!this._container._leaflet_id) { return; } + + var c = error.code, + message = error.message || + (c === 1 ? 'permission denied' : + (c === 2 ? 'position unavailable' : 'timeout')); + + if (this._locateOptions.setView && !this._loaded) { + this.fitWorld(); + } + + // @section Location events + // @event locationerror: ErrorEvent + // Fired when geolocation (using the [`locate`](#map-locate) method) failed. + this.fire('locationerror', { + code: c, + message: 'Geolocation error: ' + message + '.' + }); + }, + + _handleGeolocationResponse: function (pos) { + if (!this._container._leaflet_id) { return; } + + var lat = pos.coords.latitude, + lng = pos.coords.longitude, + latlng = new LatLng(lat, lng), + bounds = latlng.toBounds(pos.coords.accuracy * 2), + options = this._locateOptions; + + if (options.setView) { + var zoom = this.getBoundsZoom(bounds); + this.setView(latlng, options.maxZoom ? Math.min(zoom, options.maxZoom) : zoom); + } + + var data = { + latlng: latlng, + bounds: bounds, + timestamp: pos.timestamp + }; + + for (var i in pos.coords) { + if (typeof pos.coords[i] === 'number') { + data[i] = pos.coords[i]; + } + } + + // @event locationfound: LocationEvent + // Fired when geolocation (using the [`locate`](#map-locate) method) + // went successfully. + this.fire('locationfound', data); + }, + + // TODO Appropriate docs section? + // @section Other Methods + // @method addHandler(name: String, HandlerClass: Function): this + // Adds a new `Handler` to the map, given its name and constructor function. + addHandler: function (name, HandlerClass) { + if (!HandlerClass) { return this; } + + var handler = this[name] = new HandlerClass(this); + + this._handlers.push(handler); + + if (this.options[name]) { + handler.enable(); + } + + return this; + }, + + // @method remove(): this + // Destroys the map and clears all related event listeners. + remove: function () { + + this._initEvents(true); + if (this.options.maxBounds) { this.off('moveend', this._panInsideMaxBounds); } + + if (this._containerId !== this._container._leaflet_id) { + throw new Error('Map container is being reused by another instance'); + } + + try { + // throws error in IE6-8 + delete this._container._leaflet_id; + delete this._containerId; + } catch (e) { + /*eslint-disable */ + this._container._leaflet_id = undefined; + /* eslint-enable */ + this._containerId = undefined; + } + + if (this._locationWatchId !== undefined) { + this.stopLocate(); + } + + this._stop(); + + remove(this._mapPane); + + if (this._clearControlPos) { + this._clearControlPos(); + } + if (this._resizeRequest) { + cancelAnimFrame(this._resizeRequest); + this._resizeRequest = null; + } + + this._clearHandlers(); + + if (this._loaded) { + // @section Map state change events + // @event unload: Event + // Fired when the map is destroyed with [remove](#map-remove) method. + this.fire('unload'); + } + + var i; + for (i in this._layers) { + this._layers[i].remove(); + } + for (i in this._panes) { + remove(this._panes[i]); + } + + this._layers = []; + this._panes = []; + delete this._mapPane; + delete this._renderer; + + return this; + }, + + // @section Other Methods + // @method createPane(name: String, container?: HTMLElement): HTMLElement + // Creates a new [map pane](#map-pane) with the given name if it doesn't exist already, + // then returns it. The pane is created as a child of `container`, or + // as a child of the main map pane if not set. + createPane: function (name, container) { + var className = 'leaflet-pane' + (name ? ' leaflet-' + name.replace('Pane', '') + '-pane' : ''), + pane = create$1('div', className, container || this._mapPane); + + if (name) { + this._panes[name] = pane; + } + return pane; + }, + + // @section Methods for Getting Map State + + // @method getCenter(): LatLng + // Returns the geographical center of the map view + getCenter: function () { + this._checkIfLoaded(); + + if (this._lastCenter && !this._moved()) { + return this._lastCenter; + } + return this.layerPointToLatLng(this._getCenterLayerPoint()); + }, + + // @method getZoom(): Number + // Returns the current zoom level of the map view + getZoom: function () { + return this._zoom; + }, + + // @method getBounds(): LatLngBounds + // Returns the geographical bounds visible in the current map view + getBounds: function () { + var bounds = this.getPixelBounds(), + sw = this.unproject(bounds.getBottomLeft()), + ne = this.unproject(bounds.getTopRight()); + + return new LatLngBounds(sw, ne); + }, + + // @method getMinZoom(): Number + // Returns the minimum zoom level of the map (if set in the `minZoom` option of the map or of any layers), or `0` by default. + getMinZoom: function () { + return this.options.minZoom === undefined ? this._layersMinZoom || 0 : this.options.minZoom; + }, + + // @method getMaxZoom(): Number + // Returns the maximum zoom level of the map (if set in the `maxZoom` option of the map or of any layers). + getMaxZoom: function () { + return this.options.maxZoom === undefined ? + (this._layersMaxZoom === undefined ? Infinity : this._layersMaxZoom) : + this.options.maxZoom; + }, + + // @method getBoundsZoom(bounds: LatLngBounds, inside?: Boolean, padding?: Point): Number + // Returns the maximum zoom level on which the given bounds fit to the map + // view in its entirety. If `inside` (optional) is set to `true`, the method + // instead returns the minimum zoom level on which the map view fits into + // the given bounds in its entirety. + getBoundsZoom: function (bounds, inside, padding) { // (LatLngBounds[, Boolean, Point]) -> Number + bounds = toLatLngBounds(bounds); + padding = toPoint(padding || [0, 0]); + + var zoom = this.getZoom() || 0, + min = this.getMinZoom(), + max = this.getMaxZoom(), + nw = bounds.getNorthWest(), + se = bounds.getSouthEast(), + size = this.getSize().subtract(padding), + boundsSize = toBounds(this.project(se, zoom), this.project(nw, zoom)).getSize(), + snap = Browser.any3d ? this.options.zoomSnap : 1, + scalex = size.x / boundsSize.x, + scaley = size.y / boundsSize.y, + scale = inside ? Math.max(scalex, scaley) : Math.min(scalex, scaley); + + zoom = this.getScaleZoom(scale, zoom); + + if (snap) { + zoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level + zoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap; + } + + return Math.max(min, Math.min(max, zoom)); + }, + + // @method getSize(): Point + // Returns the current size of the map container (in pixels). + getSize: function () { + if (!this._size || this._sizeChanged) { + this._size = new Point( + this._container.clientWidth || 0, + this._container.clientHeight || 0); + + this._sizeChanged = false; + } + return this._size.clone(); + }, + + // @method getPixelBounds(): Bounds + // Returns the bounds of the current map view in projected pixel + // coordinates (sometimes useful in layer and overlay implementations). + getPixelBounds: function (center, zoom) { + var topLeftPoint = this._getTopLeftPoint(center, zoom); + return new Bounds(topLeftPoint, topLeftPoint.add(this.getSize())); + }, + + // TODO: Check semantics - isn't the pixel origin the 0,0 coord relative to + // the map pane? "left point of the map layer" can be confusing, specially + // since there can be negative offsets. + // @method getPixelOrigin(): Point + // Returns the projected pixel coordinates of the top left point of + // the map layer (useful in custom layer and overlay implementations). + getPixelOrigin: function () { + this._checkIfLoaded(); + return this._pixelOrigin; + }, + + // @method getPixelWorldBounds(zoom?: Number): Bounds + // Returns the world's bounds in pixel coordinates for zoom level `zoom`. + // If `zoom` is omitted, the map's current zoom level is used. + getPixelWorldBounds: function (zoom) { + return this.options.crs.getProjectedBounds(zoom === undefined ? this.getZoom() : zoom); + }, + + // @section Other Methods + + // @method getPane(pane: String|HTMLElement): HTMLElement + // Returns a [map pane](#map-pane), given its name or its HTML element (its identity). + getPane: function (pane) { + return typeof pane === 'string' ? this._panes[pane] : pane; + }, + + // @method getPanes(): Object + // Returns a plain object containing the names of all [panes](#map-pane) as keys and + // the panes as values. + getPanes: function () { + return this._panes; + }, + + // @method getContainer: HTMLElement + // Returns the HTML element that contains the map. + getContainer: function () { + return this._container; + }, + + + // @section Conversion Methods + + // @method getZoomScale(toZoom: Number, fromZoom: Number): Number + // Returns the scale factor to be applied to a map transition from zoom level + // `fromZoom` to `toZoom`. Used internally to help with zoom animations. + getZoomScale: function (toZoom, fromZoom) { + // TODO replace with universal implementation after refactoring projections + var crs = this.options.crs; + fromZoom = fromZoom === undefined ? this._zoom : fromZoom; + return crs.scale(toZoom) / crs.scale(fromZoom); + }, + + // @method getScaleZoom(scale: Number, fromZoom: Number): Number + // Returns the zoom level that the map would end up at, if it is at `fromZoom` + // level and everything is scaled by a factor of `scale`. Inverse of + // [`getZoomScale`](#map-getZoomScale). + getScaleZoom: function (scale, fromZoom) { + var crs = this.options.crs; + fromZoom = fromZoom === undefined ? this._zoom : fromZoom; + var zoom = crs.zoom(scale * crs.scale(fromZoom)); + return isNaN(zoom) ? Infinity : zoom; + }, + + // @method project(latlng: LatLng, zoom: Number): Point + // Projects a geographical coordinate `LatLng` according to the projection + // of the map's CRS, then scales it according to `zoom` and the CRS's + // `Transformation`. The result is pixel coordinate relative to + // the CRS origin. + project: function (latlng, zoom) { + zoom = zoom === undefined ? this._zoom : zoom; + return this.options.crs.latLngToPoint(toLatLng(latlng), zoom); + }, + + // @method unproject(point: Point, zoom: Number): LatLng + // Inverse of [`project`](#map-project). + unproject: function (point, zoom) { + zoom = zoom === undefined ? this._zoom : zoom; + return this.options.crs.pointToLatLng(toPoint(point), zoom); + }, + + // @method layerPointToLatLng(point: Point): LatLng + // Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin), + // returns the corresponding geographical coordinate (for the current zoom level). + layerPointToLatLng: function (point) { + var projectedPoint = toPoint(point).add(this.getPixelOrigin()); + return this.unproject(projectedPoint); + }, + + // @method latLngToLayerPoint(latlng: LatLng): Point + // Given a geographical coordinate, returns the corresponding pixel coordinate + // relative to the [origin pixel](#map-getpixelorigin). + latLngToLayerPoint: function (latlng) { + var projectedPoint = this.project(toLatLng(latlng))._round(); + return projectedPoint._subtract(this.getPixelOrigin()); + }, + + // @method wrapLatLng(latlng: LatLng): LatLng + // Returns a `LatLng` where `lat` and `lng` has been wrapped according to the + // map's CRS's `wrapLat` and `wrapLng` properties, if they are outside the + // CRS's bounds. + // By default this means longitude is wrapped around the dateline so its + // value is between -180 and +180 degrees. + wrapLatLng: function (latlng) { + return this.options.crs.wrapLatLng(toLatLng(latlng)); + }, + + // @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds + // Returns a `LatLngBounds` with the same size as the given one, ensuring that + // its center is within the CRS's bounds. + // By default this means the center longitude is wrapped around the dateline so its + // value is between -180 and +180 degrees, and the majority of the bounds + // overlaps the CRS's bounds. + wrapLatLngBounds: function (latlng) { + return this.options.crs.wrapLatLngBounds(toLatLngBounds(latlng)); + }, + + // @method distance(latlng1: LatLng, latlng2: LatLng): Number + // Returns the distance between two geographical coordinates according to + // the map's CRS. By default this measures distance in meters. + distance: function (latlng1, latlng2) { + return this.options.crs.distance(toLatLng(latlng1), toLatLng(latlng2)); + }, + + // @method containerPointToLayerPoint(point: Point): Point + // Given a pixel coordinate relative to the map container, returns the corresponding + // pixel coordinate relative to the [origin pixel](#map-getpixelorigin). + containerPointToLayerPoint: function (point) { // (Point) + return toPoint(point).subtract(this._getMapPanePos()); + }, + + // @method layerPointToContainerPoint(point: Point): Point + // Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin), + // returns the corresponding pixel coordinate relative to the map container. + layerPointToContainerPoint: function (point) { // (Point) + return toPoint(point).add(this._getMapPanePos()); + }, + + // @method containerPointToLatLng(point: Point): LatLng + // Given a pixel coordinate relative to the map container, returns + // the corresponding geographical coordinate (for the current zoom level). + containerPointToLatLng: function (point) { + var layerPoint = this.containerPointToLayerPoint(toPoint(point)); + return this.layerPointToLatLng(layerPoint); + }, + + // @method latLngToContainerPoint(latlng: LatLng): Point + // Given a geographical coordinate, returns the corresponding pixel coordinate + // relative to the map container. + latLngToContainerPoint: function (latlng) { + return this.layerPointToContainerPoint(this.latLngToLayerPoint(toLatLng(latlng))); + }, + + // @method mouseEventToContainerPoint(ev: MouseEvent): Point + // Given a MouseEvent object, returns the pixel coordinate relative to the + // map container where the event took place. + mouseEventToContainerPoint: function (e) { + return getMousePosition(e, this._container); + }, + + // @method mouseEventToLayerPoint(ev: MouseEvent): Point + // Given a MouseEvent object, returns the pixel coordinate relative to + // the [origin pixel](#map-getpixelorigin) where the event took place. + mouseEventToLayerPoint: function (e) { + return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(e)); + }, + + // @method mouseEventToLatLng(ev: MouseEvent): LatLng + // Given a MouseEvent object, returns geographical coordinate where the + // event took place. + mouseEventToLatLng: function (e) { // (MouseEvent) + return this.layerPointToLatLng(this.mouseEventToLayerPoint(e)); + }, + + + // map initialization methods + + _initContainer: function (id) { + var container = this._container = get(id); + + if (!container) { + throw new Error('Map container not found.'); + } else if (container._leaflet_id) { + throw new Error('Map container is already initialized.'); + } + + on(container, 'scroll', this._onScroll, this); + this._containerId = stamp(container); + }, + + _initLayout: function () { + var container = this._container; + + this._fadeAnimated = this.options.fadeAnimation && Browser.any3d; + + addClass(container, 'leaflet-container' + + (Browser.touch ? ' leaflet-touch' : '') + + (Browser.retina ? ' leaflet-retina' : '') + + (Browser.ielt9 ? ' leaflet-oldie' : '') + + (Browser.safari ? ' leaflet-safari' : '') + + (this._fadeAnimated ? ' leaflet-fade-anim' : '')); + + var position = getStyle(container, 'position'); + + if (position !== 'absolute' && position !== 'relative' && position !== 'fixed') { + container.style.position = 'relative'; + } + + this._initPanes(); + + if (this._initControlPos) { + this._initControlPos(); + } + }, + + _initPanes: function () { + var panes = this._panes = {}; + this._paneRenderers = {}; + + // @section + // + // Panes are DOM elements used to control the ordering of layers on the map. You + // can access panes with [`map.getPane`](#map-getpane) or + // [`map.getPanes`](#map-getpanes) methods. New panes can be created with the + // [`map.createPane`](#map-createpane) method. + // + // Every map has the following default panes that differ only in zIndex. + // + // @pane mapPane: HTMLElement = 'auto' + // Pane that contains all other map panes + + this._mapPane = this.createPane('mapPane', this._container); + setPosition(this._mapPane, new Point(0, 0)); + + // @pane tilePane: HTMLElement = 200 + // Pane for `GridLayer`s and `TileLayer`s + this.createPane('tilePane'); + // @pane overlayPane: HTMLElement = 400 + // Pane for vectors (`Path`s, like `Polyline`s and `Polygon`s), `ImageOverlay`s and `VideoOverlay`s + this.createPane('overlayPane'); + // @pane shadowPane: HTMLElement = 500 + // Pane for overlay shadows (e.g. `Marker` shadows) + this.createPane('shadowPane'); + // @pane markerPane: HTMLElement = 600 + // Pane for `Icon`s of `Marker`s + this.createPane('markerPane'); + // @pane tooltipPane: HTMLElement = 650 + // Pane for `Tooltip`s. + this.createPane('tooltipPane'); + // @pane popupPane: HTMLElement = 700 + // Pane for `Popup`s. + this.createPane('popupPane'); + + if (!this.options.markerZoomAnimation) { + addClass(panes.markerPane, 'leaflet-zoom-hide'); + addClass(panes.shadowPane, 'leaflet-zoom-hide'); + } + }, + + + // private methods that modify map state + + // @section Map state change events + _resetView: function (center, zoom) { + setPosition(this._mapPane, new Point(0, 0)); + + var loading = !this._loaded; + this._loaded = true; + zoom = this._limitZoom(zoom); + + this.fire('viewprereset'); + + var zoomChanged = this._zoom !== zoom; + this + ._moveStart(zoomChanged, false) + ._move(center, zoom) + ._moveEnd(zoomChanged); + + // @event viewreset: Event + // Fired when the map needs to redraw its content (this usually happens + // on map zoom or load). Very useful for creating custom overlays. + this.fire('viewreset'); + + // @event load: Event + // Fired when the map is initialized (when its center and zoom are set + // for the first time). + if (loading) { + this.fire('load'); + } + }, + + _moveStart: function (zoomChanged, noMoveStart) { + // @event zoomstart: Event + // Fired when the map zoom is about to change (e.g. before zoom animation). + // @event movestart: Event + // Fired when the view of the map starts changing (e.g. user starts dragging the map). + if (zoomChanged) { + this.fire('zoomstart'); + } + if (!noMoveStart) { + this.fire('movestart'); + } + return this; + }, + + _move: function (center, zoom, data, supressEvent) { + if (zoom === undefined) { + zoom = this._zoom; + } + var zoomChanged = this._zoom !== zoom; + + this._zoom = zoom; + this._lastCenter = center; + this._pixelOrigin = this._getNewPixelOrigin(center); + + if (!supressEvent) { + // @event zoom: Event + // Fired repeatedly during any change in zoom level, + // including zoom and fly animations. + if (zoomChanged || (data && data.pinch)) { // Always fire 'zoom' if pinching because #3530 + this.fire('zoom', data); + } + + // @event move: Event + // Fired repeatedly during any movement of the map, + // including pan and fly animations. + this.fire('move', data); + } else if (data && data.pinch) { // Always fire 'zoom' if pinching because #3530 + this.fire('zoom', data); + } + return this; + }, + + _moveEnd: function (zoomChanged) { + // @event zoomend: Event + // Fired when the map zoom changed, after any animations. + if (zoomChanged) { + this.fire('zoomend'); + } + + // @event moveend: Event + // Fired when the center of the map stops changing + // (e.g. user stopped dragging the map or after non-centered zoom). + return this.fire('moveend'); + }, + + _stop: function () { + cancelAnimFrame(this._flyToFrame); + if (this._panAnim) { + this._panAnim.stop(); + } + return this; + }, + + _rawPanBy: function (offset) { + setPosition(this._mapPane, this._getMapPanePos().subtract(offset)); + }, + + _getZoomSpan: function () { + return this.getMaxZoom() - this.getMinZoom(); + }, + + _panInsideMaxBounds: function () { + if (!this._enforcingBounds) { + this.panInsideBounds(this.options.maxBounds); + } + }, + + _checkIfLoaded: function () { + if (!this._loaded) { + throw new Error('Set map center and zoom first.'); + } + }, + + // DOM event handling + + // @section Interaction events + _initEvents: function (remove) { + this._targets = {}; + this._targets[stamp(this._container)] = this; + + var onOff = remove ? off : on; + + // @event click: MouseEvent + // Fired when the user clicks (or taps) the map. + // @event dblclick: MouseEvent + // Fired when the user double-clicks (or double-taps) the map. + // @event mousedown: MouseEvent + // Fired when the user pushes the mouse button on the map. + // @event mouseup: MouseEvent + // Fired when the user releases the mouse button on the map. + // @event mouseover: MouseEvent + // Fired when the mouse enters the map. + // @event mouseout: MouseEvent + // Fired when the mouse leaves the map. + // @event mousemove: MouseEvent + // Fired while the mouse moves over the map. + // @event contextmenu: MouseEvent + // Fired when the user pushes the right mouse button on the map, prevents + // default browser context menu from showing if there are listeners on + // this event. Also fired on mobile when the user holds a single touch + // for a second (also called long press). + // @event keypress: KeyboardEvent + // Fired when the user presses a key from the keyboard that produces a character value while the map is focused. + // @event keydown: KeyboardEvent + // Fired when the user presses a key from the keyboard while the map is focused. Unlike the `keypress` event, + // the `keydown` event is fired for keys that produce a character value and for keys + // that do not produce a character value. + // @event keyup: KeyboardEvent + // Fired when the user releases a key from the keyboard while the map is focused. + onOff(this._container, 'click dblclick mousedown mouseup ' + + 'mouseover mouseout mousemove contextmenu keypress keydown keyup', this._handleDOMEvent, this); + + if (this.options.trackResize) { + onOff(window, 'resize', this._onResize, this); + } + + if (Browser.any3d && this.options.transform3DLimit) { + (remove ? this.off : this.on).call(this, 'moveend', this._onMoveEnd); + } + }, + + _onResize: function () { + cancelAnimFrame(this._resizeRequest); + this._resizeRequest = requestAnimFrame( + function () { this.invalidateSize({debounceMoveend: true}); }, this); + }, + + _onScroll: function () { + this._container.scrollTop = 0; + this._container.scrollLeft = 0; + }, + + _onMoveEnd: function () { + var pos = this._getMapPanePos(); + if (Math.max(Math.abs(pos.x), Math.abs(pos.y)) >= this.options.transform3DLimit) { + // https://bugzilla.mozilla.org/show_bug.cgi?id=1203873 but Webkit also have + // a pixel offset on very high values, see: https://jsfiddle.net/dg6r5hhb/ + this._resetView(this.getCenter(), this.getZoom()); + } + }, + + _findEventTargets: function (e, type) { + var targets = [], + target, + isHover = type === 'mouseout' || type === 'mouseover', + src = e.target || e.srcElement, + dragging = false; + + while (src) { + target = this._targets[stamp(src)]; + if (target && (type === 'click' || type === 'preclick') && this._draggableMoved(target)) { + // Prevent firing click after you just dragged an object. + dragging = true; + break; + } + if (target && target.listens(type, true)) { + if (isHover && !isExternalTarget(src, e)) { break; } + targets.push(target); + if (isHover) { break; } + } + if (src === this._container) { break; } + src = src.parentNode; + } + if (!targets.length && !dragging && !isHover && this.listens(type, true)) { + targets = [this]; + } + return targets; + }, + + _isClickDisabled: function (el) { + while (el !== this._container) { + if (el['_leaflet_disable_click']) { return true; } + el = el.parentNode; + } + }, + + _handleDOMEvent: function (e) { + var el = (e.target || e.srcElement); + if (!this._loaded || el['_leaflet_disable_events'] || e.type === 'click' && this._isClickDisabled(el)) { + return; + } + + var type = e.type; + + if (type === 'mousedown') { + // prevents outline when clicking on keyboard-focusable element + preventOutline(el); + } + + this._fireDOMEvent(e, type); + }, + + _mouseEvents: ['click', 'dblclick', 'mouseover', 'mouseout', 'contextmenu'], + + _fireDOMEvent: function (e, type, canvasTargets) { + + if (e.type === 'click') { + // Fire a synthetic 'preclick' event which propagates up (mainly for closing popups). + // @event preclick: MouseEvent + // Fired before mouse click on the map (sometimes useful when you + // want something to happen on click before any existing click + // handlers start running). + var synth = extend({}, e); + synth.type = 'preclick'; + this._fireDOMEvent(synth, synth.type, canvasTargets); + } + + // Find the layer the event is propagating from and its parents. + var targets = this._findEventTargets(e, type); + + if (canvasTargets) { + var filtered = []; // pick only targets with listeners + for (var i = 0; i < canvasTargets.length; i++) { + if (canvasTargets[i].listens(type, true)) { + filtered.push(canvasTargets[i]); + } + } + targets = filtered.concat(targets); + } + + if (!targets.length) { return; } + + if (type === 'contextmenu') { + preventDefault(e); + } + + var target = targets[0]; + var data = { + originalEvent: e + }; + + if (e.type !== 'keypress' && e.type !== 'keydown' && e.type !== 'keyup') { + var isMarker = target.getLatLng && (!target._radius || target._radius <= 10); + data.containerPoint = isMarker ? + this.latLngToContainerPoint(target.getLatLng()) : this.mouseEventToContainerPoint(e); + data.layerPoint = this.containerPointToLayerPoint(data.containerPoint); + data.latlng = isMarker ? target.getLatLng() : this.layerPointToLatLng(data.layerPoint); + } + + for (i = 0; i < targets.length; i++) { + targets[i].fire(type, data, true); + if (data.originalEvent._stopped || + (targets[i].options.bubblingMouseEvents === false && indexOf(this._mouseEvents, type) !== -1)) { return; } + } + }, + + _draggableMoved: function (obj) { + obj = obj.dragging && obj.dragging.enabled() ? obj : this; + return (obj.dragging && obj.dragging.moved()) || (this.boxZoom && this.boxZoom.moved()); + }, + + _clearHandlers: function () { + for (var i = 0, len = this._handlers.length; i < len; i++) { + this._handlers[i].disable(); + } + }, + + // @section Other Methods + + // @method whenReady(fn: Function, context?: Object): this + // Runs the given function `fn` when the map gets initialized with + // a view (center and zoom) and at least one layer, or immediately + // if it's already initialized, optionally passing a function context. + whenReady: function (callback, context) { + if (this._loaded) { + callback.call(context || this, {target: this}); + } else { + this.on('load', callback, context); + } + return this; + }, + + + // private methods for getting map state + + _getMapPanePos: function () { + return getPosition(this._mapPane) || new Point(0, 0); + }, + + _moved: function () { + var pos = this._getMapPanePos(); + return pos && !pos.equals([0, 0]); + }, + + _getTopLeftPoint: function (center, zoom) { + var pixelOrigin = center && zoom !== undefined ? + this._getNewPixelOrigin(center, zoom) : + this.getPixelOrigin(); + return pixelOrigin.subtract(this._getMapPanePos()); + }, + + _getNewPixelOrigin: function (center, zoom) { + var viewHalf = this.getSize()._divideBy(2); + return this.project(center, zoom)._subtract(viewHalf)._add(this._getMapPanePos())._round(); + }, + + _latLngToNewLayerPoint: function (latlng, zoom, center) { + var topLeft = this._getNewPixelOrigin(center, zoom); + return this.project(latlng, zoom)._subtract(topLeft); + }, + + _latLngBoundsToNewLayerBounds: function (latLngBounds, zoom, center) { + var topLeft = this._getNewPixelOrigin(center, zoom); + return toBounds([ + this.project(latLngBounds.getSouthWest(), zoom)._subtract(topLeft), + this.project(latLngBounds.getNorthWest(), zoom)._subtract(topLeft), + this.project(latLngBounds.getSouthEast(), zoom)._subtract(topLeft), + this.project(latLngBounds.getNorthEast(), zoom)._subtract(topLeft) + ]); + }, + + // layer point of the current center + _getCenterLayerPoint: function () { + return this.containerPointToLayerPoint(this.getSize()._divideBy(2)); + }, + + // offset of the specified place to the current center in pixels + _getCenterOffset: function (latlng) { + return this.latLngToLayerPoint(latlng).subtract(this._getCenterLayerPoint()); + }, + + // adjust center for view to get inside bounds + _limitCenter: function (center, zoom, bounds) { + + if (!bounds) { return center; } + + var centerPoint = this.project(center, zoom), + viewHalf = this.getSize().divideBy(2), + viewBounds = new Bounds(centerPoint.subtract(viewHalf), centerPoint.add(viewHalf)), + offset = this._getBoundsOffset(viewBounds, bounds, zoom); + + // If offset is less than a pixel, ignore. + // This prevents unstable projections from getting into + // an infinite loop of tiny offsets. + if (offset.round().equals([0, 0])) { + return center; + } + + return this.unproject(centerPoint.add(offset), zoom); + }, + + // adjust offset for view to get inside bounds + _limitOffset: function (offset, bounds) { + if (!bounds) { return offset; } + + var viewBounds = this.getPixelBounds(), + newBounds = new Bounds(viewBounds.min.add(offset), viewBounds.max.add(offset)); + + return offset.add(this._getBoundsOffset(newBounds, bounds)); + }, + + // returns offset needed for pxBounds to get inside maxBounds at a specified zoom + _getBoundsOffset: function (pxBounds, maxBounds, zoom) { + var projectedMaxBounds = toBounds( + this.project(maxBounds.getNorthEast(), zoom), + this.project(maxBounds.getSouthWest(), zoom) + ), + minOffset = projectedMaxBounds.min.subtract(pxBounds.min), + maxOffset = projectedMaxBounds.max.subtract(pxBounds.max), + + dx = this._rebound(minOffset.x, -maxOffset.x), + dy = this._rebound(minOffset.y, -maxOffset.y); + + return new Point(dx, dy); + }, + + _rebound: function (left, right) { + return left + right > 0 ? + Math.round(left - right) / 2 : + Math.max(0, Math.ceil(left)) - Math.max(0, Math.floor(right)); + }, + + _limitZoom: function (zoom) { + var min = this.getMinZoom(), + max = this.getMaxZoom(), + snap = Browser.any3d ? this.options.zoomSnap : 1; + if (snap) { + zoom = Math.round(zoom / snap) * snap; + } + return Math.max(min, Math.min(max, zoom)); + }, + + _onPanTransitionStep: function () { + this.fire('move'); + }, + + _onPanTransitionEnd: function () { + removeClass(this._mapPane, 'leaflet-pan-anim'); + this.fire('moveend'); + }, + + _tryAnimatedPan: function (center, options) { + // difference between the new and current centers in pixels + var offset = this._getCenterOffset(center)._trunc(); + + // don't animate too far unless animate: true specified in options + if ((options && options.animate) !== true && !this.getSize().contains(offset)) { return false; } + + this.panBy(offset, options); + + return true; + }, + + _createAnimProxy: function () { + + var proxy = this._proxy = create$1('div', 'leaflet-proxy leaflet-zoom-animated'); + this._panes.mapPane.appendChild(proxy); + + this.on('zoomanim', function (e) { + var prop = TRANSFORM, + transform = this._proxy.style[prop]; + + setTransform(this._proxy, this.project(e.center, e.zoom), this.getZoomScale(e.zoom, 1)); + + // workaround for case when transform is the same and so transitionend event is not fired + if (transform === this._proxy.style[prop] && this._animatingZoom) { + this._onZoomTransitionEnd(); + } + }, this); + + this.on('load moveend', this._animMoveEnd, this); + + this._on('unload', this._destroyAnimProxy, this); + }, + + _destroyAnimProxy: function () { + remove(this._proxy); + this.off('load moveend', this._animMoveEnd, this); + delete this._proxy; + }, + + _animMoveEnd: function () { + var c = this.getCenter(), + z = this.getZoom(); + setTransform(this._proxy, this.project(c, z), this.getZoomScale(z, 1)); + }, + + _catchTransitionEnd: function (e) { + if (this._animatingZoom && e.propertyName.indexOf('transform') >= 0) { + this._onZoomTransitionEnd(); + } + }, + + _nothingToAnimate: function () { + return !this._container.getElementsByClassName('leaflet-zoom-animated').length; + }, + + _tryAnimatedZoom: function (center, zoom, options) { + + if (this._animatingZoom) { return true; } + + options = options || {}; + + // don't animate if disabled, not supported or zoom difference is too large + if (!this._zoomAnimated || options.animate === false || this._nothingToAnimate() || + Math.abs(zoom - this._zoom) > this.options.zoomAnimationThreshold) { return false; } + + // offset is the pixel coords of the zoom origin relative to the current center + var scale = this.getZoomScale(zoom), + offset = this._getCenterOffset(center)._divideBy(1 - 1 / scale); + + // don't animate if the zoom origin isn't within one screen from the current center, unless forced + if (options.animate !== true && !this.getSize().contains(offset)) { return false; } + + requestAnimFrame(function () { + this + ._moveStart(true, false) + ._animateZoom(center, zoom, true); + }, this); + + return true; + }, + + _animateZoom: function (center, zoom, startAnim, noUpdate) { + if (!this._mapPane) { return; } + + if (startAnim) { + this._animatingZoom = true; + + // remember what center/zoom to set after animation + this._animateToCenter = center; + this._animateToZoom = zoom; + + addClass(this._mapPane, 'leaflet-zoom-anim'); + } + + // @section Other Events + // @event zoomanim: ZoomAnimEvent + // Fired at least once per zoom animation. For continuous zoom, like pinch zooming, fired once per frame during zoom. + this.fire('zoomanim', { + center: center, + zoom: zoom, + noUpdate: noUpdate + }); + + if (!this._tempFireZoomEvent) { + this._tempFireZoomEvent = this._zoom !== this._animateToZoom; + } + + this._move(this._animateToCenter, this._animateToZoom, undefined, true); + + // Work around webkit not firing 'transitionend', see https://github.com/Leaflet/Leaflet/issues/3689, 2693 + setTimeout(bind(this._onZoomTransitionEnd, this), 250); + }, + + _onZoomTransitionEnd: function () { + if (!this._animatingZoom) { return; } + + if (this._mapPane) { + removeClass(this._mapPane, 'leaflet-zoom-anim'); + } + + this._animatingZoom = false; + + this._move(this._animateToCenter, this._animateToZoom, undefined, true); + + if (this._tempFireZoomEvent) { + this.fire('zoom'); + } + delete this._tempFireZoomEvent; + + this.fire('move'); + + this._moveEnd(true); + } +}); + +// @section + +// @factory L.map(id: String, options?: Map options) +// Instantiates a map object given the DOM ID of a `
` element +// and optionally an object literal with `Map options`. +// +// @alternative +// @factory L.map(el: HTMLElement, options?: Map options) +// Instantiates a map object given an instance of a `
` HTML element +// and optionally an object literal with `Map options`. +function createMap(id, options) { + return new Map(id, options); +} + +/* + * @class Control + * @aka L.Control + * @inherits Class + * + * L.Control is a base class for implementing map controls. Handles positioning. + * All other controls extend from this class. + */ + +var Control = Class.extend({ + // @section + // @aka Control Options + options: { + // @option position: String = 'topright' + // The position of the control (one of the map corners). Possible values are `'topleft'`, + // `'topright'`, `'bottomleft'` or `'bottomright'` + position: 'topright' + }, + + initialize: function (options) { + setOptions(this, options); + }, + + /* @section + * Classes extending L.Control will inherit the following methods: + * + * @method getPosition: string + * Returns the position of the control. + */ + getPosition: function () { + return this.options.position; + }, + + // @method setPosition(position: string): this + // Sets the position of the control. + setPosition: function (position) { + var map = this._map; + + if (map) { + map.removeControl(this); + } + + this.options.position = position; + + if (map) { + map.addControl(this); + } + + return this; + }, + + // @method getContainer: HTMLElement + // Returns the HTMLElement that contains the control. + getContainer: function () { + return this._container; + }, + + // @method addTo(map: Map): this + // Adds the control to the given map. + addTo: function (map) { + this.remove(); + this._map = map; + + var container = this._container = this.onAdd(map), + pos = this.getPosition(), + corner = map._controlCorners[pos]; + + addClass(container, 'leaflet-control'); + + if (pos.indexOf('bottom') !== -1) { + corner.insertBefore(container, corner.firstChild); + } else { + corner.appendChild(container); + } + + this._map.on('unload', this.remove, this); + + return this; + }, + + // @method remove: this + // Removes the control from the map it is currently active on. + remove: function () { + if (!this._map) { + return this; + } + + remove(this._container); + + if (this.onRemove) { + this.onRemove(this._map); + } + + this._map.off('unload', this.remove, this); + this._map = null; + + return this; + }, + + _refocusOnMap: function (e) { + // if map exists and event is not a keyboard event + if (this._map && e && e.screenX > 0 && e.screenY > 0) { + this._map.getContainer().focus(); + } + } +}); + +var control = function (options) { + return new Control(options); +}; + +/* @section Extension methods + * @uninheritable + * + * Every control should extend from `L.Control` and (re-)implement the following methods. + * + * @method onAdd(map: Map): HTMLElement + * Should return the container DOM element for the control and add listeners on relevant map events. Called on [`control.addTo(map)`](#control-addTo). + * + * @method onRemove(map: Map) + * Optional method. Should contain all clean up code that removes the listeners previously added in [`onAdd`](#control-onadd). Called on [`control.remove()`](#control-remove). + */ + +/* @namespace Map + * @section Methods for Layers and Controls + */ +Map.include({ + // @method addControl(control: Control): this + // Adds the given control to the map + addControl: function (control) { + control.addTo(this); + return this; + }, + + // @method removeControl(control: Control): this + // Removes the given control from the map + removeControl: function (control) { + control.remove(); + return this; + }, + + _initControlPos: function () { + var corners = this._controlCorners = {}, + l = 'leaflet-', + container = this._controlContainer = + create$1('div', l + 'control-container', this._container); + + function createCorner(vSide, hSide) { + var className = l + vSide + ' ' + l + hSide; + + corners[vSide + hSide] = create$1('div', className, container); + } + + createCorner('top', 'left'); + createCorner('top', 'right'); + createCorner('bottom', 'left'); + createCorner('bottom', 'right'); + }, + + _clearControlPos: function () { + for (var i in this._controlCorners) { + remove(this._controlCorners[i]); + } + remove(this._controlContainer); + delete this._controlCorners; + delete this._controlContainer; + } +}); + +/* + * @class Control.Layers + * @aka L.Control.Layers + * @inherits Control + * + * The layers control gives users the ability to switch between different base layers and switch overlays on/off (check out the [detailed example](https://leafletjs.com/examples/layers-control/)). Extends `Control`. + * + * @example + * + * ```js + * var baseLayers = { + * "Mapbox": mapbox, + * "OpenStreetMap": osm + * }; + * + * var overlays = { + * "Marker": marker, + * "Roads": roadsLayer + * }; + * + * L.control.layers(baseLayers, overlays).addTo(map); + * ``` + * + * The `baseLayers` and `overlays` parameters are object literals with layer names as keys and `Layer` objects as values: + * + * ```js + * { + * "": layer1, + * "": layer2 + * } + * ``` + * + * The layer names can contain HTML, which allows you to add additional styling to the items: + * + * ```js + * {" My Layer": myLayer} + * ``` + */ + +var Layers = Control.extend({ + // @section + // @aka Control.Layers options + options: { + // @option collapsed: Boolean = true + // If `true`, the control will be collapsed into an icon and expanded on mouse hover, touch, or keyboard activation. + collapsed: true, + position: 'topright', + + // @option autoZIndex: Boolean = true + // If `true`, the control will assign zIndexes in increasing order to all of its layers so that the order is preserved when switching them on/off. + autoZIndex: true, + + // @option hideSingleBase: Boolean = false + // If `true`, the base layers in the control will be hidden when there is only one. + hideSingleBase: false, + + // @option sortLayers: Boolean = false + // Whether to sort the layers. When `false`, layers will keep the order + // in which they were added to the control. + sortLayers: false, + + // @option sortFunction: Function = * + // A [compare function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) + // that will be used for sorting the layers, when `sortLayers` is `true`. + // The function receives both the `L.Layer` instances and their names, as in + // `sortFunction(layerA, layerB, nameA, nameB)`. + // By default, it sorts layers alphabetically by their name. + sortFunction: function (layerA, layerB, nameA, nameB) { + return nameA < nameB ? -1 : (nameB < nameA ? 1 : 0); + } + }, + + initialize: function (baseLayers, overlays, options) { + setOptions(this, options); + + this._layerControlInputs = []; + this._layers = []; + this._lastZIndex = 0; + this._handlingClick = false; + + for (var i in baseLayers) { + this._addLayer(baseLayers[i], i); + } + + for (i in overlays) { + this._addLayer(overlays[i], i, true); + } + }, + + onAdd: function (map) { + this._initLayout(); + this._update(); + + this._map = map; + map.on('zoomend', this._checkDisabledLayers, this); + + for (var i = 0; i < this._layers.length; i++) { + this._layers[i].layer.on('add remove', this._onLayerChange, this); + } + + return this._container; + }, + + addTo: function (map) { + Control.prototype.addTo.call(this, map); + // Trigger expand after Layers Control has been inserted into DOM so that is now has an actual height. + return this._expandIfNotCollapsed(); + }, + + onRemove: function () { + this._map.off('zoomend', this._checkDisabledLayers, this); + + for (var i = 0; i < this._layers.length; i++) { + this._layers[i].layer.off('add remove', this._onLayerChange, this); + } + }, + + // @method addBaseLayer(layer: Layer, name: String): this + // Adds a base layer (radio button entry) with the given name to the control. + addBaseLayer: function (layer, name) { + this._addLayer(layer, name); + return (this._map) ? this._update() : this; + }, + + // @method addOverlay(layer: Layer, name: String): this + // Adds an overlay (checkbox entry) with the given name to the control. + addOverlay: function (layer, name) { + this._addLayer(layer, name, true); + return (this._map) ? this._update() : this; + }, + + // @method removeLayer(layer: Layer): this + // Remove the given layer from the control. + removeLayer: function (layer) { + layer.off('add remove', this._onLayerChange, this); + + var obj = this._getLayer(stamp(layer)); + if (obj) { + this._layers.splice(this._layers.indexOf(obj), 1); + } + return (this._map) ? this._update() : this; + }, + + // @method expand(): this + // Expand the control container if collapsed. + expand: function () { + addClass(this._container, 'leaflet-control-layers-expanded'); + this._section.style.height = null; + var acceptableHeight = this._map.getSize().y - (this._container.offsetTop + 50); + if (acceptableHeight < this._section.clientHeight) { + addClass(this._section, 'leaflet-control-layers-scrollbar'); + this._section.style.height = acceptableHeight + 'px'; + } else { + removeClass(this._section, 'leaflet-control-layers-scrollbar'); + } + this._checkDisabledLayers(); + return this; + }, + + // @method collapse(): this + // Collapse the control container if expanded. + collapse: function () { + removeClass(this._container, 'leaflet-control-layers-expanded'); + return this; + }, + + _initLayout: function () { + var className = 'leaflet-control-layers', + container = this._container = create$1('div', className), + collapsed = this.options.collapsed; + + // makes this work on IE touch devices by stopping it from firing a mouseout event when the touch is released + container.setAttribute('aria-haspopup', true); + + disableClickPropagation(container); + disableScrollPropagation(container); + + var section = this._section = create$1('section', className + '-list'); + + if (collapsed) { + this._map.on('click', this.collapse, this); + + on(container, { + mouseenter: function () { + on(section, 'click', preventDefault); + this.expand(); + setTimeout(function () { + off(section, 'click', preventDefault); + }); + }, + mouseleave: this.collapse + }, this); + } + + var link = this._layersLink = create$1('a', className + '-toggle', container); + link.href = '#'; + link.title = 'Layers'; + link.setAttribute('role', 'button'); + + on(link, 'click', preventDefault); // prevent link function + on(link, 'focus', this.expand, this); + + if (!collapsed) { + this.expand(); + } + + this._baseLayersList = create$1('div', className + '-base', section); + this._separator = create$1('div', className + '-separator', section); + this._overlaysList = create$1('div', className + '-overlays', section); + + container.appendChild(section); + }, + + _getLayer: function (id) { + for (var i = 0; i < this._layers.length; i++) { + + if (this._layers[i] && stamp(this._layers[i].layer) === id) { + return this._layers[i]; + } + } + }, + + _addLayer: function (layer, name, overlay) { + if (this._map) { + layer.on('add remove', this._onLayerChange, this); + } + + this._layers.push({ + layer: layer, + name: name, + overlay: overlay + }); + + if (this.options.sortLayers) { + this._layers.sort(bind(function (a, b) { + return this.options.sortFunction(a.layer, b.layer, a.name, b.name); + }, this)); + } + + if (this.options.autoZIndex && layer.setZIndex) { + this._lastZIndex++; + layer.setZIndex(this._lastZIndex); + } + + this._expandIfNotCollapsed(); + }, + + _update: function () { + if (!this._container) { return this; } + + empty(this._baseLayersList); + empty(this._overlaysList); + + this._layerControlInputs = []; + var baseLayersPresent, overlaysPresent, i, obj, baseLayersCount = 0; + + for (i = 0; i < this._layers.length; i++) { + obj = this._layers[i]; + this._addItem(obj); + overlaysPresent = overlaysPresent || obj.overlay; + baseLayersPresent = baseLayersPresent || !obj.overlay; + baseLayersCount += !obj.overlay ? 1 : 0; + } + + // Hide base layers section if there's only one layer. + if (this.options.hideSingleBase) { + baseLayersPresent = baseLayersPresent && baseLayersCount > 1; + this._baseLayersList.style.display = baseLayersPresent ? '' : 'none'; + } + + this._separator.style.display = overlaysPresent && baseLayersPresent ? '' : 'none'; + + return this; + }, + + _onLayerChange: function (e) { + if (!this._handlingClick) { + this._update(); + } + + var obj = this._getLayer(stamp(e.target)); + + // @namespace Map + // @section Layer events + // @event baselayerchange: LayersControlEvent + // Fired when the base layer is changed through the [layers control](#control-layers). + // @event overlayadd: LayersControlEvent + // Fired when an overlay is selected through the [layers control](#control-layers). + // @event overlayremove: LayersControlEvent + // Fired when an overlay is deselected through the [layers control](#control-layers). + // @namespace Control.Layers + var type = obj.overlay ? + (e.type === 'add' ? 'overlayadd' : 'overlayremove') : + (e.type === 'add' ? 'baselayerchange' : null); + + if (type) { + this._map.fire(type, obj); + } + }, + + // IE7 bugs out if you create a radio dynamically, so you have to do it this hacky way (see https://stackoverflow.com/a/119079) + _createRadioElement: function (name, checked) { + + var radioHtml = ''; + + var radioFragment = document.createElement('div'); + radioFragment.innerHTML = radioHtml; + + return radioFragment.firstChild; + }, + + _addItem: function (obj) { + var label = document.createElement('label'), + checked = this._map.hasLayer(obj.layer), + input; + + if (obj.overlay) { + input = document.createElement('input'); + input.type = 'checkbox'; + input.className = 'leaflet-control-layers-selector'; + input.defaultChecked = checked; + } else { + input = this._createRadioElement('leaflet-base-layers_' + stamp(this), checked); + } + + this._layerControlInputs.push(input); + input.layerId = stamp(obj.layer); + + on(input, 'click', this._onInputClick, this); + + var name = document.createElement('span'); + name.innerHTML = ' ' + obj.name; + + // Helps from preventing layer control flicker when checkboxes are disabled + // https://github.com/Leaflet/Leaflet/issues/2771 + var holder = document.createElement('span'); + + label.appendChild(holder); + holder.appendChild(input); + holder.appendChild(name); + + var container = obj.overlay ? this._overlaysList : this._baseLayersList; + container.appendChild(label); + + this._checkDisabledLayers(); + return label; + }, + + _onInputClick: function () { + var inputs = this._layerControlInputs, + input, layer; + var addedLayers = [], + removedLayers = []; + + this._handlingClick = true; + + for (var i = inputs.length - 1; i >= 0; i--) { + input = inputs[i]; + layer = this._getLayer(input.layerId).layer; + + if (input.checked) { + addedLayers.push(layer); + } else if (!input.checked) { + removedLayers.push(layer); + } + } + + // Bugfix issue 2318: Should remove all old layers before readding new ones + for (i = 0; i < removedLayers.length; i++) { + if (this._map.hasLayer(removedLayers[i])) { + this._map.removeLayer(removedLayers[i]); + } + } + for (i = 0; i < addedLayers.length; i++) { + if (!this._map.hasLayer(addedLayers[i])) { + this._map.addLayer(addedLayers[i]); + } + } + + this._handlingClick = false; + + this._refocusOnMap(); + }, + + _checkDisabledLayers: function () { + var inputs = this._layerControlInputs, + input, + layer, + zoom = this._map.getZoom(); + + for (var i = inputs.length - 1; i >= 0; i--) { + input = inputs[i]; + layer = this._getLayer(input.layerId).layer; + input.disabled = (layer.options.minZoom !== undefined && zoom < layer.options.minZoom) || + (layer.options.maxZoom !== undefined && zoom > layer.options.maxZoom); + + } + }, + + _expandIfNotCollapsed: function () { + if (this._map && !this.options.collapsed) { + this.expand(); + } + return this; + } + +}); + + +// @factory L.control.layers(baselayers?: Object, overlays?: Object, options?: Control.Layers options) +// Creates a layers control with the given layers. Base layers will be switched with radio buttons, while overlays will be switched with checkboxes. Note that all base layers should be passed in the base layers object, but only one should be added to the map during map instantiation. +var layers = function (baseLayers, overlays, options) { + return new Layers(baseLayers, overlays, options); +}; + +/* + * @class Control.Zoom + * @aka L.Control.Zoom + * @inherits Control + * + * A basic zoom control with two buttons (zoom in and zoom out). It is put on the map by default unless you set its [`zoomControl` option](#map-zoomcontrol) to `false`. Extends `Control`. + */ + +var Zoom = Control.extend({ + // @section + // @aka Control.Zoom options + options: { + position: 'topleft', + + // @option zoomInText: String = '' + // The text set on the 'zoom in' button. + zoomInText: '', + + // @option zoomInTitle: String = 'Zoom in' + // The title set on the 'zoom in' button. + zoomInTitle: 'Zoom in', + + // @option zoomOutText: String = '' + // The text set on the 'zoom out' button. + zoomOutText: '', + + // @option zoomOutTitle: String = 'Zoom out' + // The title set on the 'zoom out' button. + zoomOutTitle: 'Zoom out' + }, + + onAdd: function (map) { + var zoomName = 'leaflet-control-zoom', + container = create$1('div', zoomName + ' leaflet-bar'), + options = this.options; + + this._zoomInButton = this._createButton(options.zoomInText, options.zoomInTitle, + zoomName + '-in', container, this._zoomIn); + this._zoomOutButton = this._createButton(options.zoomOutText, options.zoomOutTitle, + zoomName + '-out', container, this._zoomOut); + + this._updateDisabled(); + map.on('zoomend zoomlevelschange', this._updateDisabled, this); + + return container; + }, + + onRemove: function (map) { + map.off('zoomend zoomlevelschange', this._updateDisabled, this); + }, + + disable: function () { + this._disabled = true; + this._updateDisabled(); + return this; + }, + + enable: function () { + this._disabled = false; + this._updateDisabled(); + return this; + }, + + _zoomIn: function (e) { + if (!this._disabled && this._map._zoom < this._map.getMaxZoom()) { + this._map.zoomIn(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1)); + } + }, + + _zoomOut: function (e) { + if (!this._disabled && this._map._zoom > this._map.getMinZoom()) { + this._map.zoomOut(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1)); + } + }, + + _createButton: function (html, title, className, container, fn) { + var link = create$1('a', className, container); + link.innerHTML = html; + link.href = '#'; + link.title = title; + + /* + * Will force screen readers like VoiceOver to read this as "Zoom in - button" + */ + link.setAttribute('role', 'button'); + link.setAttribute('aria-label', title); + + disableClickPropagation(link); + on(link, 'click', stop); + on(link, 'click', fn, this); + on(link, 'click', this._refocusOnMap, this); + + return link; + }, + + _updateDisabled: function () { + var map = this._map, + className = 'leaflet-disabled'; + + removeClass(this._zoomInButton, className); + removeClass(this._zoomOutButton, className); + this._zoomInButton.setAttribute('aria-disabled', 'false'); + this._zoomOutButton.setAttribute('aria-disabled', 'false'); + + if (this._disabled || map._zoom === map.getMinZoom()) { + addClass(this._zoomOutButton, className); + this._zoomOutButton.setAttribute('aria-disabled', 'true'); + } + if (this._disabled || map._zoom === map.getMaxZoom()) { + addClass(this._zoomInButton, className); + this._zoomInButton.setAttribute('aria-disabled', 'true'); + } + } +}); + +// @namespace Map +// @section Control options +// @option zoomControl: Boolean = true +// Whether a [zoom control](#control-zoom) is added to the map by default. +Map.mergeOptions({ + zoomControl: true +}); + +Map.addInitHook(function () { + if (this.options.zoomControl) { + // @section Controls + // @property zoomControl: Control.Zoom + // The default zoom control (only available if the + // [`zoomControl` option](#map-zoomcontrol) was `true` when creating the map). + this.zoomControl = new Zoom(); + this.addControl(this.zoomControl); + } +}); + +// @namespace Control.Zoom +// @factory L.control.zoom(options: Control.Zoom options) +// Creates a zoom control +var zoom = function (options) { + return new Zoom(options); +}; + +/* + * @class Control.Scale + * @aka L.Control.Scale + * @inherits Control + * + * A simple scale control that shows the scale of the current center of screen in metric (m/km) and imperial (mi/ft) systems. Extends `Control`. + * + * @example + * + * ```js + * L.control.scale().addTo(map); + * ``` + */ + +var Scale = Control.extend({ + // @section + // @aka Control.Scale options + options: { + position: 'bottomleft', + + // @option maxWidth: Number = 100 + // Maximum width of the control in pixels. The width is set dynamically to show round values (e.g. 100, 200, 500). + maxWidth: 100, + + // @option metric: Boolean = True + // Whether to show the metric scale line (m/km). + metric: true, + + // @option imperial: Boolean = True + // Whether to show the imperial scale line (mi/ft). + imperial: true + + // @option updateWhenIdle: Boolean = false + // If `true`, the control is updated on [`moveend`](#map-moveend), otherwise it's always up-to-date (updated on [`move`](#map-move)). + }, + + onAdd: function (map) { + var className = 'leaflet-control-scale', + container = create$1('div', className), + options = this.options; + + this._addScales(options, className + '-line', container); + + map.on(options.updateWhenIdle ? 'moveend' : 'move', this._update, this); + map.whenReady(this._update, this); + + return container; + }, + + onRemove: function (map) { + map.off(this.options.updateWhenIdle ? 'moveend' : 'move', this._update, this); + }, + + _addScales: function (options, className, container) { + if (options.metric) { + this._mScale = create$1('div', className, container); + } + if (options.imperial) { + this._iScale = create$1('div', className, container); + } + }, + + _update: function () { + var map = this._map, + y = map.getSize().y / 2; + + var maxMeters = map.distance( + map.containerPointToLatLng([0, y]), + map.containerPointToLatLng([this.options.maxWidth, y])); + + this._updateScales(maxMeters); + }, + + _updateScales: function (maxMeters) { + if (this.options.metric && maxMeters) { + this._updateMetric(maxMeters); + } + if (this.options.imperial && maxMeters) { + this._updateImperial(maxMeters); + } + }, + + _updateMetric: function (maxMeters) { + var meters = this._getRoundNum(maxMeters), + label = meters < 1000 ? meters + ' m' : (meters / 1000) + ' km'; + + this._updateScale(this._mScale, label, meters / maxMeters); + }, + + _updateImperial: function (maxMeters) { + var maxFeet = maxMeters * 3.2808399, + maxMiles, miles, feet; + + if (maxFeet > 5280) { + maxMiles = maxFeet / 5280; + miles = this._getRoundNum(maxMiles); + this._updateScale(this._iScale, miles + ' mi', miles / maxMiles); + + } else { + feet = this._getRoundNum(maxFeet); + this._updateScale(this._iScale, feet + ' ft', feet / maxFeet); + } + }, + + _updateScale: function (scale, text, ratio) { + scale.style.width = Math.round(this.options.maxWidth * ratio) + 'px'; + scale.innerHTML = text; + }, + + _getRoundNum: function (num) { + var pow10 = Math.pow(10, (Math.floor(num) + '').length - 1), + d = num / pow10; + + d = d >= 10 ? 10 : + d >= 5 ? 5 : + d >= 3 ? 3 : + d >= 2 ? 2 : 1; + + return pow10 * d; + } +}); + + +// @factory L.control.scale(options?: Control.Scale options) +// Creates an scale control with the given options. +var scale = function (options) { + return new Scale(options); +}; + +var ukrainianFlag = ''; + + +/* + * @class Control.Attribution + * @aka L.Control.Attribution + * @inherits Control + * + * The attribution control allows you to display attribution data in a small text box on a map. It is put on the map by default unless you set its [`attributionControl` option](#map-attributioncontrol) to `false`, and it fetches attribution texts from layers with the [`getAttribution` method](#layer-getattribution) automatically. Extends Control. + */ + +var Attribution = Control.extend({ + // @section + // @aka Control.Attribution options + options: { + position: 'bottomright', + + // @option prefix: String|false = 'Leaflet' + // The HTML text shown before the attributions. Pass `false` to disable. + prefix: '' + (Browser.inlineSvg ? ukrainianFlag + ' ' : '') + 'Leaflet' + }, + + initialize: function (options) { + setOptions(this, options); + + this._attributions = {}; + }, + + onAdd: function (map) { + map.attributionControl = this; + this._container = create$1('div', 'leaflet-control-attribution'); + disableClickPropagation(this._container); + + // TODO ugly, refactor + for (var i in map._layers) { + if (map._layers[i].getAttribution) { + this.addAttribution(map._layers[i].getAttribution()); + } + } + + this._update(); + + map.on('layeradd', this._addAttribution, this); + + return this._container; + }, + + onRemove: function (map) { + map.off('layeradd', this._addAttribution, this); + }, + + _addAttribution: function (ev) { + if (ev.layer.getAttribution) { + this.addAttribution(ev.layer.getAttribution()); + ev.layer.once('remove', function () { + this.removeAttribution(ev.layer.getAttribution()); + }, this); + } + }, + + // @method setPrefix(prefix: String|false): this + // The HTML text shown before the attributions. Pass `false` to disable. + setPrefix: function (prefix) { + this.options.prefix = prefix; + this._update(); + return this; + }, + + // @method addAttribution(text: String): this + // Adds an attribution text (e.g. `'Vector data © Mapbox'`). + addAttribution: function (text) { + if (!text) { return this; } + + if (!this._attributions[text]) { + this._attributions[text] = 0; + } + this._attributions[text]++; + + this._update(); + + return this; + }, + + // @method removeAttribution(text: String): this + // Removes an attribution text. + removeAttribution: function (text) { + if (!text) { return this; } + + if (this._attributions[text]) { + this._attributions[text]--; + this._update(); + } + + return this; + }, + + _update: function () { + if (!this._map) { return; } + + var attribs = []; + + for (var i in this._attributions) { + if (this._attributions[i]) { + attribs.push(i); + } + } + + var prefixAndAttribs = []; + + if (this.options.prefix) { + prefixAndAttribs.push(this.options.prefix); + } + if (attribs.length) { + prefixAndAttribs.push(attribs.join(', ')); + } + + this._container.innerHTML = prefixAndAttribs.join(' '); + } +}); + +// @namespace Map +// @section Control options +// @option attributionControl: Boolean = true +// Whether a [attribution control](#control-attribution) is added to the map by default. +Map.mergeOptions({ + attributionControl: true +}); + +Map.addInitHook(function () { + if (this.options.attributionControl) { + new Attribution().addTo(this); + } +}); + +// @namespace Control.Attribution +// @factory L.control.attribution(options: Control.Attribution options) +// Creates an attribution control. +var attribution = function (options) { + return new Attribution(options); +}; + +Control.Layers = Layers; +Control.Zoom = Zoom; +Control.Scale = Scale; +Control.Attribution = Attribution; + +control.layers = layers; +control.zoom = zoom; +control.scale = scale; +control.attribution = attribution; + +/* + L.Handler is a base class for handler classes that are used internally to inject + interaction features like dragging to classes like Map and Marker. +*/ + +// @class Handler +// @aka L.Handler +// Abstract class for map interaction handlers + +var Handler = Class.extend({ + initialize: function (map) { + this._map = map; + }, + + // @method enable(): this + // Enables the handler + enable: function () { + if (this._enabled) { return this; } + + this._enabled = true; + this.addHooks(); + return this; + }, + + // @method disable(): this + // Disables the handler + disable: function () { + if (!this._enabled) { return this; } + + this._enabled = false; + this.removeHooks(); + return this; + }, + + // @method enabled(): Boolean + // Returns `true` if the handler is enabled + enabled: function () { + return !!this._enabled; + } + + // @section Extension methods + // Classes inheriting from `Handler` must implement the two following methods: + // @method addHooks() + // Called when the handler is enabled, should add event hooks. + // @method removeHooks() + // Called when the handler is disabled, should remove the event hooks added previously. +}); + +// @section There is static function which can be called without instantiating L.Handler: +// @function addTo(map: Map, name: String): this +// Adds a new Handler to the given map with the given name. +Handler.addTo = function (map, name) { + map.addHandler(name, this); + return this; +}; + +var Mixin = {Events: Events}; + +/* + * @class Draggable + * @aka L.Draggable + * @inherits Evented + * + * A class for making DOM elements draggable (including touch support). + * Used internally for map and marker dragging. Only works for elements + * that were positioned with [`L.DomUtil.setPosition`](#domutil-setposition). + * + * @example + * ```js + * var draggable = new L.Draggable(elementToDrag); + * draggable.enable(); + * ``` + */ + +var START = Browser.touch ? 'touchstart mousedown' : 'mousedown'; + +var Draggable = Evented.extend({ + + options: { + // @section + // @aka Draggable options + // @option clickTolerance: Number = 3 + // The max number of pixels a user can shift the mouse pointer during a click + // for it to be considered a valid click (as opposed to a mouse drag). + clickTolerance: 3 + }, + + // @constructor L.Draggable(el: HTMLElement, dragHandle?: HTMLElement, preventOutline?: Boolean, options?: Draggable options) + // Creates a `Draggable` object for moving `el` when you start dragging the `dragHandle` element (equals `el` itself by default). + initialize: function (element, dragStartTarget, preventOutline, options) { + setOptions(this, options); + + this._element = element; + this._dragStartTarget = dragStartTarget || element; + this._preventOutline = preventOutline; + }, + + // @method enable() + // Enables the dragging ability + enable: function () { + if (this._enabled) { return; } + + on(this._dragStartTarget, START, this._onDown, this); + + this._enabled = true; + }, + + // @method disable() + // Disables the dragging ability + disable: function () { + if (!this._enabled) { return; } + + // If we're currently dragging this draggable, + // disabling it counts as first ending the drag. + if (Draggable._dragging === this) { + this.finishDrag(true); + } + + off(this._dragStartTarget, START, this._onDown, this); + + this._enabled = false; + this._moved = false; + }, + + _onDown: function (e) { + // Ignore the event if disabled; this happens in IE11 + // under some circumstances, see #3666. + if (!this._enabled) { return; } + + this._moved = false; + + if (hasClass(this._element, 'leaflet-zoom-anim')) { return; } + + if (e.touches && e.touches.length !== 1) { + // Finish dragging to avoid conflict with touchZoom + if (Draggable._dragging === this) { + this.finishDrag(); + } + return; + } + + if (Draggable._dragging || e.shiftKey || ((e.which !== 1) && (e.button !== 1) && !e.touches)) { return; } + Draggable._dragging = this; // Prevent dragging multiple objects at once. + + if (this._preventOutline) { + preventOutline(this._element); + } + + disableImageDrag(); + disableTextSelection(); + + if (this._moving) { return; } + + // @event down: Event + // Fired when a drag is about to start. + this.fire('down'); + + var first = e.touches ? e.touches[0] : e, + sizedParent = getSizedParentNode(this._element); + + this._startPoint = new Point(first.clientX, first.clientY); + this._startPos = getPosition(this._element); + + // Cache the scale, so that we can continuously compensate for it during drag (_onMove). + this._parentScale = getScale(sizedParent); + + var mouseevent = e.type === 'mousedown'; + on(document, mouseevent ? 'mousemove' : 'touchmove', this._onMove, this); + on(document, mouseevent ? 'mouseup' : 'touchend touchcancel', this._onUp, this); + }, + + _onMove: function (e) { + // Ignore the event if disabled; this happens in IE11 + // under some circumstances, see #3666. + if (!this._enabled) { return; } + + if (e.touches && e.touches.length > 1) { + this._moved = true; + return; + } + + var first = (e.touches && e.touches.length === 1 ? e.touches[0] : e), + offset = new Point(first.clientX, first.clientY)._subtract(this._startPoint); + + if (!offset.x && !offset.y) { return; } + if (Math.abs(offset.x) + Math.abs(offset.y) < this.options.clickTolerance) { return; } + + // We assume that the parent container's position, border and scale do not change for the duration of the drag. + // Therefore there is no need to account for the position and border (they are eliminated by the subtraction) + // and we can use the cached value for the scale. + offset.x /= this._parentScale.x; + offset.y /= this._parentScale.y; + + preventDefault(e); + + if (!this._moved) { + // @event dragstart: Event + // Fired when a drag starts + this.fire('dragstart'); + + this._moved = true; + + addClass(document.body, 'leaflet-dragging'); + + this._lastTarget = e.target || e.srcElement; + // IE and Edge do not give the element, so fetch it + // if necessary + if (window.SVGElementInstance && this._lastTarget instanceof window.SVGElementInstance) { + this._lastTarget = this._lastTarget.correspondingUseElement; + } + addClass(this._lastTarget, 'leaflet-drag-target'); + } + + this._newPos = this._startPos.add(offset); + this._moving = true; + + this._lastEvent = e; + this._updatePosition(); + }, + + _updatePosition: function () { + var e = {originalEvent: this._lastEvent}; + + // @event predrag: Event + // Fired continuously during dragging *before* each corresponding + // update of the element's position. + this.fire('predrag', e); + setPosition(this._element, this._newPos); + + // @event drag: Event + // Fired continuously during dragging. + this.fire('drag', e); + }, + + _onUp: function () { + // Ignore the event if disabled; this happens in IE11 + // under some circumstances, see #3666. + if (!this._enabled) { return; } + this.finishDrag(); + }, + + finishDrag: function (noInertia) { + removeClass(document.body, 'leaflet-dragging'); + + if (this._lastTarget) { + removeClass(this._lastTarget, 'leaflet-drag-target'); + this._lastTarget = null; + } + + off(document, 'mousemove touchmove', this._onMove, this); + off(document, 'mouseup touchend touchcancel', this._onUp, this); + + enableImageDrag(); + enableTextSelection(); + + if (this._moved && this._moving) { + + // @event dragend: DragEndEvent + // Fired when the drag ends. + this.fire('dragend', { + noInertia: noInertia, + distance: this._newPos.distanceTo(this._startPos) + }); + } + + this._moving = false; + Draggable._dragging = false; + } + +}); + +/* + * @namespace LineUtil + * + * Various utility functions for polyline points processing, used by Leaflet internally to make polylines lightning-fast. + */ + +// Simplify polyline with vertex reduction and Douglas-Peucker simplification. +// Improves rendering performance dramatically by lessening the number of points to draw. + +// @function simplify(points: Point[], tolerance: Number): Point[] +// Dramatically reduces the number of points in a polyline while retaining +// its shape and returns a new array of simplified points, using the +// [Ramer-Douglas-Peucker algorithm](https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm). +// Used for a huge performance boost when processing/displaying Leaflet polylines for +// each zoom level and also reducing visual noise. tolerance affects the amount of +// simplification (lesser value means higher quality but slower and with more points). +// Also released as a separated micro-library [Simplify.js](https://mourner.github.io/simplify-js/). +function simplify(points, tolerance) { + if (!tolerance || !points.length) { + return points.slice(); + } + + var sqTolerance = tolerance * tolerance; + + // stage 1: vertex reduction + points = _reducePoints(points, sqTolerance); + + // stage 2: Douglas-Peucker simplification + points = _simplifyDP(points, sqTolerance); + + return points; +} + +// @function pointToSegmentDistance(p: Point, p1: Point, p2: Point): Number +// Returns the distance between point `p` and segment `p1` to `p2`. +function pointToSegmentDistance(p, p1, p2) { + return Math.sqrt(_sqClosestPointOnSegment(p, p1, p2, true)); +} + +// @function closestPointOnSegment(p: Point, p1: Point, p2: Point): Number +// Returns the closest point from a point `p` on a segment `p1` to `p2`. +function closestPointOnSegment(p, p1, p2) { + return _sqClosestPointOnSegment(p, p1, p2); +} + +// Ramer-Douglas-Peucker simplification, see https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm +function _simplifyDP(points, sqTolerance) { + + var len = points.length, + ArrayConstructor = typeof Uint8Array !== undefined + '' ? Uint8Array : Array, + markers = new ArrayConstructor(len); + + markers[0] = markers[len - 1] = 1; + + _simplifyDPStep(points, markers, sqTolerance, 0, len - 1); + + var i, + newPoints = []; + + for (i = 0; i < len; i++) { + if (markers[i]) { + newPoints.push(points[i]); + } + } + + return newPoints; +} + +function _simplifyDPStep(points, markers, sqTolerance, first, last) { + + var maxSqDist = 0, + index, i, sqDist; + + for (i = first + 1; i <= last - 1; i++) { + sqDist = _sqClosestPointOnSegment(points[i], points[first], points[last], true); + + if (sqDist > maxSqDist) { + index = i; + maxSqDist = sqDist; + } + } + + if (maxSqDist > sqTolerance) { + markers[index] = 1; + + _simplifyDPStep(points, markers, sqTolerance, first, index); + _simplifyDPStep(points, markers, sqTolerance, index, last); + } +} + +// reduce points that are too close to each other to a single point +function _reducePoints(points, sqTolerance) { + var reducedPoints = [points[0]]; + + for (var i = 1, prev = 0, len = points.length; i < len; i++) { + if (_sqDist(points[i], points[prev]) > sqTolerance) { + reducedPoints.push(points[i]); + prev = i; + } + } + if (prev < len - 1) { + reducedPoints.push(points[len - 1]); + } + return reducedPoints; +} + +var _lastCode; + +// @function clipSegment(a: Point, b: Point, bounds: Bounds, useLastCode?: Boolean, round?: Boolean): Point[]|Boolean +// Clips the segment a to b by rectangular bounds with the +// [Cohen-Sutherland algorithm](https://en.wikipedia.org/wiki/Cohen%E2%80%93Sutherland_algorithm) +// (modifying the segment points directly!). Used by Leaflet to only show polyline +// points that are on the screen or near, increasing performance. +function clipSegment(a, b, bounds, useLastCode, round) { + var codeA = useLastCode ? _lastCode : _getBitCode(a, bounds), + codeB = _getBitCode(b, bounds), + + codeOut, p, newCode; + + // save 2nd code to avoid calculating it on the next segment + _lastCode = codeB; + + while (true) { + // if a,b is inside the clip window (trivial accept) + if (!(codeA | codeB)) { + return [a, b]; + } + + // if a,b is outside the clip window (trivial reject) + if (codeA & codeB) { + return false; + } + + // other cases + codeOut = codeA || codeB; + p = _getEdgeIntersection(a, b, codeOut, bounds, round); + newCode = _getBitCode(p, bounds); + + if (codeOut === codeA) { + a = p; + codeA = newCode; + } else { + b = p; + codeB = newCode; + } + } +} + +function _getEdgeIntersection(a, b, code, bounds, round) { + var dx = b.x - a.x, + dy = b.y - a.y, + min = bounds.min, + max = bounds.max, + x, y; + + if (code & 8) { // top + x = a.x + dx * (max.y - a.y) / dy; + y = max.y; + + } else if (code & 4) { // bottom + x = a.x + dx * (min.y - a.y) / dy; + y = min.y; + + } else if (code & 2) { // right + x = max.x; + y = a.y + dy * (max.x - a.x) / dx; + + } else if (code & 1) { // left + x = min.x; + y = a.y + dy * (min.x - a.x) / dx; + } + + return new Point(x, y, round); +} + +function _getBitCode(p, bounds) { + var code = 0; + + if (p.x < bounds.min.x) { // left + code |= 1; + } else if (p.x > bounds.max.x) { // right + code |= 2; + } + + if (p.y < bounds.min.y) { // bottom + code |= 4; + } else if (p.y > bounds.max.y) { // top + code |= 8; + } + + return code; +} + +// square distance (to avoid unnecessary Math.sqrt calls) +function _sqDist(p1, p2) { + var dx = p2.x - p1.x, + dy = p2.y - p1.y; + return dx * dx + dy * dy; +} + +// return closest point on segment or distance to that point +function _sqClosestPointOnSegment(p, p1, p2, sqDist) { + var x = p1.x, + y = p1.y, + dx = p2.x - x, + dy = p2.y - y, + dot = dx * dx + dy * dy, + t; + + if (dot > 0) { + t = ((p.x - x) * dx + (p.y - y) * dy) / dot; + + if (t > 1) { + x = p2.x; + y = p2.y; + } else if (t > 0) { + x += dx * t; + y += dy * t; + } + } + + dx = p.x - x; + dy = p.y - y; + + return sqDist ? dx * dx + dy * dy : new Point(x, y); +} + + +// @function isFlat(latlngs: LatLng[]): Boolean +// Returns true if `latlngs` is a flat array, false is nested. +function isFlat(latlngs) { + return !isArray(latlngs[0]) || (typeof latlngs[0][0] !== 'object' && typeof latlngs[0][0] !== 'undefined'); +} + +function _flat(latlngs) { + console.warn('Deprecated use of _flat, please use L.LineUtil.isFlat instead.'); + return isFlat(latlngs); +} + +var LineUtil = { + __proto__: null, + simplify: simplify, + pointToSegmentDistance: pointToSegmentDistance, + closestPointOnSegment: closestPointOnSegment, + clipSegment: clipSegment, + _getEdgeIntersection: _getEdgeIntersection, + _getBitCode: _getBitCode, + _sqClosestPointOnSegment: _sqClosestPointOnSegment, + isFlat: isFlat, + _flat: _flat +}; + +/* + * @namespace PolyUtil + * Various utility functions for polygon geometries. + */ + +/* @function clipPolygon(points: Point[], bounds: Bounds, round?: Boolean): Point[] + * Clips the polygon geometry defined by the given `points` by the given bounds (using the [Sutherland-Hodgman algorithm](https://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm)). + * Used by Leaflet to only show polygon points that are on the screen or near, increasing + * performance. Note that polygon points needs different algorithm for clipping + * than polyline, so there's a separate method for it. + */ +function clipPolygon(points, bounds, round) { + var clippedPoints, + edges = [1, 4, 2, 8], + i, j, k, + a, b, + len, edge, p; + + for (i = 0, len = points.length; i < len; i++) { + points[i]._code = _getBitCode(points[i], bounds); + } + + // for each edge (left, bottom, right, top) + for (k = 0; k < 4; k++) { + edge = edges[k]; + clippedPoints = []; + + for (i = 0, len = points.length, j = len - 1; i < len; j = i++) { + a = points[i]; + b = points[j]; + + // if a is inside the clip window + if (!(a._code & edge)) { + // if b is outside the clip window (a->b goes out of screen) + if (b._code & edge) { + p = _getEdgeIntersection(b, a, edge, bounds, round); + p._code = _getBitCode(p, bounds); + clippedPoints.push(p); + } + clippedPoints.push(a); + + // else if b is inside the clip window (a->b enters the screen) + } else if (!(b._code & edge)) { + p = _getEdgeIntersection(b, a, edge, bounds, round); + p._code = _getBitCode(p, bounds); + clippedPoints.push(p); + } + } + points = clippedPoints; + } + + return points; +} + +var PolyUtil = { + __proto__: null, + clipPolygon: clipPolygon +}; + +/* + * @namespace Projection + * @section + * Leaflet comes with a set of already defined Projections out of the box: + * + * @projection L.Projection.LonLat + * + * Equirectangular, or Plate Carree projection — the most simple projection, + * mostly used by GIS enthusiasts. Directly maps `x` as longitude, and `y` as + * latitude. Also suitable for flat worlds, e.g. game maps. Used by the + * `EPSG:4326` and `Simple` CRS. + */ + +var LonLat = { + project: function (latlng) { + return new Point(latlng.lng, latlng.lat); + }, + + unproject: function (point) { + return new LatLng(point.y, point.x); + }, + + bounds: new Bounds([-180, -90], [180, 90]) +}; + +/* + * @namespace Projection + * @projection L.Projection.Mercator + * + * Elliptical Mercator projection — more complex than Spherical Mercator. Assumes that Earth is an ellipsoid. Used by the EPSG:3395 CRS. + */ + +var Mercator = { + R: 6378137, + R_MINOR: 6356752.314245179, + + bounds: new Bounds([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]), + + project: function (latlng) { + var d = Math.PI / 180, + r = this.R, + y = latlng.lat * d, + tmp = this.R_MINOR / r, + e = Math.sqrt(1 - tmp * tmp), + con = e * Math.sin(y); + + var ts = Math.tan(Math.PI / 4 - y / 2) / Math.pow((1 - con) / (1 + con), e / 2); + y = -r * Math.log(Math.max(ts, 1E-10)); + + return new Point(latlng.lng * d * r, y); + }, + + unproject: function (point) { + var d = 180 / Math.PI, + r = this.R, + tmp = this.R_MINOR / r, + e = Math.sqrt(1 - tmp * tmp), + ts = Math.exp(-point.y / r), + phi = Math.PI / 2 - 2 * Math.atan(ts); + + for (var i = 0, dphi = 0.1, con; i < 15 && Math.abs(dphi) > 1e-7; i++) { + con = e * Math.sin(phi); + con = Math.pow((1 - con) / (1 + con), e / 2); + dphi = Math.PI / 2 - 2 * Math.atan(ts * con) - phi; + phi += dphi; + } + + return new LatLng(phi * d, point.x * d / r); + } +}; + +/* + * @class Projection + + * An object with methods for projecting geographical coordinates of the world onto + * a flat surface (and back). See [Map projection](https://en.wikipedia.org/wiki/Map_projection). + + * @property bounds: Bounds + * The bounds (specified in CRS units) where the projection is valid + + * @method project(latlng: LatLng): Point + * Projects geographical coordinates into a 2D point. + * Only accepts actual `L.LatLng` instances, not arrays. + + * @method unproject(point: Point): LatLng + * The inverse of `project`. Projects a 2D point into a geographical location. + * Only accepts actual `L.Point` instances, not arrays. + + * Note that the projection instances do not inherit from Leaflet's `Class` object, + * and can't be instantiated. Also, new classes can't inherit from them, + * and methods can't be added to them with the `include` function. + + */ + +var index = { + __proto__: null, + LonLat: LonLat, + Mercator: Mercator, + SphericalMercator: SphericalMercator +}; + +/* + * @namespace CRS + * @crs L.CRS.EPSG3395 + * + * Rarely used by some commercial tile providers. Uses Elliptical Mercator projection. + */ +var EPSG3395 = extend({}, Earth, { + code: 'EPSG:3395', + projection: Mercator, + + transformation: (function () { + var scale = 0.5 / (Math.PI * Mercator.R); + return toTransformation(scale, 0.5, -scale, 0.5); + }()) +}); + +/* + * @namespace CRS + * @crs L.CRS.EPSG4326 + * + * A common CRS among GIS enthusiasts. Uses simple Equirectangular projection. + * + * Leaflet 1.0.x complies with the [TMS coordinate scheme for EPSG:4326](https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification#global-geodetic), + * which is a breaking change from 0.7.x behaviour. If you are using a `TileLayer` + * with this CRS, ensure that there are two 256x256 pixel tiles covering the + * whole earth at zoom level zero, and that the tile coordinate origin is (-180,+90), + * or (-180,-90) for `TileLayer`s with [the `tms` option](#tilelayer-tms) set. + */ + +var EPSG4326 = extend({}, Earth, { + code: 'EPSG:4326', + projection: LonLat, + transformation: toTransformation(1 / 180, 1, -1 / 180, 0.5) +}); + +/* + * @namespace CRS + * @crs L.CRS.Simple + * + * A simple CRS that maps longitude and latitude into `x` and `y` directly. + * May be used for maps of flat surfaces (e.g. game maps). Note that the `y` + * axis should still be inverted (going from bottom to top). `distance()` returns + * simple euclidean distance. + */ + +var Simple = extend({}, CRS, { + projection: LonLat, + transformation: toTransformation(1, 0, -1, 0), + + scale: function (zoom) { + return Math.pow(2, zoom); + }, + + zoom: function (scale) { + return Math.log(scale) / Math.LN2; + }, + + distance: function (latlng1, latlng2) { + var dx = latlng2.lng - latlng1.lng, + dy = latlng2.lat - latlng1.lat; + + return Math.sqrt(dx * dx + dy * dy); + }, + + infinite: true +}); + +CRS.Earth = Earth; +CRS.EPSG3395 = EPSG3395; +CRS.EPSG3857 = EPSG3857; +CRS.EPSG900913 = EPSG900913; +CRS.EPSG4326 = EPSG4326; +CRS.Simple = Simple; + +/* + * @class Layer + * @inherits Evented + * @aka L.Layer + * @aka ILayer + * + * A set of methods from the Layer base class that all Leaflet layers use. + * Inherits all methods, options and events from `L.Evented`. + * + * @example + * + * ```js + * var layer = L.marker(latlng).addTo(map); + * layer.addTo(map); + * layer.remove(); + * ``` + * + * @event add: Event + * Fired after the layer is added to a map + * + * @event remove: Event + * Fired after the layer is removed from a map + */ + + +var Layer = Evented.extend({ + + // Classes extending `L.Layer` will inherit the following options: + options: { + // @option pane: String = 'overlayPane' + // By default the layer will be added to the map's [overlay pane](#map-overlaypane). Overriding this option will cause the layer to be placed on another pane by default. + pane: 'overlayPane', + + // @option attribution: String = null + // String to be shown in the attribution control, e.g. "© OpenStreetMap contributors". It describes the layer data and is often a legal obligation towards copyright holders and tile providers. + attribution: null, + + bubblingMouseEvents: true + }, + + /* @section + * Classes extending `L.Layer` will inherit the following methods: + * + * @method addTo(map: Map|LayerGroup): this + * Adds the layer to the given map or layer group. + */ + addTo: function (map) { + map.addLayer(this); + return this; + }, + + // @method remove: this + // Removes the layer from the map it is currently active on. + remove: function () { + return this.removeFrom(this._map || this._mapToAdd); + }, + + // @method removeFrom(map: Map): this + // Removes the layer from the given map + // + // @alternative + // @method removeFrom(group: LayerGroup): this + // Removes the layer from the given `LayerGroup` + removeFrom: function (obj) { + if (obj) { + obj.removeLayer(this); + } + return this; + }, + + // @method getPane(name? : String): HTMLElement + // Returns the `HTMLElement` representing the named pane on the map. If `name` is omitted, returns the pane for this layer. + getPane: function (name) { + return this._map.getPane(name ? (this.options[name] || name) : this.options.pane); + }, + + addInteractiveTarget: function (targetEl) { + this._map._targets[stamp(targetEl)] = this; + return this; + }, + + removeInteractiveTarget: function (targetEl) { + delete this._map._targets[stamp(targetEl)]; + return this; + }, + + // @method getAttribution: String + // Used by the `attribution control`, returns the [attribution option](#gridlayer-attribution). + getAttribution: function () { + return this.options.attribution; + }, + + _layerAdd: function (e) { + var map = e.target; + + // check in case layer gets added and then removed before the map is ready + if (!map.hasLayer(this)) { return; } + + this._map = map; + this._zoomAnimated = map._zoomAnimated; + + if (this.getEvents) { + var events = this.getEvents(); + map.on(events, this); + this.once('remove', function () { + map.off(events, this); + }, this); + } + + this.onAdd(map); + + this.fire('add'); + map.fire('layeradd', {layer: this}); + } +}); + +/* @section Extension methods + * @uninheritable + * + * Every layer should extend from `L.Layer` and (re-)implement the following methods. + * + * @method onAdd(map: Map): this + * Should contain code that creates DOM elements for the layer, adds them to `map panes` where they should belong and puts listeners on relevant map events. Called on [`map.addLayer(layer)`](#map-addlayer). + * + * @method onRemove(map: Map): this + * Should contain all clean up code that removes the layer's elements from the DOM and removes listeners previously added in [`onAdd`](#layer-onadd). Called on [`map.removeLayer(layer)`](#map-removelayer). + * + * @method getEvents(): Object + * This optional method should return an object like `{ viewreset: this._reset }` for [`addEventListener`](#evented-addeventlistener). The event handlers in this object will be automatically added and removed from the map with your layer. + * + * @method getAttribution(): String + * This optional method should return a string containing HTML to be shown on the `Attribution control` whenever the layer is visible. + * + * @method beforeAdd(map: Map): this + * Optional method. Called on [`map.addLayer(layer)`](#map-addlayer), before the layer is added to the map, before events are initialized, without waiting until the map is in a usable state. Use for early initialization only. + */ + + +/* @namespace Map + * @section Layer events + * + * @event layeradd: LayerEvent + * Fired when a new layer is added to the map. + * + * @event layerremove: LayerEvent + * Fired when some layer is removed from the map + * + * @section Methods for Layers and Controls + */ +Map.include({ + // @method addLayer(layer: Layer): this + // Adds the given layer to the map + addLayer: function (layer) { + if (!layer._layerAdd) { + throw new Error('The provided object is not a Layer.'); + } + + var id = stamp(layer); + if (this._layers[id]) { return this; } + this._layers[id] = layer; + + layer._mapToAdd = this; + + if (layer.beforeAdd) { + layer.beforeAdd(this); + } + + this.whenReady(layer._layerAdd, layer); + + return this; + }, + + // @method removeLayer(layer: Layer): this + // Removes the given layer from the map. + removeLayer: function (layer) { + var id = stamp(layer); + + if (!this._layers[id]) { return this; } + + if (this._loaded) { + layer.onRemove(this); + } + + delete this._layers[id]; + + if (this._loaded) { + this.fire('layerremove', {layer: layer}); + layer.fire('remove'); + } + + layer._map = layer._mapToAdd = null; + + return this; + }, + + // @method hasLayer(layer: Layer): Boolean + // Returns `true` if the given layer is currently added to the map + hasLayer: function (layer) { + return stamp(layer) in this._layers; + }, + + /* @method eachLayer(fn: Function, context?: Object): this + * Iterates over the layers of the map, optionally specifying context of the iterator function. + * ``` + * map.eachLayer(function(layer){ + * layer.bindPopup('Hello'); + * }); + * ``` + */ + eachLayer: function (method, context) { + for (var i in this._layers) { + method.call(context, this._layers[i]); + } + return this; + }, + + _addLayers: function (layers) { + layers = layers ? (isArray(layers) ? layers : [layers]) : []; + + for (var i = 0, len = layers.length; i < len; i++) { + this.addLayer(layers[i]); + } + }, + + _addZoomLimit: function (layer) { + if (!isNaN(layer.options.maxZoom) || !isNaN(layer.options.minZoom)) { + this._zoomBoundLayers[stamp(layer)] = layer; + this._updateZoomLevels(); + } + }, + + _removeZoomLimit: function (layer) { + var id = stamp(layer); + + if (this._zoomBoundLayers[id]) { + delete this._zoomBoundLayers[id]; + this._updateZoomLevels(); + } + }, + + _updateZoomLevels: function () { + var minZoom = Infinity, + maxZoom = -Infinity, + oldZoomSpan = this._getZoomSpan(); + + for (var i in this._zoomBoundLayers) { + var options = this._zoomBoundLayers[i].options; + + minZoom = options.minZoom === undefined ? minZoom : Math.min(minZoom, options.minZoom); + maxZoom = options.maxZoom === undefined ? maxZoom : Math.max(maxZoom, options.maxZoom); + } + + this._layersMaxZoom = maxZoom === -Infinity ? undefined : maxZoom; + this._layersMinZoom = minZoom === Infinity ? undefined : minZoom; + + // @section Map state change events + // @event zoomlevelschange: Event + // Fired when the number of zoomlevels on the map is changed due + // to adding or removing a layer. + if (oldZoomSpan !== this._getZoomSpan()) { + this.fire('zoomlevelschange'); + } + + if (this.options.maxZoom === undefined && this._layersMaxZoom && this.getZoom() > this._layersMaxZoom) { + this.setZoom(this._layersMaxZoom); + } + if (this.options.minZoom === undefined && this._layersMinZoom && this.getZoom() < this._layersMinZoom) { + this.setZoom(this._layersMinZoom); + } + } +}); + +/* + * @class LayerGroup + * @aka L.LayerGroup + * @inherits Interactive layer + * + * Used to group several layers and handle them as one. If you add it to the map, + * any layers added or removed from the group will be added/removed on the map as + * well. Extends `Layer`. + * + * @example + * + * ```js + * L.layerGroup([marker1, marker2]) + * .addLayer(polyline) + * .addTo(map); + * ``` + */ + +var LayerGroup = Layer.extend({ + + initialize: function (layers, options) { + setOptions(this, options); + + this._layers = {}; + + var i, len; + + if (layers) { + for (i = 0, len = layers.length; i < len; i++) { + this.addLayer(layers[i]); + } + } + }, + + // @method addLayer(layer: Layer): this + // Adds the given layer to the group. + addLayer: function (layer) { + var id = this.getLayerId(layer); + + this._layers[id] = layer; + + if (this._map) { + this._map.addLayer(layer); + } + + return this; + }, + + // @method removeLayer(layer: Layer): this + // Removes the given layer from the group. + // @alternative + // @method removeLayer(id: Number): this + // Removes the layer with the given internal ID from the group. + removeLayer: function (layer) { + var id = layer in this._layers ? layer : this.getLayerId(layer); + + if (this._map && this._layers[id]) { + this._map.removeLayer(this._layers[id]); + } + + delete this._layers[id]; + + return this; + }, + + // @method hasLayer(layer: Layer): Boolean + // Returns `true` if the given layer is currently added to the group. + // @alternative + // @method hasLayer(id: Number): Boolean + // Returns `true` if the given internal ID is currently added to the group. + hasLayer: function (layer) { + var layerId = typeof layer === 'number' ? layer : this.getLayerId(layer); + return layerId in this._layers; + }, + + // @method clearLayers(): this + // Removes all the layers from the group. + clearLayers: function () { + return this.eachLayer(this.removeLayer, this); + }, + + // @method invoke(methodName: String, …): this + // Calls `methodName` on every layer contained in this group, passing any + // additional parameters. Has no effect if the layers contained do not + // implement `methodName`. + invoke: function (methodName) { + var args = Array.prototype.slice.call(arguments, 1), + i, layer; + + for (i in this._layers) { + layer = this._layers[i]; + + if (layer[methodName]) { + layer[methodName].apply(layer, args); + } + } + + return this; + }, + + onAdd: function (map) { + this.eachLayer(map.addLayer, map); + }, + + onRemove: function (map) { + this.eachLayer(map.removeLayer, map); + }, + + // @method eachLayer(fn: Function, context?: Object): this + // Iterates over the layers of the group, optionally specifying context of the iterator function. + // ```js + // group.eachLayer(function (layer) { + // layer.bindPopup('Hello'); + // }); + // ``` + eachLayer: function (method, context) { + for (var i in this._layers) { + method.call(context, this._layers[i]); + } + return this; + }, + + // @method getLayer(id: Number): Layer + // Returns the layer with the given internal ID. + getLayer: function (id) { + return this._layers[id]; + }, + + // @method getLayers(): Layer[] + // Returns an array of all the layers added to the group. + getLayers: function () { + var layers = []; + this.eachLayer(layers.push, layers); + return layers; + }, + + // @method setZIndex(zIndex: Number): this + // Calls `setZIndex` on every layer contained in this group, passing the z-index. + setZIndex: function (zIndex) { + return this.invoke('setZIndex', zIndex); + }, + + // @method getLayerId(layer: Layer): Number + // Returns the internal ID for a layer + getLayerId: function (layer) { + return stamp(layer); + } +}); + + +// @factory L.layerGroup(layers?: Layer[], options?: Object) +// Create a layer group, optionally given an initial set of layers and an `options` object. +var layerGroup = function (layers, options) { + return new LayerGroup(layers, options); +}; + +/* + * @class FeatureGroup + * @aka L.FeatureGroup + * @inherits LayerGroup + * + * Extended `LayerGroup` that makes it easier to do the same thing to all its member layers: + * * [`bindPopup`](#layer-bindpopup) binds a popup to all of the layers at once (likewise with [`bindTooltip`](#layer-bindtooltip)) + * * Events are propagated to the `FeatureGroup`, so if the group has an event + * handler, it will handle events from any of the layers. This includes mouse events + * and custom events. + * * Has `layeradd` and `layerremove` events + * + * @example + * + * ```js + * L.featureGroup([marker1, marker2, polyline]) + * .bindPopup('Hello world!') + * .on('click', function() { alert('Clicked on a member of the group!'); }) + * .addTo(map); + * ``` + */ + +var FeatureGroup = LayerGroup.extend({ + + addLayer: function (layer) { + if (this.hasLayer(layer)) { + return this; + } + + layer.addEventParent(this); + + LayerGroup.prototype.addLayer.call(this, layer); + + // @event layeradd: LayerEvent + // Fired when a layer is added to this `FeatureGroup` + return this.fire('layeradd', {layer: layer}); + }, + + removeLayer: function (layer) { + if (!this.hasLayer(layer)) { + return this; + } + if (layer in this._layers) { + layer = this._layers[layer]; + } + + layer.removeEventParent(this); + + LayerGroup.prototype.removeLayer.call(this, layer); + + // @event layerremove: LayerEvent + // Fired when a layer is removed from this `FeatureGroup` + return this.fire('layerremove', {layer: layer}); + }, + + // @method setStyle(style: Path options): this + // Sets the given path options to each layer of the group that has a `setStyle` method. + setStyle: function (style) { + return this.invoke('setStyle', style); + }, + + // @method bringToFront(): this + // Brings the layer group to the top of all other layers + bringToFront: function () { + return this.invoke('bringToFront'); + }, + + // @method bringToBack(): this + // Brings the layer group to the back of all other layers + bringToBack: function () { + return this.invoke('bringToBack'); + }, + + // @method getBounds(): LatLngBounds + // Returns the LatLngBounds of the Feature Group (created from bounds and coordinates of its children). + getBounds: function () { + var bounds = new LatLngBounds(); + + for (var id in this._layers) { + var layer = this._layers[id]; + bounds.extend(layer.getBounds ? layer.getBounds() : layer.getLatLng()); + } + return bounds; + } +}); + +// @factory L.featureGroup(layers?: Layer[], options?: Object) +// Create a feature group, optionally given an initial set of layers and an `options` object. +var featureGroup = function (layers, options) { + return new FeatureGroup(layers, options); +}; + +/* + * @class Icon + * @aka L.Icon + * + * Represents an icon to provide when creating a marker. + * + * @example + * + * ```js + * var myIcon = L.icon({ + * iconUrl: 'my-icon.png', + * iconRetinaUrl: 'my-icon@2x.png', + * iconSize: [38, 95], + * iconAnchor: [22, 94], + * popupAnchor: [-3, -76], + * shadowUrl: 'my-icon-shadow.png', + * shadowRetinaUrl: 'my-icon-shadow@2x.png', + * shadowSize: [68, 95], + * shadowAnchor: [22, 94] + * }); + * + * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map); + * ``` + * + * `L.Icon.Default` extends `L.Icon` and is the blue icon Leaflet uses for markers by default. + * + */ + +var Icon = Class.extend({ + + /* @section + * @aka Icon options + * + * @option iconUrl: String = null + * **(required)** The URL to the icon image (absolute or relative to your script path). + * + * @option iconRetinaUrl: String = null + * The URL to a retina sized version of the icon image (absolute or relative to your + * script path). Used for Retina screen devices. + * + * @option iconSize: Point = null + * Size of the icon image in pixels. + * + * @option iconAnchor: Point = null + * The coordinates of the "tip" of the icon (relative to its top left corner). The icon + * will be aligned so that this point is at the marker's geographical location. Centered + * by default if size is specified, also can be set in CSS with negative margins. + * + * @option popupAnchor: Point = [0, 0] + * The coordinates of the point from which popups will "open", relative to the icon anchor. + * + * @option tooltipAnchor: Point = [0, 0] + * The coordinates of the point from which tooltips will "open", relative to the icon anchor. + * + * @option shadowUrl: String = null + * The URL to the icon shadow image. If not specified, no shadow image will be created. + * + * @option shadowRetinaUrl: String = null + * + * @option shadowSize: Point = null + * Size of the shadow image in pixels. + * + * @option shadowAnchor: Point = null + * The coordinates of the "tip" of the shadow (relative to its top left corner) (the same + * as iconAnchor if not specified). + * + * @option className: String = '' + * A custom class name to assign to both icon and shadow images. Empty by default. + */ + + options: { + popupAnchor: [0, 0], + tooltipAnchor: [0, 0], + + // @option crossOrigin: Boolean|String = false + // Whether the crossOrigin attribute will be added to the tiles. + // If a String is provided, all tiles will have their crossOrigin attribute set to the String provided. This is needed if you want to access tile pixel data. + // Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values. + crossOrigin: false + }, + + initialize: function (options) { + setOptions(this, options); + }, + + // @method createIcon(oldIcon?: HTMLElement): HTMLElement + // Called internally when the icon has to be shown, returns a `` HTML element + // styled according to the options. + createIcon: function (oldIcon) { + return this._createIcon('icon', oldIcon); + }, + + // @method createShadow(oldIcon?: HTMLElement): HTMLElement + // As `createIcon`, but for the shadow beneath it. + createShadow: function (oldIcon) { + return this._createIcon('shadow', oldIcon); + }, + + _createIcon: function (name, oldIcon) { + var src = this._getIconUrl(name); + + if (!src) { + if (name === 'icon') { + throw new Error('iconUrl not set in Icon options (see the docs).'); + } + return null; + } + + var img = this._createImg(src, oldIcon && oldIcon.tagName === 'IMG' ? oldIcon : null); + this._setIconStyles(img, name); + + if (this.options.crossOrigin || this.options.crossOrigin === '') { + img.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin; + } + + return img; + }, + + _setIconStyles: function (img, name) { + var options = this.options; + var sizeOption = options[name + 'Size']; + + if (typeof sizeOption === 'number') { + sizeOption = [sizeOption, sizeOption]; + } + + var size = toPoint(sizeOption), + anchor = toPoint(name === 'shadow' && options.shadowAnchor || options.iconAnchor || + size && size.divideBy(2, true)); + + img.className = 'leaflet-marker-' + name + ' ' + (options.className || ''); + + if (anchor) { + img.style.marginLeft = (-anchor.x) + 'px'; + img.style.marginTop = (-anchor.y) + 'px'; + } + + if (size) { + img.style.width = size.x + 'px'; + img.style.height = size.y + 'px'; + } + }, + + _createImg: function (src, el) { + el = el || document.createElement('img'); + el.src = src; + return el; + }, + + _getIconUrl: function (name) { + return Browser.retina && this.options[name + 'RetinaUrl'] || this.options[name + 'Url']; + } +}); + + +// @factory L.icon(options: Icon options) +// Creates an icon instance with the given options. +function icon(options) { + return new Icon(options); +} + +/* + * @miniclass Icon.Default (Icon) + * @aka L.Icon.Default + * @section + * + * A trivial subclass of `Icon`, represents the icon to use in `Marker`s when + * no icon is specified. Points to the blue marker image distributed with Leaflet + * releases. + * + * In order to customize the default icon, just change the properties of `L.Icon.Default.prototype.options` + * (which is a set of `Icon options`). + * + * If you want to _completely_ replace the default icon, override the + * `L.Marker.prototype.options.icon` with your own icon instead. + */ + +var IconDefault = Icon.extend({ + + options: { + iconUrl: 'marker-icon.png', + iconRetinaUrl: 'marker-icon-2x.png', + shadowUrl: 'marker-shadow.png', + iconSize: [25, 41], + iconAnchor: [12, 41], + popupAnchor: [1, -34], + tooltipAnchor: [16, -28], + shadowSize: [41, 41] + }, + + _getIconUrl: function (name) { + if (typeof IconDefault.imagePath !== 'string') { // Deprecated, backwards-compatibility only + IconDefault.imagePath = this._detectIconPath(); + } + + // @option imagePath: String + // `Icon.Default` will try to auto-detect the location of the + // blue icon images. If you are placing these images in a non-standard + // way, set this option to point to the right path. + return (this.options.imagePath || IconDefault.imagePath) + Icon.prototype._getIconUrl.call(this, name); + }, + + _stripUrl: function (path) { // separate function to use in tests + var strip = function (str, re, idx) { + var match = re.exec(str); + return match && match[idx]; + }; + path = strip(path, /^url\((['"])?(.+)\1\)$/, 2); + return path && strip(path, /^(.*)marker-icon\.png$/, 1); + }, + + _detectIconPath: function () { + var el = create$1('div', 'leaflet-default-icon-path', document.body); + var path = getStyle(el, 'background-image') || + getStyle(el, 'backgroundImage'); // IE8 + + document.body.removeChild(el); + path = this._stripUrl(path); + if (path) { return path; } + var link = document.querySelector('link[href$="leaflet.css"]'); + if (!link) { return ''; } + return link.href.substring(0, link.href.length - 'leaflet.css'.length - 1); + } +}); + +/* + * L.Handler.MarkerDrag is used internally by L.Marker to make the markers draggable. + */ + + +/* @namespace Marker + * @section Interaction handlers + * + * Interaction handlers are properties of a marker instance that allow you to control interaction behavior in runtime, enabling or disabling certain features such as dragging (see `Handler` methods). Example: + * + * ```js + * marker.dragging.disable(); + * ``` + * + * @property dragging: Handler + * Marker dragging handler (by both mouse and touch). Only valid when the marker is on the map (Otherwise set [`marker.options.draggable`](#marker-draggable)). + */ + +var MarkerDrag = Handler.extend({ + initialize: function (marker) { + this._marker = marker; + }, + + addHooks: function () { + var icon = this._marker._icon; + + if (!this._draggable) { + this._draggable = new Draggable(icon, icon, true); + } + + this._draggable.on({ + dragstart: this._onDragStart, + predrag: this._onPreDrag, + drag: this._onDrag, + dragend: this._onDragEnd + }, this).enable(); + + addClass(icon, 'leaflet-marker-draggable'); + }, + + removeHooks: function () { + this._draggable.off({ + dragstart: this._onDragStart, + predrag: this._onPreDrag, + drag: this._onDrag, + dragend: this._onDragEnd + }, this).disable(); + + if (this._marker._icon) { + removeClass(this._marker._icon, 'leaflet-marker-draggable'); + } + }, + + moved: function () { + return this._draggable && this._draggable._moved; + }, + + _adjustPan: function (e) { + var marker = this._marker, + map = marker._map, + speed = this._marker.options.autoPanSpeed, + padding = this._marker.options.autoPanPadding, + iconPos = getPosition(marker._icon), + bounds = map.getPixelBounds(), + origin = map.getPixelOrigin(); + + var panBounds = toBounds( + bounds.min._subtract(origin).add(padding), + bounds.max._subtract(origin).subtract(padding) + ); + + if (!panBounds.contains(iconPos)) { + // Compute incremental movement + var movement = toPoint( + (Math.max(panBounds.max.x, iconPos.x) - panBounds.max.x) / (bounds.max.x - panBounds.max.x) - + (Math.min(panBounds.min.x, iconPos.x) - panBounds.min.x) / (bounds.min.x - panBounds.min.x), + + (Math.max(panBounds.max.y, iconPos.y) - panBounds.max.y) / (bounds.max.y - panBounds.max.y) - + (Math.min(panBounds.min.y, iconPos.y) - panBounds.min.y) / (bounds.min.y - panBounds.min.y) + ).multiplyBy(speed); + + map.panBy(movement, {animate: false}); + + this._draggable._newPos._add(movement); + this._draggable._startPos._add(movement); + + setPosition(marker._icon, this._draggable._newPos); + this._onDrag(e); + + this._panRequest = requestAnimFrame(this._adjustPan.bind(this, e)); + } + }, + + _onDragStart: function () { + // @section Dragging events + // @event dragstart: Event + // Fired when the user starts dragging the marker. + + // @event movestart: Event + // Fired when the marker starts moving (because of dragging). + + this._oldLatLng = this._marker.getLatLng(); + + // When using ES6 imports it could not be set when `Popup` was not imported as well + this._marker.closePopup && this._marker.closePopup(); + + this._marker + .fire('movestart') + .fire('dragstart'); + }, + + _onPreDrag: function (e) { + if (this._marker.options.autoPan) { + cancelAnimFrame(this._panRequest); + this._panRequest = requestAnimFrame(this._adjustPan.bind(this, e)); + } + }, + + _onDrag: function (e) { + var marker = this._marker, + shadow = marker._shadow, + iconPos = getPosition(marker._icon), + latlng = marker._map.layerPointToLatLng(iconPos); + + // update shadow position + if (shadow) { + setPosition(shadow, iconPos); + } + + marker._latlng = latlng; + e.latlng = latlng; + e.oldLatLng = this._oldLatLng; + + // @event drag: Event + // Fired repeatedly while the user drags the marker. + marker + .fire('move', e) + .fire('drag', e); + }, + + _onDragEnd: function (e) { + // @event dragend: DragEndEvent + // Fired when the user stops dragging the marker. + + cancelAnimFrame(this._panRequest); + + // @event moveend: Event + // Fired when the marker stops moving (because of dragging). + delete this._oldLatLng; + this._marker + .fire('moveend') + .fire('dragend', e); + } +}); + +/* + * @class Marker + * @inherits Interactive layer + * @aka L.Marker + * L.Marker is used to display clickable/draggable icons on the map. Extends `Layer`. + * + * @example + * + * ```js + * L.marker([50.5, 30.5]).addTo(map); + * ``` + */ + +var Marker = Layer.extend({ + + // @section + // @aka Marker options + options: { + // @option icon: Icon = * + // Icon instance to use for rendering the marker. + // See [Icon documentation](#L.Icon) for details on how to customize the marker icon. + // If not specified, a common instance of `L.Icon.Default` is used. + icon: new IconDefault(), + + // Option inherited from "Interactive layer" abstract class + interactive: true, + + // @option keyboard: Boolean = true + // Whether the marker can be tabbed to with a keyboard and clicked by pressing enter. + keyboard: true, + + // @option title: String = '' + // Text for the browser tooltip that appear on marker hover (no tooltip by default). + // [Useful for accessibility](https://leafletjs.com/examples/accessibility/#markers-must-be-labelled). + title: '', + + // @option alt: String = 'Marker' + // Text for the `alt` attribute of the icon image. + // [Useful for accessibility](https://leafletjs.com/examples/accessibility/#markers-must-be-labelled). + alt: 'Marker', + + // @option zIndexOffset: Number = 0 + // By default, marker images zIndex is set automatically based on its latitude. Use this option if you want to put the marker on top of all others (or below), specifying a high value like `1000` (or high negative value, respectively). + zIndexOffset: 0, + + // @option opacity: Number = 1.0 + // The opacity of the marker. + opacity: 1, + + // @option riseOnHover: Boolean = false + // If `true`, the marker will get on top of others when you hover the mouse over it. + riseOnHover: false, + + // @option riseOffset: Number = 250 + // The z-index offset used for the `riseOnHover` feature. + riseOffset: 250, + + // @option pane: String = 'markerPane' + // `Map pane` where the markers icon will be added. + pane: 'markerPane', + + // @option shadowPane: String = 'shadowPane' + // `Map pane` where the markers shadow will be added. + shadowPane: 'shadowPane', + + // @option bubblingMouseEvents: Boolean = false + // When `true`, a mouse event on this marker will trigger the same event on the map + // (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used). + bubblingMouseEvents: false, + + // @option autoPanOnFocus: Boolean = true + // When `true`, the map will pan whenever the marker is focused (via + // e.g. pressing `tab` on the keyboard) to ensure the marker is + // visible within the map's bounds + autoPanOnFocus: true, + + // @section Draggable marker options + // @option draggable: Boolean = false + // Whether the marker is draggable with mouse/touch or not. + draggable: false, + + // @option autoPan: Boolean = false + // Whether to pan the map when dragging this marker near its edge or not. + autoPan: false, + + // @option autoPanPadding: Point = Point(50, 50) + // Distance (in pixels to the left/right and to the top/bottom) of the + // map edge to start panning the map. + autoPanPadding: [50, 50], + + // @option autoPanSpeed: Number = 10 + // Number of pixels the map should pan by. + autoPanSpeed: 10 + }, + + /* @section + * + * In addition to [shared layer methods](#Layer) like `addTo()` and `remove()` and [popup methods](#Popup) like bindPopup() you can also use the following methods: + */ + + initialize: function (latlng, options) { + setOptions(this, options); + this._latlng = toLatLng(latlng); + }, + + onAdd: function (map) { + this._zoomAnimated = this._zoomAnimated && map.options.markerZoomAnimation; + + if (this._zoomAnimated) { + map.on('zoomanim', this._animateZoom, this); + } + + this._initIcon(); + this.update(); + }, + + onRemove: function (map) { + if (this.dragging && this.dragging.enabled()) { + this.options.draggable = true; + this.dragging.removeHooks(); + } + delete this.dragging; + + if (this._zoomAnimated) { + map.off('zoomanim', this._animateZoom, this); + } + + this._removeIcon(); + this._removeShadow(); + }, + + getEvents: function () { + return { + zoom: this.update, + viewreset: this.update + }; + }, + + // @method getLatLng: LatLng + // Returns the current geographical position of the marker. + getLatLng: function () { + return this._latlng; + }, + + // @method setLatLng(latlng: LatLng): this + // Changes the marker position to the given point. + setLatLng: function (latlng) { + var oldLatLng = this._latlng; + this._latlng = toLatLng(latlng); + this.update(); + + // @event move: Event + // Fired when the marker is moved via [`setLatLng`](#marker-setlatlng) or by [dragging](#marker-dragging). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`. + return this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng}); + }, + + // @method setZIndexOffset(offset: Number): this + // Changes the [zIndex offset](#marker-zindexoffset) of the marker. + setZIndexOffset: function (offset) { + this.options.zIndexOffset = offset; + return this.update(); + }, + + // @method getIcon: Icon + // Returns the current icon used by the marker + getIcon: function () { + return this.options.icon; + }, + + // @method setIcon(icon: Icon): this + // Changes the marker icon. + setIcon: function (icon) { + + this.options.icon = icon; + + if (this._map) { + this._initIcon(); + this.update(); + } + + if (this._popup) { + this.bindPopup(this._popup, this._popup.options); + } + + return this; + }, + + getElement: function () { + return this._icon; + }, + + update: function () { + + if (this._icon && this._map) { + var pos = this._map.latLngToLayerPoint(this._latlng).round(); + this._setPos(pos); + } + + return this; + }, + + _initIcon: function () { + var options = this.options, + classToAdd = 'leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide'); + + var icon = options.icon.createIcon(this._icon), + addIcon = false; + + // if we're not reusing the icon, remove the old one and init new one + if (icon !== this._icon) { + if (this._icon) { + this._removeIcon(); + } + addIcon = true; + + if (options.title) { + icon.title = options.title; + } + + if (icon.tagName === 'IMG') { + icon.alt = options.alt || ''; + } + } + + addClass(icon, classToAdd); + + if (options.keyboard) { + icon.tabIndex = '0'; + icon.setAttribute('role', 'button'); + } + + this._icon = icon; + + if (options.riseOnHover) { + this.on({ + mouseover: this._bringToFront, + mouseout: this._resetZIndex + }); + } + + if (this.options.autoPanOnFocus) { + on(icon, 'focus', this._panOnFocus, this); + } + + var newShadow = options.icon.createShadow(this._shadow), + addShadow = false; + + if (newShadow !== this._shadow) { + this._removeShadow(); + addShadow = true; + } + + if (newShadow) { + addClass(newShadow, classToAdd); + newShadow.alt = ''; + } + this._shadow = newShadow; + + + if (options.opacity < 1) { + this._updateOpacity(); + } + + + if (addIcon) { + this.getPane().appendChild(this._icon); + } + this._initInteraction(); + if (newShadow && addShadow) { + this.getPane(options.shadowPane).appendChild(this._shadow); + } + }, + + _removeIcon: function () { + if (this.options.riseOnHover) { + this.off({ + mouseover: this._bringToFront, + mouseout: this._resetZIndex + }); + } + + if (this.options.autoPanOnFocus) { + off(this._icon, 'focus', this._panOnFocus, this); + } + + remove(this._icon); + this.removeInteractiveTarget(this._icon); + + this._icon = null; + }, + + _removeShadow: function () { + if (this._shadow) { + remove(this._shadow); + } + this._shadow = null; + }, + + _setPos: function (pos) { + + if (this._icon) { + setPosition(this._icon, pos); + } + + if (this._shadow) { + setPosition(this._shadow, pos); + } + + this._zIndex = pos.y + this.options.zIndexOffset; + + this._resetZIndex(); + }, + + _updateZIndex: function (offset) { + if (this._icon) { + this._icon.style.zIndex = this._zIndex + offset; + } + }, + + _animateZoom: function (opt) { + var pos = this._map._latLngToNewLayerPoint(this._latlng, opt.zoom, opt.center).round(); + + this._setPos(pos); + }, + + _initInteraction: function () { + + if (!this.options.interactive) { return; } + + addClass(this._icon, 'leaflet-interactive'); + + this.addInteractiveTarget(this._icon); + + if (MarkerDrag) { + var draggable = this.options.draggable; + if (this.dragging) { + draggable = this.dragging.enabled(); + this.dragging.disable(); + } + + this.dragging = new MarkerDrag(this); + + if (draggable) { + this.dragging.enable(); + } + } + }, + + // @method setOpacity(opacity: Number): this + // Changes the opacity of the marker. + setOpacity: function (opacity) { + this.options.opacity = opacity; + if (this._map) { + this._updateOpacity(); + } + + return this; + }, + + _updateOpacity: function () { + var opacity = this.options.opacity; + + if (this._icon) { + setOpacity(this._icon, opacity); + } + + if (this._shadow) { + setOpacity(this._shadow, opacity); + } + }, + + _bringToFront: function () { + this._updateZIndex(this.options.riseOffset); + }, + + _resetZIndex: function () { + this._updateZIndex(0); + }, + + _panOnFocus: function () { + var map = this._map; + if (!map) { return; } + + var iconOpts = this.options.icon.options; + var size = iconOpts.iconSize ? toPoint(iconOpts.iconSize) : toPoint(0, 0); + var anchor = iconOpts.iconAnchor ? toPoint(iconOpts.iconAnchor) : toPoint(0, 0); + + map.panInside(this._latlng, { + paddingTopLeft: anchor, + paddingBottomRight: size.subtract(anchor) + }); + }, + + _getPopupAnchor: function () { + return this.options.icon.options.popupAnchor; + }, + + _getTooltipAnchor: function () { + return this.options.icon.options.tooltipAnchor; + } +}); + + +// factory L.marker(latlng: LatLng, options? : Marker options) + +// @factory L.marker(latlng: LatLng, options? : Marker options) +// Instantiates a Marker object given a geographical point and optionally an options object. +function marker(latlng, options) { + return new Marker(latlng, options); +} + +/* + * @class Path + * @aka L.Path + * @inherits Interactive layer + * + * An abstract class that contains options and constants shared between vector + * overlays (Polygon, Polyline, Circle). Do not use it directly. Extends `Layer`. + */ + +var Path = Layer.extend({ + + // @section + // @aka Path options + options: { + // @option stroke: Boolean = true + // Whether to draw stroke along the path. Set it to `false` to disable borders on polygons or circles. + stroke: true, + + // @option color: String = '#3388ff' + // Stroke color + color: '#3388ff', + + // @option weight: Number = 3 + // Stroke width in pixels + weight: 3, + + // @option opacity: Number = 1.0 + // Stroke opacity + opacity: 1, + + // @option lineCap: String= 'round' + // A string that defines [shape to be used at the end](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linecap) of the stroke. + lineCap: 'round', + + // @option lineJoin: String = 'round' + // A string that defines [shape to be used at the corners](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linejoin) of the stroke. + lineJoin: 'round', + + // @option dashArray: String = null + // A string that defines the stroke [dash pattern](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dasharray). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility). + dashArray: null, + + // @option dashOffset: String = null + // A string that defines the [distance into the dash pattern to start the dash](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dashoffset). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility). + dashOffset: null, + + // @option fill: Boolean = depends + // Whether to fill the path with color. Set it to `false` to disable filling on polygons or circles. + fill: false, + + // @option fillColor: String = * + // Fill color. Defaults to the value of the [`color`](#path-color) option + fillColor: null, + + // @option fillOpacity: Number = 0.2 + // Fill opacity. + fillOpacity: 0.2, + + // @option fillRule: String = 'evenodd' + // A string that defines [how the inside of a shape](https://developer.mozilla.org/docs/Web/SVG/Attribute/fill-rule) is determined. + fillRule: 'evenodd', + + // className: '', + + // Option inherited from "Interactive layer" abstract class + interactive: true, + + // @option bubblingMouseEvents: Boolean = true + // When `true`, a mouse event on this path will trigger the same event on the map + // (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used). + bubblingMouseEvents: true + }, + + beforeAdd: function (map) { + // Renderer is set here because we need to call renderer.getEvents + // before this.getEvents. + this._renderer = map.getRenderer(this); + }, + + onAdd: function () { + this._renderer._initPath(this); + this._reset(); + this._renderer._addPath(this); + }, + + onRemove: function () { + this._renderer._removePath(this); + }, + + // @method redraw(): this + // Redraws the layer. Sometimes useful after you changed the coordinates that the path uses. + redraw: function () { + if (this._map) { + this._renderer._updatePath(this); + } + return this; + }, + + // @method setStyle(style: Path options): this + // Changes the appearance of a Path based on the options in the `Path options` object. + setStyle: function (style) { + setOptions(this, style); + if (this._renderer) { + this._renderer._updateStyle(this); + if (this.options.stroke && style && Object.prototype.hasOwnProperty.call(style, 'weight')) { + this._updateBounds(); + } + } + return this; + }, + + // @method bringToFront(): this + // Brings the layer to the top of all path layers. + bringToFront: function () { + if (this._renderer) { + this._renderer._bringToFront(this); + } + return this; + }, + + // @method bringToBack(): this + // Brings the layer to the bottom of all path layers. + bringToBack: function () { + if (this._renderer) { + this._renderer._bringToBack(this); + } + return this; + }, + + getElement: function () { + return this._path; + }, + + _reset: function () { + // defined in child classes + this._project(); + this._update(); + }, + + _clickTolerance: function () { + // used when doing hit detection for Canvas layers + return (this.options.stroke ? this.options.weight / 2 : 0) + + (this._renderer.options.tolerance || 0); + } +}); + +/* + * @class CircleMarker + * @aka L.CircleMarker + * @inherits Path + * + * A circle of a fixed size with radius specified in pixels. Extends `Path`. + */ + +var CircleMarker = Path.extend({ + + // @section + // @aka CircleMarker options + options: { + fill: true, + + // @option radius: Number = 10 + // Radius of the circle marker, in pixels + radius: 10 + }, + + initialize: function (latlng, options) { + setOptions(this, options); + this._latlng = toLatLng(latlng); + this._radius = this.options.radius; + }, + + // @method setLatLng(latLng: LatLng): this + // Sets the position of a circle marker to a new location. + setLatLng: function (latlng) { + var oldLatLng = this._latlng; + this._latlng = toLatLng(latlng); + this.redraw(); + + // @event move: Event + // Fired when the marker is moved via [`setLatLng`](#circlemarker-setlatlng). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`. + return this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng}); + }, + + // @method getLatLng(): LatLng + // Returns the current geographical position of the circle marker + getLatLng: function () { + return this._latlng; + }, + + // @method setRadius(radius: Number): this + // Sets the radius of a circle marker. Units are in pixels. + setRadius: function (radius) { + this.options.radius = this._radius = radius; + return this.redraw(); + }, + + // @method getRadius(): Number + // Returns the current radius of the circle + getRadius: function () { + return this._radius; + }, + + setStyle : function (options) { + var radius = options && options.radius || this._radius; + Path.prototype.setStyle.call(this, options); + this.setRadius(radius); + return this; + }, + + _project: function () { + this._point = this._map.latLngToLayerPoint(this._latlng); + this._updateBounds(); + }, + + _updateBounds: function () { + var r = this._radius, + r2 = this._radiusY || r, + w = this._clickTolerance(), + p = [r + w, r2 + w]; + this._pxBounds = new Bounds(this._point.subtract(p), this._point.add(p)); + }, + + _update: function () { + if (this._map) { + this._updatePath(); + } + }, + + _updatePath: function () { + this._renderer._updateCircle(this); + }, + + _empty: function () { + return this._radius && !this._renderer._bounds.intersects(this._pxBounds); + }, + + // Needed by the `Canvas` renderer for interactivity + _containsPoint: function (p) { + return p.distanceTo(this._point) <= this._radius + this._clickTolerance(); + } +}); + + +// @factory L.circleMarker(latlng: LatLng, options?: CircleMarker options) +// Instantiates a circle marker object given a geographical point, and an optional options object. +function circleMarker(latlng, options) { + return new CircleMarker(latlng, options); +} + +/* + * @class Circle + * @aka L.Circle + * @inherits CircleMarker + * + * A class for drawing circle overlays on a map. Extends `CircleMarker`. + * + * It's an approximation and starts to diverge from a real circle closer to poles (due to projection distortion). + * + * @example + * + * ```js + * L.circle([50.5, 30.5], {radius: 200}).addTo(map); + * ``` + */ + +var Circle = CircleMarker.extend({ + + initialize: function (latlng, options, legacyOptions) { + if (typeof options === 'number') { + // Backwards compatibility with 0.7.x factory (latlng, radius, options?) + options = extend({}, legacyOptions, {radius: options}); + } + setOptions(this, options); + this._latlng = toLatLng(latlng); + + if (isNaN(this.options.radius)) { throw new Error('Circle radius cannot be NaN'); } + + // @section + // @aka Circle options + // @option radius: Number; Radius of the circle, in meters. + this._mRadius = this.options.radius; + }, + + // @method setRadius(radius: Number): this + // Sets the radius of a circle. Units are in meters. + setRadius: function (radius) { + this._mRadius = radius; + return this.redraw(); + }, + + // @method getRadius(): Number + // Returns the current radius of a circle. Units are in meters. + getRadius: function () { + return this._mRadius; + }, + + // @method getBounds(): LatLngBounds + // Returns the `LatLngBounds` of the path. + getBounds: function () { + var half = [this._radius, this._radiusY || this._radius]; + + return new LatLngBounds( + this._map.layerPointToLatLng(this._point.subtract(half)), + this._map.layerPointToLatLng(this._point.add(half))); + }, + + setStyle: Path.prototype.setStyle, + + _project: function () { + + var lng = this._latlng.lng, + lat = this._latlng.lat, + map = this._map, + crs = map.options.crs; + + if (crs.distance === Earth.distance) { + var d = Math.PI / 180, + latR = (this._mRadius / Earth.R) / d, + top = map.project([lat + latR, lng]), + bottom = map.project([lat - latR, lng]), + p = top.add(bottom).divideBy(2), + lat2 = map.unproject(p).lat, + lngR = Math.acos((Math.cos(latR * d) - Math.sin(lat * d) * Math.sin(lat2 * d)) / + (Math.cos(lat * d) * Math.cos(lat2 * d))) / d; + + if (isNaN(lngR) || lngR === 0) { + lngR = latR / Math.cos(Math.PI / 180 * lat); // Fallback for edge case, #2425 + } + + this._point = p.subtract(map.getPixelOrigin()); + this._radius = isNaN(lngR) ? 0 : p.x - map.project([lat2, lng - lngR]).x; + this._radiusY = p.y - top.y; + + } else { + var latlng2 = crs.unproject(crs.project(this._latlng).subtract([this._mRadius, 0])); + + this._point = map.latLngToLayerPoint(this._latlng); + this._radius = this._point.x - map.latLngToLayerPoint(latlng2).x; + } + + this._updateBounds(); + } +}); + +// @factory L.circle(latlng: LatLng, options?: Circle options) +// Instantiates a circle object given a geographical point, and an options object +// which contains the circle radius. +// @alternative +// @factory L.circle(latlng: LatLng, radius: Number, options?: Circle options) +// Obsolete way of instantiating a circle, for compatibility with 0.7.x code. +// Do not use in new applications or plugins. +function circle(latlng, options, legacyOptions) { + return new Circle(latlng, options, legacyOptions); +} + +/* + * @class Polyline + * @aka L.Polyline + * @inherits Path + * + * A class for drawing polyline overlays on a map. Extends `Path`. + * + * @example + * + * ```js + * // create a red polyline from an array of LatLng points + * var latlngs = [ + * [45.51, -122.68], + * [37.77, -122.43], + * [34.04, -118.2] + * ]; + * + * var polyline = L.polyline(latlngs, {color: 'red'}).addTo(map); + * + * // zoom the map to the polyline + * map.fitBounds(polyline.getBounds()); + * ``` + * + * You can also pass a multi-dimensional array to represent a `MultiPolyline` shape: + * + * ```js + * // create a red polyline from an array of arrays of LatLng points + * var latlngs = [ + * [[45.51, -122.68], + * [37.77, -122.43], + * [34.04, -118.2]], + * [[40.78, -73.91], + * [41.83, -87.62], + * [32.76, -96.72]] + * ]; + * ``` + */ + + +var Polyline = Path.extend({ + + // @section + // @aka Polyline options + options: { + // @option smoothFactor: Number = 1.0 + // How much to simplify the polyline on each zoom level. More means + // better performance and smoother look, and less means more accurate representation. + smoothFactor: 1.0, + + // @option noClip: Boolean = false + // Disable polyline clipping. + noClip: false + }, + + initialize: function (latlngs, options) { + setOptions(this, options); + this._setLatLngs(latlngs); + }, + + // @method getLatLngs(): LatLng[] + // Returns an array of the points in the path, or nested arrays of points in case of multi-polyline. + getLatLngs: function () { + return this._latlngs; + }, + + // @method setLatLngs(latlngs: LatLng[]): this + // Replaces all the points in the polyline with the given array of geographical points. + setLatLngs: function (latlngs) { + this._setLatLngs(latlngs); + return this.redraw(); + }, + + // @method isEmpty(): Boolean + // Returns `true` if the Polyline has no LatLngs. + isEmpty: function () { + return !this._latlngs.length; + }, + + // @method closestLayerPoint(p: Point): Point + // Returns the point closest to `p` on the Polyline. + closestLayerPoint: function (p) { + var minDistance = Infinity, + minPoint = null, + closest = _sqClosestPointOnSegment, + p1, p2; + + for (var j = 0, jLen = this._parts.length; j < jLen; j++) { + var points = this._parts[j]; + + for (var i = 1, len = points.length; i < len; i++) { + p1 = points[i - 1]; + p2 = points[i]; + + var sqDist = closest(p, p1, p2, true); + + if (sqDist < minDistance) { + minDistance = sqDist; + minPoint = closest(p, p1, p2); + } + } + } + if (minPoint) { + minPoint.distance = Math.sqrt(minDistance); + } + return minPoint; + }, + + // @method getCenter(): LatLng + // Returns the center ([centroid](https://en.wikipedia.org/wiki/Centroid)) of the polyline. + getCenter: function () { + // throws error when not yet added to map as this center calculation requires projected coordinates + if (!this._map) { + throw new Error('Must add layer to map before using getCenter()'); + } + + var i, halfDist, segDist, dist, p1, p2, ratio, + points = this._rings[0], + len = points.length; + + if (!len) { return null; } + + // polyline centroid algorithm; only uses the first ring if there are multiple + + for (i = 0, halfDist = 0; i < len - 1; i++) { + halfDist += points[i].distanceTo(points[i + 1]) / 2; + } + + // The line is so small in the current view that all points are on the same pixel. + if (halfDist === 0) { + return this._map.layerPointToLatLng(points[0]); + } + + for (i = 0, dist = 0; i < len - 1; i++) { + p1 = points[i]; + p2 = points[i + 1]; + segDist = p1.distanceTo(p2); + dist += segDist; + + if (dist > halfDist) { + ratio = (dist - halfDist) / segDist; + return this._map.layerPointToLatLng([ + p2.x - ratio * (p2.x - p1.x), + p2.y - ratio * (p2.y - p1.y) + ]); + } + } + }, + + // @method getBounds(): LatLngBounds + // Returns the `LatLngBounds` of the path. + getBounds: function () { + return this._bounds; + }, + + // @method addLatLng(latlng: LatLng, latlngs?: LatLng[]): this + // Adds a given point to the polyline. By default, adds to the first ring of + // the polyline in case of a multi-polyline, but can be overridden by passing + // a specific ring as a LatLng array (that you can earlier access with [`getLatLngs`](#polyline-getlatlngs)). + addLatLng: function (latlng, latlngs) { + latlngs = latlngs || this._defaultShape(); + latlng = toLatLng(latlng); + latlngs.push(latlng); + this._bounds.extend(latlng); + return this.redraw(); + }, + + _setLatLngs: function (latlngs) { + this._bounds = new LatLngBounds(); + this._latlngs = this._convertLatLngs(latlngs); + }, + + _defaultShape: function () { + return isFlat(this._latlngs) ? this._latlngs : this._latlngs[0]; + }, + + // recursively convert latlngs input into actual LatLng instances; calculate bounds along the way + _convertLatLngs: function (latlngs) { + var result = [], + flat = isFlat(latlngs); + + for (var i = 0, len = latlngs.length; i < len; i++) { + if (flat) { + result[i] = toLatLng(latlngs[i]); + this._bounds.extend(result[i]); + } else { + result[i] = this._convertLatLngs(latlngs[i]); + } + } + + return result; + }, + + _project: function () { + var pxBounds = new Bounds(); + this._rings = []; + this._projectLatlngs(this._latlngs, this._rings, pxBounds); + + if (this._bounds.isValid() && pxBounds.isValid()) { + this._rawPxBounds = pxBounds; + this._updateBounds(); + } + }, + + _updateBounds: function () { + var w = this._clickTolerance(), + p = new Point(w, w); + + if (!this._rawPxBounds) { + return; + } + + this._pxBounds = new Bounds([ + this._rawPxBounds.min.subtract(p), + this._rawPxBounds.max.add(p) + ]); + }, + + // recursively turns latlngs into a set of rings with projected coordinates + _projectLatlngs: function (latlngs, result, projectedBounds) { + var flat = latlngs[0] instanceof LatLng, + len = latlngs.length, + i, ring; + + if (flat) { + ring = []; + for (i = 0; i < len; i++) { + ring[i] = this._map.latLngToLayerPoint(latlngs[i]); + projectedBounds.extend(ring[i]); + } + result.push(ring); + } else { + for (i = 0; i < len; i++) { + this._projectLatlngs(latlngs[i], result, projectedBounds); + } + } + }, + + // clip polyline by renderer bounds so that we have less to render for performance + _clipPoints: function () { + var bounds = this._renderer._bounds; + + this._parts = []; + if (!this._pxBounds || !this._pxBounds.intersects(bounds)) { + return; + } + + if (this.options.noClip) { + this._parts = this._rings; + return; + } + + var parts = this._parts, + i, j, k, len, len2, segment, points; + + for (i = 0, k = 0, len = this._rings.length; i < len; i++) { + points = this._rings[i]; + + for (j = 0, len2 = points.length; j < len2 - 1; j++) { + segment = clipSegment(points[j], points[j + 1], bounds, j, true); + + if (!segment) { continue; } + + parts[k] = parts[k] || []; + parts[k].push(segment[0]); + + // if segment goes out of screen, or it's the last one, it's the end of the line part + if ((segment[1] !== points[j + 1]) || (j === len2 - 2)) { + parts[k].push(segment[1]); + k++; + } + } + } + }, + + // simplify each clipped part of the polyline for performance + _simplifyPoints: function () { + var parts = this._parts, + tolerance = this.options.smoothFactor; + + for (var i = 0, len = parts.length; i < len; i++) { + parts[i] = simplify(parts[i], tolerance); + } + }, + + _update: function () { + if (!this._map) { return; } + + this._clipPoints(); + this._simplifyPoints(); + this._updatePath(); + }, + + _updatePath: function () { + this._renderer._updatePoly(this); + }, + + // Needed by the `Canvas` renderer for interactivity + _containsPoint: function (p, closed) { + var i, j, k, len, len2, part, + w = this._clickTolerance(); + + if (!this._pxBounds || !this._pxBounds.contains(p)) { return false; } + + // hit detection for polylines + for (i = 0, len = this._parts.length; i < len; i++) { + part = this._parts[i]; + + for (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) { + if (!closed && (j === 0)) { continue; } + + if (pointToSegmentDistance(p, part[k], part[j]) <= w) { + return true; + } + } + } + return false; + } +}); + +// @factory L.polyline(latlngs: LatLng[], options?: Polyline options) +// Instantiates a polyline object given an array of geographical points and +// optionally an options object. You can create a `Polyline` object with +// multiple separate lines (`MultiPolyline`) by passing an array of arrays +// of geographic points. +function polyline(latlngs, options) { + return new Polyline(latlngs, options); +} + +// Retrocompat. Allow plugins to support Leaflet versions before and after 1.1. +Polyline._flat = _flat; + +/* + * @class Polygon + * @aka L.Polygon + * @inherits Polyline + * + * A class for drawing polygon overlays on a map. Extends `Polyline`. + * + * Note that points you pass when creating a polygon shouldn't have an additional last point equal to the first one — it's better to filter out such points. + * + * + * @example + * + * ```js + * // create a red polygon from an array of LatLng points + * var latlngs = [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]]; + * + * var polygon = L.polygon(latlngs, {color: 'red'}).addTo(map); + * + * // zoom the map to the polygon + * map.fitBounds(polygon.getBounds()); + * ``` + * + * You can also pass an array of arrays of latlngs, with the first array representing the outer shape and the other arrays representing holes in the outer shape: + * + * ```js + * var latlngs = [ + * [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring + * [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole + * ]; + * ``` + * + * Additionally, you can pass a multi-dimensional array to represent a MultiPolygon shape. + * + * ```js + * var latlngs = [ + * [ // first polygon + * [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring + * [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole + * ], + * [ // second polygon + * [[41, -111.03],[45, -111.04],[45, -104.05],[41, -104.05]] + * ] + * ]; + * ``` + */ + +var Polygon = Polyline.extend({ + + options: { + fill: true + }, + + isEmpty: function () { + return !this._latlngs.length || !this._latlngs[0].length; + }, + + getCenter: function () { + // throws error when not yet added to map as this center calculation requires projected coordinates + if (!this._map) { + throw new Error('Must add layer to map before using getCenter()'); + } + + var i, j, p1, p2, f, area, x, y, center, + points = this._rings[0], + len = points.length; + + if (!len) { return null; } + + // polygon centroid algorithm; only uses the first ring if there are multiple + + area = x = y = 0; + + for (i = 0, j = len - 1; i < len; j = i++) { + p1 = points[i]; + p2 = points[j]; + + f = p1.y * p2.x - p2.y * p1.x; + x += (p1.x + p2.x) * f; + y += (p1.y + p2.y) * f; + area += f * 3; + } + + if (area === 0) { + // Polygon is so small that all points are on same pixel. + center = points[0]; + } else { + center = [x / area, y / area]; + } + return this._map.layerPointToLatLng(center); + }, + + _convertLatLngs: function (latlngs) { + var result = Polyline.prototype._convertLatLngs.call(this, latlngs), + len = result.length; + + // remove last point if it equals first one + if (len >= 2 && result[0] instanceof LatLng && result[0].equals(result[len - 1])) { + result.pop(); + } + return result; + }, + + _setLatLngs: function (latlngs) { + Polyline.prototype._setLatLngs.call(this, latlngs); + if (isFlat(this._latlngs)) { + this._latlngs = [this._latlngs]; + } + }, + + _defaultShape: function () { + return isFlat(this._latlngs[0]) ? this._latlngs[0] : this._latlngs[0][0]; + }, + + _clipPoints: function () { + // polygons need a different clipping algorithm so we redefine that + + var bounds = this._renderer._bounds, + w = this.options.weight, + p = new Point(w, w); + + // increase clip padding by stroke width to avoid stroke on clip edges + bounds = new Bounds(bounds.min.subtract(p), bounds.max.add(p)); + + this._parts = []; + if (!this._pxBounds || !this._pxBounds.intersects(bounds)) { + return; + } + + if (this.options.noClip) { + this._parts = this._rings; + return; + } + + for (var i = 0, len = this._rings.length, clipped; i < len; i++) { + clipped = clipPolygon(this._rings[i], bounds, true); + if (clipped.length) { + this._parts.push(clipped); + } + } + }, + + _updatePath: function () { + this._renderer._updatePoly(this, true); + }, + + // Needed by the `Canvas` renderer for interactivity + _containsPoint: function (p) { + var inside = false, + part, p1, p2, i, j, k, len, len2; + + if (!this._pxBounds || !this._pxBounds.contains(p)) { return false; } + + // ray casting algorithm for detecting if point is in polygon + for (i = 0, len = this._parts.length; i < len; i++) { + part = this._parts[i]; + + for (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) { + p1 = part[j]; + p2 = part[k]; + + if (((p1.y > p.y) !== (p2.y > p.y)) && (p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x)) { + inside = !inside; + } + } + } + + // also check if it's on polygon stroke + return inside || Polyline.prototype._containsPoint.call(this, p, true); + } + +}); + + +// @factory L.polygon(latlngs: LatLng[], options?: Polyline options) +function polygon(latlngs, options) { + return new Polygon(latlngs, options); +} + +/* + * @class GeoJSON + * @aka L.GeoJSON + * @inherits FeatureGroup + * + * Represents a GeoJSON object or an array of GeoJSON objects. Allows you to parse + * GeoJSON data and display it on the map. Extends `FeatureGroup`. + * + * @example + * + * ```js + * L.geoJSON(data, { + * style: function (feature) { + * return {color: feature.properties.color}; + * } + * }).bindPopup(function (layer) { + * return layer.feature.properties.description; + * }).addTo(map); + * ``` + */ + +var GeoJSON = FeatureGroup.extend({ + + /* @section + * @aka GeoJSON options + * + * @option pointToLayer: Function = * + * A `Function` defining how GeoJSON points spawn Leaflet layers. It is internally + * called when data is added, passing the GeoJSON point feature and its `LatLng`. + * The default is to spawn a default `Marker`: + * ```js + * function(geoJsonPoint, latlng) { + * return L.marker(latlng); + * } + * ``` + * + * @option style: Function = * + * A `Function` defining the `Path options` for styling GeoJSON lines and polygons, + * called internally when data is added. + * The default value is to not override any defaults: + * ```js + * function (geoJsonFeature) { + * return {} + * } + * ``` + * + * @option onEachFeature: Function = * + * A `Function` that will be called once for each created `Feature`, after it has + * been created and styled. Useful for attaching events and popups to features. + * The default is to do nothing with the newly created layers: + * ```js + * function (feature, layer) {} + * ``` + * + * @option filter: Function = * + * A `Function` that will be used to decide whether to include a feature or not. + * The default is to include all features: + * ```js + * function (geoJsonFeature) { + * return true; + * } + * ``` + * Note: dynamically changing the `filter` option will have effect only on newly + * added data. It will _not_ re-evaluate already included features. + * + * @option coordsToLatLng: Function = * + * A `Function` that will be used for converting GeoJSON coordinates to `LatLng`s. + * The default is the `coordsToLatLng` static method. + * + * @option markersInheritOptions: Boolean = false + * Whether default Markers for "Point" type Features inherit from group options. + */ + + initialize: function (geojson, options) { + setOptions(this, options); + + this._layers = {}; + + if (geojson) { + this.addData(geojson); + } + }, + + // @method addData( data ): this + // Adds a GeoJSON object to the layer. + addData: function (geojson) { + var features = isArray(geojson) ? geojson : geojson.features, + i, len, feature; + + if (features) { + for (i = 0, len = features.length; i < len; i++) { + // only add this if geometry or geometries are set and not null + feature = features[i]; + if (feature.geometries || feature.geometry || feature.features || feature.coordinates) { + this.addData(feature); + } + } + return this; + } + + var options = this.options; + + if (options.filter && !options.filter(geojson)) { return this; } + + var layer = geometryToLayer(geojson, options); + if (!layer) { + return this; + } + layer.feature = asFeature(geojson); + + layer.defaultOptions = layer.options; + this.resetStyle(layer); + + if (options.onEachFeature) { + options.onEachFeature(geojson, layer); + } + + return this.addLayer(layer); + }, + + // @method resetStyle( layer? ): this + // Resets the given vector layer's style to the original GeoJSON style, useful for resetting style after hover events. + // If `layer` is omitted, the style of all features in the current layer is reset. + resetStyle: function (layer) { + if (layer === undefined) { + return this.eachLayer(this.resetStyle, this); + } + // reset any custom styles + layer.options = extend({}, layer.defaultOptions); + this._setLayerStyle(layer, this.options.style); + return this; + }, + + // @method setStyle( style ): this + // Changes styles of GeoJSON vector layers with the given style function. + setStyle: function (style) { + return this.eachLayer(function (layer) { + this._setLayerStyle(layer, style); + }, this); + }, + + _setLayerStyle: function (layer, style) { + if (layer.setStyle) { + if (typeof style === 'function') { + style = style(layer.feature); + } + layer.setStyle(style); + } + } +}); + +// @section +// There are several static functions which can be called without instantiating L.GeoJSON: + +// @function geometryToLayer(featureData: Object, options?: GeoJSON options): Layer +// Creates a `Layer` from a given GeoJSON feature. Can use a custom +// [`pointToLayer`](#geojson-pointtolayer) and/or [`coordsToLatLng`](#geojson-coordstolatlng) +// functions if provided as options. +function geometryToLayer(geojson, options) { + + var geometry = geojson.type === 'Feature' ? geojson.geometry : geojson, + coords = geometry ? geometry.coordinates : null, + layers = [], + pointToLayer = options && options.pointToLayer, + _coordsToLatLng = options && options.coordsToLatLng || coordsToLatLng, + latlng, latlngs, i, len; + + if (!coords && !geometry) { + return null; + } + + switch (geometry.type) { + case 'Point': + latlng = _coordsToLatLng(coords); + return _pointToLayer(pointToLayer, geojson, latlng, options); + + case 'MultiPoint': + for (i = 0, len = coords.length; i < len; i++) { + latlng = _coordsToLatLng(coords[i]); + layers.push(_pointToLayer(pointToLayer, geojson, latlng, options)); + } + return new FeatureGroup(layers); + + case 'LineString': + case 'MultiLineString': + latlngs = coordsToLatLngs(coords, geometry.type === 'LineString' ? 0 : 1, _coordsToLatLng); + return new Polyline(latlngs, options); + + case 'Polygon': + case 'MultiPolygon': + latlngs = coordsToLatLngs(coords, geometry.type === 'Polygon' ? 1 : 2, _coordsToLatLng); + return new Polygon(latlngs, options); + + case 'GeometryCollection': + for (i = 0, len = geometry.geometries.length; i < len; i++) { + var layer = geometryToLayer({ + geometry: geometry.geometries[i], + type: 'Feature', + properties: geojson.properties + }, options); + + if (layer) { + layers.push(layer); + } + } + return new FeatureGroup(layers); + + default: + throw new Error('Invalid GeoJSON object.'); + } +} + +function _pointToLayer(pointToLayerFn, geojson, latlng, options) { + return pointToLayerFn ? + pointToLayerFn(geojson, latlng) : + new Marker(latlng, options && options.markersInheritOptions && options); +} + +// @function coordsToLatLng(coords: Array): LatLng +// Creates a `LatLng` object from an array of 2 numbers (longitude, latitude) +// or 3 numbers (longitude, latitude, altitude) used in GeoJSON for points. +function coordsToLatLng(coords) { + return new LatLng(coords[1], coords[0], coords[2]); +} + +// @function coordsToLatLngs(coords: Array, levelsDeep?: Number, coordsToLatLng?: Function): Array +// Creates a multidimensional array of `LatLng`s from a GeoJSON coordinates array. +// `levelsDeep` specifies the nesting level (0 is for an array of points, 1 for an array of arrays of points, etc., 0 by default). +// Can use a custom [`coordsToLatLng`](#geojson-coordstolatlng) function. +function coordsToLatLngs(coords, levelsDeep, _coordsToLatLng) { + var latlngs = []; + + for (var i = 0, len = coords.length, latlng; i < len; i++) { + latlng = levelsDeep ? + coordsToLatLngs(coords[i], levelsDeep - 1, _coordsToLatLng) : + (_coordsToLatLng || coordsToLatLng)(coords[i]); + + latlngs.push(latlng); + } + + return latlngs; +} + +// @function latLngToCoords(latlng: LatLng, precision?: Number|false): Array +// Reverse of [`coordsToLatLng`](#geojson-coordstolatlng) +// Coordinates values are rounded with [`formatNum`](#util-formatnum) function. +function latLngToCoords(latlng, precision) { + latlng = toLatLng(latlng); + return latlng.alt !== undefined ? + [formatNum(latlng.lng, precision), formatNum(latlng.lat, precision), formatNum(latlng.alt, precision)] : + [formatNum(latlng.lng, precision), formatNum(latlng.lat, precision)]; +} + +// @function latLngsToCoords(latlngs: Array, levelsDeep?: Number, closed?: Boolean, precision?: Number|false): Array +// Reverse of [`coordsToLatLngs`](#geojson-coordstolatlngs) +// `closed` determines whether the first point should be appended to the end of the array to close the feature, only used when `levelsDeep` is 0. False by default. +// Coordinates values are rounded with [`formatNum`](#util-formatnum) function. +function latLngsToCoords(latlngs, levelsDeep, closed, precision) { + var coords = []; + + for (var i = 0, len = latlngs.length; i < len; i++) { + coords.push(levelsDeep ? + latLngsToCoords(latlngs[i], levelsDeep - 1, closed, precision) : + latLngToCoords(latlngs[i], precision)); + } + + if (!levelsDeep && closed) { + coords.push(coords[0]); + } + + return coords; +} + +function getFeature(layer, newGeometry) { + return layer.feature ? + extend({}, layer.feature, {geometry: newGeometry}) : + asFeature(newGeometry); +} + +// @function asFeature(geojson: Object): Object +// Normalize GeoJSON geometries/features into GeoJSON features. +function asFeature(geojson) { + if (geojson.type === 'Feature' || geojson.type === 'FeatureCollection') { + return geojson; + } + + return { + type: 'Feature', + properties: {}, + geometry: geojson + }; +} + +var PointToGeoJSON = { + toGeoJSON: function (precision) { + return getFeature(this, { + type: 'Point', + coordinates: latLngToCoords(this.getLatLng(), precision) + }); + } +}; + +// @namespace Marker +// @section Other methods +// @method toGeoJSON(precision?: Number|false): Object +// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`. +// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the marker (as a GeoJSON `Point` Feature). +Marker.include(PointToGeoJSON); + +// @namespace CircleMarker +// @method toGeoJSON(precision?: Number|false): Object +// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`. +// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the circle marker (as a GeoJSON `Point` Feature). +Circle.include(PointToGeoJSON); +CircleMarker.include(PointToGeoJSON); + + +// @namespace Polyline +// @method toGeoJSON(precision?: Number|false): Object +// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`. +// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the polyline (as a GeoJSON `LineString` or `MultiLineString` Feature). +Polyline.include({ + toGeoJSON: function (precision) { + var multi = !isFlat(this._latlngs); + + var coords = latLngsToCoords(this._latlngs, multi ? 1 : 0, false, precision); + + return getFeature(this, { + type: (multi ? 'Multi' : '') + 'LineString', + coordinates: coords + }); + } +}); + +// @namespace Polygon +// @method toGeoJSON(precision?: Number|false): Object +// Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`. +// Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the polygon (as a GeoJSON `Polygon` or `MultiPolygon` Feature). +Polygon.include({ + toGeoJSON: function (precision) { + var holes = !isFlat(this._latlngs), + multi = holes && !isFlat(this._latlngs[0]); + + var coords = latLngsToCoords(this._latlngs, multi ? 2 : holes ? 1 : 0, true, precision); + + if (!holes) { + coords = [coords]; + } + + return getFeature(this, { + type: (multi ? 'Multi' : '') + 'Polygon', + coordinates: coords + }); + } +}); + + +// @namespace LayerGroup +LayerGroup.include({ + toMultiPoint: function (precision) { + var coords = []; + + this.eachLayer(function (layer) { + coords.push(layer.toGeoJSON(precision).geometry.coordinates); + }); + + return getFeature(this, { + type: 'MultiPoint', + coordinates: coords + }); + }, + + // @method toGeoJSON(precision?: Number|false): Object + // Coordinates values are rounded with [`formatNum`](#util-formatnum) function with given `precision`. + // Returns a [`GeoJSON`](https://en.wikipedia.org/wiki/GeoJSON) representation of the layer group (as a GeoJSON `FeatureCollection`, `GeometryCollection`, or `MultiPoint`). + toGeoJSON: function (precision) { + + var type = this.feature && this.feature.geometry && this.feature.geometry.type; + + if (type === 'MultiPoint') { + return this.toMultiPoint(precision); + } + + var isGeometryCollection = type === 'GeometryCollection', + jsons = []; + + this.eachLayer(function (layer) { + if (layer.toGeoJSON) { + var json = layer.toGeoJSON(precision); + if (isGeometryCollection) { + jsons.push(json.geometry); + } else { + var feature = asFeature(json); + // Squash nested feature collections + if (feature.type === 'FeatureCollection') { + jsons.push.apply(jsons, feature.features); + } else { + jsons.push(feature); + } + } + } + }); + + if (isGeometryCollection) { + return getFeature(this, { + geometries: jsons, + type: 'GeometryCollection' + }); + } + + return { + type: 'FeatureCollection', + features: jsons + }; + } +}); + +// @namespace GeoJSON +// @factory L.geoJSON(geojson?: Object, options?: GeoJSON options) +// Creates a GeoJSON layer. Optionally accepts an object in +// [GeoJSON format](https://tools.ietf.org/html/rfc7946) to display on the map +// (you can alternatively add it later with `addData` method) and an `options` object. +function geoJSON(geojson, options) { + return new GeoJSON(geojson, options); +} + +// Backward compatibility. +var geoJson = geoJSON; + +/* + * @class ImageOverlay + * @aka L.ImageOverlay + * @inherits Interactive layer + * + * Used to load and display a single image over specific bounds of the map. Extends `Layer`. + * + * @example + * + * ```js + * var imageUrl = 'https://maps.lib.utexas.edu/maps/historical/newark_nj_1922.jpg', + * imageBounds = [[40.712216, -74.22655], [40.773941, -74.12544]]; + * L.imageOverlay(imageUrl, imageBounds).addTo(map); + * ``` + */ + +var ImageOverlay = Layer.extend({ + + // @section + // @aka ImageOverlay options + options: { + // @option opacity: Number = 1.0 + // The opacity of the image overlay. + opacity: 1, + + // @option alt: String = '' + // Text for the `alt` attribute of the image (useful for accessibility). + alt: '', + + // @option interactive: Boolean = false + // If `true`, the image overlay will emit [mouse events](#interactive-layer) when clicked or hovered. + interactive: false, + + // @option crossOrigin: Boolean|String = false + // Whether the crossOrigin attribute will be added to the image. + // If a String is provided, the image will have its crossOrigin attribute set to the String provided. This is needed if you want to access image pixel data. + // Refer to [CORS Settings](https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes) for valid String values. + crossOrigin: false, + + // @option errorOverlayUrl: String = '' + // URL to the overlay image to show in place of the overlay that failed to load. + errorOverlayUrl: '', + + // @option zIndex: Number = 1 + // The explicit [zIndex](https://developer.mozilla.org/docs/Web/CSS/CSS_Positioning/Understanding_z_index) of the overlay layer. + zIndex: 1, + + // @option className: String = '' + // A custom class name to assign to the image. Empty by default. + className: '' + }, + + initialize: function (url, bounds, options) { // (String, LatLngBounds, Object) + this._url = url; + this._bounds = toLatLngBounds(bounds); + + setOptions(this, options); + }, + + onAdd: function () { + if (!this._image) { + this._initImage(); + + if (this.options.opacity < 1) { + this._updateOpacity(); + } + } + + if (this.options.interactive) { + addClass(this._image, 'leaflet-interactive'); + this.addInteractiveTarget(this._image); + } + + this.getPane().appendChild(this._image); + this._reset(); + }, + + onRemove: function () { + remove(this._image); + if (this.options.interactive) { + this.removeInteractiveTarget(this._image); + } + }, + + // @method setOpacity(opacity: Number): this + // Sets the opacity of the overlay. + setOpacity: function (opacity) { + this.options.opacity = opacity; + + if (this._image) { + this._updateOpacity(); + } + return this; + }, + + setStyle: function (styleOpts) { + if (styleOpts.opacity) { + this.setOpacity(styleOpts.opacity); + } + return this; + }, + + // @method bringToFront(): this + // Brings the layer to the top of all overlays. + bringToFront: function () { + if (this._map) { + toFront(this._image); + } + return this; + }, + + // @method bringToBack(): this + // Brings the layer to the bottom of all overlays. + bringToBack: function () { + if (this._map) { + toBack(this._image); + } + return this; + }, + + // @method setUrl(url: String): this + // Changes the URL of the image. + setUrl: function (url) { + this._url = url; + + if (this._image) { + this._image.src = url; + } + return this; + }, + + // @method setBounds(bounds: LatLngBounds): this + // Update the bounds that this ImageOverlay covers + setBounds: function (bounds) { + this._bounds = toLatLngBounds(bounds); + + if (this._map) { + this._reset(); + } + return this; + }, + + getEvents: function () { + var events = { + zoom: this._reset, + viewreset: this._reset + }; + + if (this._zoomAnimated) { + events.zoomanim = this._animateZoom; + } + + return events; + }, + + // @method setZIndex(value: Number): this + // Changes the [zIndex](#imageoverlay-zindex) of the image overlay. + setZIndex: function (value) { + this.options.zIndex = value; + this._updateZIndex(); + return this; + }, + + // @method getBounds(): LatLngBounds + // Get the bounds that this ImageOverlay covers + getBounds: function () { + return this._bounds; + }, + + // @method getElement(): HTMLElement + // Returns the instance of [`HTMLImageElement`](https://developer.mozilla.org/docs/Web/API/HTMLImageElement) + // used by this overlay. + getElement: function () { + return this._image; + }, + + _initImage: function () { + var wasElementSupplied = this._url.tagName === 'IMG'; + var img = this._image = wasElementSupplied ? this._url : create$1('img'); + + addClass(img, 'leaflet-image-layer'); + if (this._zoomAnimated) { addClass(img, 'leaflet-zoom-animated'); } + if (this.options.className) { addClass(img, this.options.className); } + + img.onselectstart = falseFn; + img.onmousemove = falseFn; + + // @event load: Event + // Fired when the ImageOverlay layer has loaded its image + img.onload = bind(this.fire, this, 'load'); + img.onerror = bind(this._overlayOnError, this, 'error'); + + if (this.options.crossOrigin || this.options.crossOrigin === '') { + img.crossOrigin = this.options.crossOrigin === true ? '' : this.options.crossOrigin; + } + + if (this.options.zIndex) { + this._updateZIndex(); + } + + if (wasElementSupplied) { + this._url = img.src; + return; + } + + img.src = this._url; + img.alt = this.options.alt; + }, + + _animateZoom: function (e) { + var scale = this._map.getZoomScale(e.zoom), + offset = this._map._latLngBoundsToNewLayerBounds(this._bounds, e.zoom, e.center).min; + + setTransform(this._image, offset, scale); + }, + + _reset: function () { + var image = this._image, + bounds = new Bounds( + this._map.latLngToLayerPoint(this._bounds.getNorthWest()), + this._map.latLngToLayerPoint(this._bounds.getSouthEast())), + size = bounds.getSize(); + + setPosition(image, bounds.min); + + image.style.width = size.x + 'px'; + image.style.height = size.y + 'px'; + }, + + _updateOpacity: function () { + setOpacity(this._image, this.options.opacity); + }, + + _updateZIndex: function () { + if (this._image && this.options.zIndex !== undefined && this.options.zIndex !== null) { + this._image.style.zIndex = this.options.zIndex; + } + }, + + _overlayOnError: function () { + // @event error: Event + // Fired when the ImageOverlay layer fails to load its image + this.fire('error'); + + var errorUrl = this.options.errorOverlayUrl; + if (errorUrl && this._url !== errorUrl) { + this._url = errorUrl; + this._image.src = errorUrl; + } + }, + + // @method getCenter(): LatLng + // Returns the center of the ImageOverlay. + getCenter: function () { + return this._bounds.getCenter(); + } +}); + +// @factory L.imageOverlay(imageUrl: String, bounds: LatLngBounds, options?: ImageOverlay options) +// Instantiates an image overlay object given the URL of the image and the +// geographical bounds it is tied to. +var imageOverlay = function (url, bounds, options) { + return new ImageOverlay(url, bounds, options); +}; + +/* + * @class VideoOverlay + * @aka L.VideoOverlay + * @inherits ImageOverlay + * + * Used to load and display a video player over specific bounds of the map. Extends `ImageOverlay`. + * + * A video overlay uses the [`