From b4b5891c0e86a50e037ca0969ac571e9cce9e491 Mon Sep 17 00:00:00 2001 From: Phyks Date: Wed, 24 Jul 2013 12:52:41 +0200 Subject: [PATCH] Initial commit --- LICENSE | 79 ++++++ Polyline.encoded.js | 127 +++++++++ README.md | 64 ++++- ajax.php | 197 ++++++++++++++ data/checksum | 1 + data/data | 1 + favicon.ico | Bin 0 -> 1150 bytes images/carte.png | Bin 0 -> 28637 bytes images/layers.png | Bin 0 -> 973 bytes images/marker-icon-red.png | Bin 0 -> 1508 bytes images/marker-icon.png | Bin 0 -> 1747 bytes images/marker-icon@2x.png | Bin 0 -> 4033 bytes images/marker-shadow.png | Bin 0 -> 797 bytes images/marker_cycle.png | Bin 0 -> 1024 bytes images/marker_parking.png | Bin 0 -> 712 bytes images/marker_parking_bonus.png | Bin 0 -> 526 bytes images/parking.png | Bin 0 -> 1621 bytes images/shadow_icons.png | Bin 0 -> 979 bytes images/velo.png | Bin 0 -> 6090 bytes index.php | 104 ++++++++ js.js | 372 ++++++++++++++++++++++++++ leaflet.css | 458 ++++++++++++++++++++++++++++++++ leaflet.ie.css | 58 ++++ leaflet.js | 8 + main.css | 116 ++++++++ station.php | 48 ++++ 26 files changed, 1631 insertions(+), 2 deletions(-) create mode 100644 LICENSE create mode 100644 Polyline.encoded.js create mode 100644 ajax.php create mode 100644 data/checksum create mode 100644 data/data create mode 100644 favicon.ico create mode 100644 images/carte.png create mode 100644 images/layers.png create mode 100644 images/marker-icon-red.png create mode 100644 images/marker-icon.png create mode 100644 images/marker-icon@2x.png create mode 100644 images/marker-shadow.png create mode 100644 images/marker_cycle.png create mode 100644 images/marker_parking.png create mode 100644 images/marker_parking_bonus.png create mode 100644 images/parking.png create mode 100644 images/shadow_icons.png create mode 100644 images/velo.png create mode 100644 index.php create mode 100644 js.js create mode 100644 leaflet.css create mode 100644 leaflet.ie.css create mode 100644 leaflet.js create mode 100644 main.css create mode 100644 station.php diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..4ccf620 --- /dev/null +++ b/LICENSE @@ -0,0 +1,79 @@ +This program uses several libraries and external services. + +The main license for this program is (everything but below) : +========================================================================================= +This software (Velib) is licensed under the zlib/libpng License. + +Copyright (c) 2013 Phyks + +This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source distribution. + +========================================================================================== +========================================================================================== + +========================================================================================== +Leaflet license (files leaflet.css, leaflet.ie.css, leaflet.js, images/layers.png, images/marker-icon.png, images/marker-icon@2x.png, marker-shadow.png) : +========================================================================================== +Copyright (c) 2010-2013, Vladimir Agafonkin +Copyright (c) 2010-2011, CloudMade +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +Note : The file images/marker-icon-red.png is a derivative work from marker-icon.png. + +========================================================================================== +Leaflet.encoded is a plugin that extends the Leaflet API with functions to encode and decode Google Maps polyline encoding (Polyline.encoded.js) +========================================================================================== +More information can be found at https://github.com/jieter/Leaflet.encoded + + +========================================================================================== +images/velo.png +========================================================================================== +It is part of The Noun Project and designed by National Park Service in United States (1982). It is in public domain. + +========================================================================================== +images/carte.png +========================================================================================== +It is from bevelandemboss.net and this icon is free for commercial use. + +========================================================================================== +images/marker_parking.png, images/marker_marker_cycle.png +========================================================================================== +This is from Nicolas Mollet and is licensed under Creative Commons (Attribution-Share Alike 3.0 Unported). +More informations at http://mapicons.nicolasmollet.com + +========================================================================================== +images/parking.png +========================================================================================== +This image is in public domain. + diff --git a/Polyline.encoded.js b/Polyline.encoded.js new file mode 100644 index 0000000..c9c011d --- /dev/null +++ b/Polyline.encoded.js @@ -0,0 +1,127 @@ +/* + * L.PolylineUtil contains utilify functions for polylines, two methods + * are added to the L.Polyline object to support creation of polylines + * from an encoded string and converting existing polylines to an + * encoded string. + * + * - L.Polyline.fromEncoded(encoded [, options]) returns a L.Polyline + * - L.Polyline.encodePath() returns a string + * + * Actual code from: + * http://facstaff.unca.edu/mcmcclur/GoogleMaps/EncodePolyline/\ + */ + +/*jshint browser:true, debug: true, strict:false, globalstrict:false, indent:4, white:true, smarttabs:true*/ +/*global L:true, console:true*/ + + +// Inject functionality into Leaflet +(function (L) { + if (!(L.Polyline.prototype.fromEncoded)) { + L.Polyline.fromEncoded = function (encoded, options) { + return new L.Polyline(L.PolylineUtil.decode(encoded), options); + }; + } + if (!(L.Polygon.prototype.fromEncoded)) { + L.Polygon.fromEncoded = function (encoded, options) { + return new L.Polygon(L.PolylineUtil.decode(encoded), options); + }; + } + + var encodeMixin = { + encodePath: function () { + return L.PolylineUtil.encode(this.getLatLngs()); + } + }; + + if (!L.Polyline.prototype.encodePath) { + L.Polyline.include(encodeMixin); + } + if (!L.Polygon.prototype.encodePath) { + L.Polygon.include(encodeMixin); + } +})(L); + +// Utility functions. +L.PolylineUtil = {}; + +L.PolylineUtil.encode = function (latlngs) { + var i, dlat, dlng; + var plat = 0; + var plng = 0; + var encoded_points = ""; + + for (i = 0; i < latlngs.length; i++) { + var lat = latlngs[i].lat; + var lng = latlngs[i].lng; + var late5 = Math.floor(lat * 1e5); + var lnge5 = Math.floor(lng * 1e5); + dlat = late5 - plat; + dlng = lnge5 - plng; + plat = late5; + plng = lnge5; + encoded_points += + L.PolylineUtil.encodeSignedNumber(dlat) + + L.PolylineUtil.encodeSignedNumber(dlng); + } + return encoded_points; +}; + +// This function is very similar to Google's, but I added +// some stuff to deal with the double slash issue. +L.PolylineUtil.encodeNumber = function (num) { + var encodeString = ""; + var nextValue, finalValue; + while (num >= 0x20) { + nextValue = (0x20 | (num & 0x1f)) + 63; + encodeString += (String.fromCharCode(nextValue)); + num >>= 5; + } + finalValue = num + 63; + encodeString += (String.fromCharCode(finalValue)); + return encodeString; +}; + +// This one is Google's verbatim. +L.PolylineUtil.encodeSignedNumber = function (num) { + var sgn_num = num << 1; + if (num < 0) { + sgn_num = ~(sgn_num); + } + return (L.PolylineUtil.encodeNumber(sgn_num)); +}; + +L.PolylineUtil.decode = function (encoded) { + var len = encoded.length; + var index = 0; + var latlngs = []; + var lat = 0; + var lng = 0; + + while (index < len) { + var b; + var shift = 0; + var result = 0; + do { + b = encoded.charCodeAt(index++) - 63; + result |= (b & 0x1f) << shift; + shift += 5; + } while (b >= 0x20); + var dlat = ((result & 1) ? ~(result >> 1) : (result >> 1)); + lat += dlat; + + shift = 0; + result = 0; + do { + b = encoded.charCodeAt(index++) - 63; + result |= (b & 0x1f) << shift; + shift += 5; + } while (b >= 0x20); + var dlng = ((result & 1) ? ~(result >> 1) : (result >> 1)); + lng += dlng; + + latlngs.push(new L.LatLng(lat * 1e-5, lng * 1e-5)); + } + + return latlngs; +}; diff --git a/README.md b/README.md index 8fab8e6..19a80f7 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,62 @@ -Bikes-Paris -=========== +README for Velib app +==================================================================================== +(An english version is available below) + +Cette application a été developpée par Phyks (webmaster@phyks.me). Elle vous permet de localiser les vélibs et les emplacements de vélibs les plus proches de vous et de vous y guider. Elle est distribuée sous licence zlib/libpng. + +Pour plus d'informations sur les licences des différentes parties (leaflet, images), se référer au fichier LICENSE. + +La fonction d'obtention des noms à partir des coordonnées GPS est fournie par Mapquest, les cartes sont fournies par OpenStreetMap et les itinéraires sont fournis par OSRM. + +Pour toute suggestion ou remarque, envoyer un e-mail à webmaster@phyks.me. + +Installation sur votre serveur : +================================ +* Décompresser l'archive dans un dossier accessible par votre serveur web. +* S'assurer que le serveur web a les droits en écriture sur le répertoire "data". +* Éditer la configuration en haut du fichier js.js (fournisseur de tiles OSM et de fonctions de reverse geoposition, adresse e-mail). +* L'application mettra automatiquement à jour la liste des stations au premier démarrage. + +* Pour mettre à jour automatiquement la liste des stations, vous pouvez utiliser une tâche cron comme suit : +sudo crontab -e +puis insérer la ligne +* * * * * wget -q -O adresse_de_base_de_velib/index.php?update=1&code=code_synchro #Commande de mise a jour des stations de velib + +en remplaçant code_synchro par votre code de synchronisation et en définissant * conformément à la fréquence de mises à jour souhaitée. + +Notes : +======= +* Si vous avez perdu votre code de synchronisation, il suffit de supprimer le fichier data/data pour le réinitialiser (il faudra alors refaire une synchronisation des stations à la visite suivante). +* Bien que cette application ait été optimisée, notamment au niveau du nombre de requêtes vers des services distants, elle a été créée dans l'optique de répondre à mon besoin et peut supporter difficilement une charge importante. + +==================================================================================== +==================================================================================== +==================================================================================== +English version : + +This app has been developped by Phyks (webmaster@phyks.me). It allows you to locate the nearest velibs (parisian public bicycle sharing service) and the nearest velibs station. It is released under zlib/libpng license. + +For more information about the licenses of the diverse libraries and images (leaflet ...), please refer to the LICENSE file. + +The reverse geolocation system is provided by Mapquest, maps are provided by OpenStreetMap and routes are provided by OSRM. + +For any suggestion or remark, please send me an e-mail at webmaster@phyks.me. + +Installation on your own server : +================================ +* Decompress the archive file in a folder accessible to your web server. +* Ensure that your web server can write in the "data" directory. +* Edit the configuration in the js.js file (OSM tiles provider, reverse geolocation provider and email). +* The application will automatically update the stations list at first run. + +* To automatically update the stations list, you can use a cron task as following : +sudo crontab -e +then, add a line +* * * * * wget -q -O adresse_de_base_de_velib/index.php?update=1&code=code_synchro #Update velib stations + +Don't forget to replace code_synchro by your synchronisation code and define * according to the update frequency you want. + +Notes : +======= +* If you have lost your synchronisation code, just delete the file data/data to reset it. You'll then have to make a full update at the next visit. +* Although I tried to optimize this application, it was created to answer my own need and may not be suited for a large scale website with a great load. diff --git a/ajax.php b/ajax.php new file mode 100644 index 0000000..4784963 --- /dev/null +++ b/ajax.php @@ -0,0 +1,197 @@ +array( + 'method'=>"GET", + 'header'=>"Accept-language: fr\r\n" . + "Referer: ".$_SERVER['HTTP_REFERER']. + "User-Agent: Velib service at http://velib.phyks.me (contact : webmaster@phyks.me) \r\n" + ) + ); + $context = stream_context_create($opts); + + //Check wether the position was updated + //------------------------------------- + + //Convert latitude and longitude to degrees (useful for calculation) + $latitude = deg2rad((float) $_POST['latitude']); + $longitude = deg2rad((float) $_POST['longitude']); + + $a = pow(sin($_SESSION['latitude'] - $latitude)/2, 2) + cos($latitude)*cos($_SESSION['latitude'])*pow(sin($_SESSION['longitude'] - $longitude)/2, 2); + $c = 2*atan2(sqrt($a),sqrt(1-$a)); + $R = 6371000; + $distance = $R*$c; + + if(empty($_SESSION['latitude']) || empty($_SESSION['longitude']) || empty($_SESSION['reverse_geolocation']) || $distance >= 25 || empty($_SESSION['distances'])) + { + $_SESSION['latitude'] = $_POST['latitude']; + $_SESSION['longitude'] = $_POST['longitude']; + $updated_position = true; + } + + //If yes, update the address + if($updated_position) + { + $reverse_geolocation_json = file_get_contents($_POST['reverse_geolocation_provider']."?format=json&lat=".$_POST['latitude']."&lon=".$_POST['longitude']."&zoom=18&addressdetails=1&email=".$_POST['email'], false, $context); + $reverse_geolocation_json = json_decode($reverse_geolocation_json, true); + + $reverse_geolocation = ''; + foreach($reverse_geolocation_json['address'] as $key=>$element) + { + if($key == 'city') + break; + + if(!empty($reverse_geolocation)) + $reverse_geolocation .= ", "; + + $reverse_geolocation .= $element; + } + + $_SESSION['reverse_geolocation'] = $reverse_geolocation; + } + else //Else, keep what was stored in session + { + $reverse_geolocation = $_SESSION['reverse_geolocation']; + } + + if(is_file('data/data')) //And open the data file + { + $data = unserialize(gzinflate(base64_decode(file_get_contents('data/data')))); + $stations = $data[1]; + } + else + exit("[{'error': '

La liste des stations n'a pu être récupérée. Essayez de la mettre à jour manuellement.

'}]"); + + + if(!empty($_POST['station'])) //If we want information about a specific station + { + $stations_used[$_POST['station']] = $stations[$_POST['station']]; //We only use it - little trick to keep the same code + } + else + { + $stations_used = $stations; //Else, we use all the stations + } + + if($updated_position) //If position updated + { + unset($_SESSION['distances']); + + //Compute the distance + foreach($stations_used as $key=>$station) //We start by sorting the stations by distance to me + { + $station_lat = deg2rad($station['lat']); + $station_lng = deg2rad($station['lng']); + + $a = pow(sin($station_lat - $latitude)/2, 2) + cos($latitude)*cos($station_lat)*pow(sin($station_lng - $longitude)/2, 2); + $c = 2*atan2(sqrt($a),sqrt(1-$a)); + $R = 6371000; + $distances[$key] = $R*$c; + } + asort($distances); + + if(!empty($_POST['station'])) //But store the result only if not computed for a single station + $_SESSION['distances'] = array_slice($distances, 0, 10, true); //Store the 10 first values in session + } + else //Else, get the result stored + { + if(empty($_POST['station'])) + $distances = $_SESSION['distances']; //If list required, get the currently stored list + else //Else, get the only one we want + $distances[(int) $_POST['station']] = $_SESSION['distances'][(int) $_POST['station']]; + } + + //Print the JSON + echo '[{"reverse_geolocation": "'.htmlentities($reverse_geolocation).'"}, '; + + $i = 0; + foreach($distances as $key=>$distance) //Print the information about the 10 nearest stations + { + if($i >= 10) + break; + + //Get number of velibs / parkings available + if($stations[$key]['updated'] < time() - 60) //If data is older than 1 minute, update it + { + //Mise à jour du tableau + $station_xml = simplexml_load_file('http://www.velib.paris.fr/service/stationdetails/paris/'.$stations[$key]['id']); + + $stations[$key]['updated'] = time(); //Update the stations array + $stations[$key]['available'] = (int) $station_xml->available; + $stations[$key]['free'] = (int) $station_xml->free; + $stations[$key]['open'] = (int) $station_xml->open; + + $updated_stations = true; //We updated the array (so we must update the data file) + } + + $number = (!empty($_POST['free'])) ? $stations[$key]['free'] : $stations[$key]['available']; //Get the number of velibs / parkings ($stations is always up to date or acceptable) + + if($number != 0 && $stations[$key]['open'] == 1) //If this station is interesting and opened + { + echo '{"key": "'.(int) $key.'", "dist": "'.(int) $distance.'", "bonus": "'.(int) $stations[$key]['bonus'].'", "lat": "'.(float) $stations[$key]['lat'].'", "lng": "'.(float) $stations[$key]['lng'].'", "nombre": "'.(int) $number.'", "nom": "'.substr($stations[$key]['name'], strpos($stations[$key]['name'], "-")+1).'"'; + + if(!empty($_POST['station'])) //If we only want content about this station, get the directions and the address + { + if($updated_position || empty($_SESSION['directions']) || $_SESSION['directions']['key'] != $_POST['station']) //Check wether position was updated, session var doesn't exist or routes isn't stored for this particular station + { + unset($_SESSION['directions']); //Destroy the previous variable + + if(is_file('data/checksum')) //Checksum is required in OSRM Usage Policy + $checksum = '&checksum='.file_get_contents('data/checksum'); + else + $checksum = ''; + + $directions_json = file_get_contents($_POST['directions_provider'].'?loc='.$_POST['latitude'].','.$_POST['longitude'].'&loc='.$stations[$key]['lat'].','.$stations[$key]['lng'].'&z=18&output=json&instructions=false&alt=false&geomformat=cmp'.$checksum, false, $context); + + $directions_json = json_decode($directions_json, true); + + if(!empty($directions_json['hint_data']['checksum'])) + file_put_contents('data/checksum', $directions_json['hint_data']['checksum']); + + $directions_encoded = json_encode($directions_json['route_geometry']); + + if(!empty($directions_json['route_geometry'])) + echo ', "directions": '.$directions_encoded; + else + echo ', "directions": ""'; + + //And then, set new ones + $_SESSION['directions']['key'] = (int) $_POST['station']; + $_SESSION['directions']['directions'] = $directions_encoded; + } + else + { + echo ', "directions": '.$_SESSION['directions']['directions']; + } + + //Get the address + echo ', "address": "'.substr($stations[$key]['address'], 0, strpos($stations[$key]['address'], " - 75")+1).'"'; + } + + //Print the JSON data + echo '}'; + + if($i != 9 && $i != count($distances) - 1) //Attention : distance can be less than 9 elements long (if we specify a station for example) + echo ', '; + + $i++; + } + } + + echo ']'; //And close the JSON array + + //If needed, update the data file + if($updated_stations) + { + file_put_contents('data/data', base64_encode(gzdeflate(serialize(array($data[0], $stations))))); + } + } + else + exit("[{'error': '

La liste des stations n'a pu être récupérée. Essayez de la mettre à jour manuellement.

'}]"); diff --git a/data/checksum b/data/checksum new file mode 100644 index 0000000..4ef2c30 --- /dev/null +++ b/data/checksum @@ -0,0 +1 @@ +-203876984 \ No newline at end of file diff --git a/data/data b/data/data new file mode 100644 index 0000000..3562743 --- /dev/null +++ b/data/data @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..2315e96c47701170223c736b26b1bce021a4e5d7 GIT binary patch literal 1150 zcmbtSyG{a86dV$2Lt&^e(rEk&x1pd^6JtdKjUS+$X1|2W#$V8a?X>nAER2nYjsm>Q zx$KyeTkIoTa+o=DX3lQ703CjMJ;Za{1^Q%XER%+;PW&d}EIlCv>|0ruU2<<=eHgMI zr#nqcJXhw)^ZX?Bv%jW(q#fh~YB%Z)Ekpg(c6wdh^r9#Z=o?je>Si{t^XQo#l@t1z zxb_mir5W=4l=%N_YQKpm%|tJKw8h`&&bWHN&uf0CxN>zq`8~SqMmq25f;ClNg}k#v zx8uw4c%M~S&3NbcJ}12mGCwbOJoDZAZL;3W9e;WkuQ%n)K9%{GrkQp=;QiD7G{EBm bcsSqH>jZe40W0cD*6J8o=er8zv8ZnWD<*pM literal 0 HcmV?d00001 diff --git a/images/carte.png b/images/carte.png new file mode 100644 index 0000000000000000000000000000000000000000..b71463e612a0b7ca51145c1004014ff9f81123f6 GIT binary patch literal 28637 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 literal 0 HcmV?d00001 diff --git a/images/marker-icon-red.png b/images/marker-icon-red.png new file mode 100644 index 0000000000000000000000000000000000000000..e0d2afe946cd97c0eb82d3dc2ffdb15403efda59 GIT binary patch literal 1508 zcmYjQ3pA8z82-mK_hKhQH-{NBjJcWIDy@de3~P)_i8i%5q^%XkIIOZeG{=NSx{_F- zTw2j2ZRNC03B|aKN>`P|q-Hikvy08X`OoR}o$r7D=YPKUectE${{KJ3=lPo%+ZrPX zV#ek8g~HtiE~iDh5Vb+cb8s_C`1 z4$4D3@8ksH=p&?oAmDN$5hCc9EdZzjeKbNl@C*}jV1hT8kO{SDISRf+unM@6M1qLo zFH2`hB-A13+@#TWq}7ZAW@yK8-X!!g|-86I6!cP zwm{zk2tpU|09K(K+`^7-(P(ly9c|slV00`PKs$E1xhdS;6`r1oHEX)puI={r?peRS z$H%9K#p?C-?Pat3Hg4?WaQXrQl!1Z$JYGMa{~#>vacu09xVUGDiO&Us!HkSoV)1K< z4Kq2ZgOwr-1wjr%bnNsyYBmX`5rR#x^w zu_V8sq3PzI@{apmif-k@f#-um!y~FUZ^qtg-j9z@OnjJ}oSK@NUKk(08rsj}pM~)+ zjG39)x&J=F&?BuF25Xp@Kz~0(qQ8Oze@Z0RZ$miFMkv?!wfX^vyozXKG+L<>)SJ~* z7d67((CVXZW9g6Hp8h+*`bN@h^LtO5c7xQsS^q%|?iuo%;n0lvDmU4;P0YO`39}D( z>eICKD=~*cmkwT|iAzqOwteYM-TqWR%IrzFUCzjk`Yp?j-!W4)n~RrL?ptRxkjI!l z9K0|1U`=Mu-6J@Om9KJ4ULGa5Dle#@D_1|?YLdI#BUT+IN#>Z}s|Xg2keL`|_YN+f zBWq8P$%Ml78y4gDdz-mZJKc;!nr_a&m{V0^2Og1zFWVg13xh*c8G1_X$sL7$olhYNx zjb&`pJ9gB?eFx)P>83FQa@hwYsDHWpTz*aF*plG>lvjN*xL=HKU?mR^?2)dXr_(#? zZxP$%NIJx}tM`snI-RmF1jn XdS7lvZ%+UdzBq)-=J{P@?a2Bc7IA%j literal 0 HcmV?d00001 diff --git a/images/marker-icon.png b/images/marker-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e2e9f757f515ded172e6f72c3ce55bbe15579649 GIT binary patch literal 1747 zcmV;^1}yoBP)P001cn1^@s6z>|W`000J>NklgF+#9zZY7a#;@J(5X0e&McXK2n7+jhR}<0i-1U5t`>D@ zJSJ*^swjdwq0keUf9!BETXZhVyjqS4&z|?2HdJnOU-HYF_xSyu=XsCkdtVv=(53>u zME@3F*5J;OHwJNJdWK(ivQ??rr&t7M)1yRas=d_yYH>g+p#{( zm+NoyW%|8bNfUkAMrabri(FY#Dqr5%zhZA&e^iALHXiJOFYA7Qt##L_a?_z6SW{&J zVeyp#G&snW>SO{*%d9CGVM}xic~V`MU$)*JU1Nbw2YX?ywi}|VZ4g;$g)p^+DoLHR zZ^Zr$S_=f^oU`+!4K^?NsU;H{;bhhex#H7(!s52U&FJ}OHQf-VvVd?Btj2MhF|zQI z%l~jBr~6T7^_WIHC1>8j&bv`c18g|Z3*l-jgeoml1{oh++Y75JI)RgU>LEY<%)C)X zI2rZ2kb>s^4cZuYeq3!A}DS`X~>Nd;+A$4e;ZwyD<1@2!8$ZKJ3w%!6)+sCALy+bKwyk zqKCS6qEGWmJ)97b-QXY|`<0lS5THkEtGgjE>ojOvuftfM&Ugd-rQg9C+|FdGM)HXs z(IxsA$&r(xg_j^4=hC;>s;1UF*Wp1I-2~sEF zZYgb?&`4bM1qjM*hR`yr3qJ(;L>Kj2XpBUy+)t((6z;bIr@-ihFNVAl4<#?{TWIaQ zIi>;YjXS_iIfNb?!N1t-!Y6vZvW5ZXE{%l7imzV9NvV4nf#G`Pcex;#@}?EINwsk7 z>UC=SlJC*b5a>-mgHP%q2+qF;cbNx ztCV@{s&fPsSt#;i@#G-m$as&$gLaG}ebOrtS5*22&glbhMH_fz8(~qVVN!VIVCKzg z1$U9^93(E%Ur9v_R*h#!t)Ce+#)+m(q^zCq%g&L-!E zC&et9WrT(49pl0S`?=DK7=`+;`CB!wP3ta97b)XdJ8K=@`DXOk0Q0};7zNT!`k4t@ z+)=9S)4p(jEGm5!qq)PDTmXiw3qDM19|fiylc@LtiQ=}Kfb#w&ckv^7tBj;cfwtY$q?IdliYlg zqh@4;IyW)OFPQPw4z|JsAEb7`+@yA@Q8SXQT#;upV`QNJ59Bg5m(jci3`0T4X-&^GU6)x7$Vi0XMWB(2hrdK^!hq0 zt!bDg$Hh)-9L62h`&{0PBf%7vM>69o`k4~kx^Wc)?lG!}=WgV2x-rq?HN#jMr^B0; p5zMeb2q5MEX5{g&Aa%N&e*pr!t%ZZ}>w*9P002ovPDHLkV1gpUS8xCT literal 0 HcmV?d00001 diff --git a/images/marker-icon@2x.png b/images/marker-icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0015b6495fa458ad39d51cb4b913430016f48d33 GIT binary patch literal 4033 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 literal 0 HcmV?d00001 diff --git a/images/marker_parking.png b/images/marker_parking.png new file mode 100644 index 0000000000000000000000000000000000000000..1a4476975805827b9198135755cd62a01a5a7f6c GIT binary patch literal 712 zcmeAS@N?(olHy`uVBq!ia0vp^3P7yN!3-otGNns_6id3JuOkD)`V;1?T`z%r$r9Iy zlHmNblJdl&R0hYC{G?O`&)mfH)S%SFl*+=BsWw1GTLOGST!FL;EdkJcZf(P1NImW|4qtCrb&1dFaz=5ly*YFFy+d(APoFFjqyVO4aW zbJ35^MF(D#J{ER9z5pu*}eVe#W*4wrNZu)=vJlZYdMj zGM()$Jay5m%ydDu;X_7?Z(qV1t{nKJARipQZA{%VCPj zT=_NDrW*9Q%Ib9FA5f)Hs z8X&ls=TOd-ALa`}94j7Q&3YsH@9Q^S4UWU#YH#oO{+`k8#H_@OPkZ%in72QvyLj!x S-ZEe;F?hQAxvXXmI&p@GAW-P0r;B5V#p$(EBE^~&cw8er zk1XU`vevnK*5CX!Tb$TUAGp8ww`up5=;K$M6vJfL$j5n0VbRAO=XXVMZcx%b<+`A? zmtkgCIfKP=mdQdNzRNMZ*)%)z#C~gz#>6)94!1Cg+uPp0bFo#w5k9xZRe#1-fmMku z+829Y8$@TjFWULcO6QDh!66fiUor}HTnrs~pLR5?RQ>QmNJ_#$HK*@nX~w3%h5s*e z6>63BuDPISo%*(@>65VOYZR}8mJT*UNtiN-&xd_lhofjDd_0@$*Y9^ bKVzIWJ#+5PPd&UqPcnGA`njxgN@xNA(QmvD literal 0 HcmV?d00001 diff --git a/images/parking.png b/images/parking.png new file mode 100644 index 0000000000000000000000000000000000000000..d4ec555ffb2bc95b0a518b57c6231217930507d4 GIT binary patch literal 1621 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H3?#oinD~={fvGjXC&cyt|NlS{{3K8TTn&VM z5$*o(r-oJkzq7g`L*suXeUcY`FB69xx zd5HGKixV%1T+?Ih@709fq?;pYiVf-7w6&O0kXNdxz*IvOiWCiot+_4 zy1KeR1|uUQ6B83NGcyYd3o9!t8yg!tJ39vl2PY>d7Z(>$7cVa_KR-XvaGz^=j(&VYrL15PGIdkXDTd-i!;w4L0uU)@s^Omh!x9`}obKikOhmRgVe*DCVlV>ho zzHku`&(FqH9GJ&; zc)B=-RNQ)d^JjQZqR4@dtBqV{DS4MoQg!ND_~!R4-RiPU(`&hXuXVifR?7C!G*N8R zncOWF`CqR7z@6>I%PP$}8vUFc_w9F<^+-`8u6d zK`uv`=fLHMhZy$A=<$4TOWK7%a1hP-g@l#q{s%@Qr|7{HODi=y?zxlFjUF? z%v6Xt%G{vVU3anJPJ$f658Xe$OmY2*ObzFowl7hb$;~j$d8&xQ@%h{gd*=r?T#_(r zNIe+5Zti$SnakN3FQR!!t@7HCpm7oy=hRMCAeYc4?Yq1kBm`s6w^Lee_-6TM?Eb+ z>Lhfpf>Zr}K};F`fEe#_V~ZwUD8yA=`MZ z0(-%{*>X$@tOfUOnQRek;5hK~#Ay$iJl4&N7(~Ba^-Rg0rhcTq*C@YGx#2Wh&BTTX zRt*P6u7Cz6kp&EJ<_CMmzTowVk0cnsHPvi?SG-U0rOd_Cd(#$V&icmxjlJ#T+y9H$ RV!AX1ONa4_ZXC200009a7bBm000XU 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 + + + + + Vélibs à proximité + + + + + + + + + + + + +

Vélibs à proximité

+ + + Définition du code de synchronisation.
+ Vous pouvez désormais mettre à jour la liste des stations en visitant l'adresse suivante (update URL) :
+ http://" . $_SERVER["SERVER_NAME"].$_SERVER['REQUEST_URI']."?update=1&code=".$code_synchro." +

+

+ Il est possible d'automatiser la tâche via une tâche cron. Par exemple (see README) :
+ * * * * * wget -q -O http://" . $_SERVER["SERVER_NAME"].$_SERVER['REQUEST_URI']."?update=1&code=".$code_synchro." #Commande de mise a jour des stations de velib +

"; + } + + if(!empty($_GET['update']) || !empty($code_synchro)) //If we want to make an update (or first run) + { + if(empty($code_synchro) && is_file('data/data')) //If not first run, get the synchronisation code from data file + { + $data = unserialize(gzinflate(base64_decode(file_get_contents('data/data')))); + $code_synchro = $data[0]; + } + + if(!empty($_GET['code']) && $_GET['code'] == $code_synchro) //Once we have the code and it is correct + { + $stations_xml = simplexml_load_file('http://www.velib.paris.fr/service/carto'); + + $liste_stations = $stations_xml->markers->marker; //Get the stations list + + foreach($liste_stations as $station) + { + $stations[] = array('name' => htmlentities((string) $station['name']), 'id' => (int) $station['number'], 'address' => htmlentities((string) $station['fullAddress']), 'lat' => (float) $station['lat'], 'lng' => (float) $station['lng'], 'open' => (int) $station['open'], 'bonus' => (int) $station['bonus'], 'free' => 0, 'available' => 0, 'updated' => 0); + } + + file_put_contents('data/data', base64_encode(gzdeflate(serialize(array($code_synchro, $stations))))); //And put the content in the data file + + echo "

Mise à jour de la liste des stations effectuée avec succès (Update successful).

"; + } + else + { + echo "

Mauvais code de vérification (Error : bad synchronisation code). Veuillez réessayer la mise à jour. Se référer au README pour plus d'informations sur la mise à jour.

"; + } + echo "

Retourner à l'application (Back to index)

"; + } + else + { +?> +
+
+ +
+ ← Retour à la liste

"; + } + if(!empty($_GET)) + { + echo "
"; + } + ?> +
+

Votre navigateur doit prendre en charge la géolocalisation pour que ce site puisse fonctionner correctement.
Your browser must have geolocation capabilities for this site to display.

+
+
+

Map is handled thanks to the Leaflet library, using © OpenStreetMap contributors tiles. Reverse geolocation (Nominatim) are provided by the MapQuest open API. Routes are provided by the OSRM project (OSRM is a free and open source program under GNU Affero GPL).

+

N'hésitez pas à m'envoyer vos suggestions à webmaster@phyks.me.

+ + + diff --git a/js.js b/js.js new file mode 100644 index 0000000..4ea2e02 --- /dev/null +++ b/js.js @@ -0,0 +1,372 @@ +/* Config : À éditer selon vos besoins */ +var tiles_provider = 'http://{s}.tile.osm.org/{z}/{x}/{y}.png'; +var reverse_geolocation_provider = "http://open.mapquestapi.com/nominatim/v1/reverse.php"; +var directions_provider = "http://router.project-osrm.org/viaroute"; +var email = "webmaster@phyks.me"; //Mettre votre adresse e-mail ici si vous utilisez Nominatim (cf Usage Policy de Nominatim) + +/* Script : */ + +window.onload = function() { + function params() //Get all the parameters in the URL + { + var t = location.search.substring(1).split('&'); + var params = []; + + for (var i=0; i"+json[i].nom+""; + if(json[i].nombre == 1) + { + if(available == true) + display += ""+json[i].nombre+" vélo"; + else + display += ""+json[i].nombre+" emplacement"; + } + else + { + if(available == true) + display += ""+json[i].nombre+" vélos"; + else + display += ""+json[i].nombre+" emplacements"; + } + } + + display += ""; + + document.getElementById('stations').innerHTML = display; + } + else if(station == true) //Else, if we want to display information about a specific station + { + var display = "

Station "+json[1].nom+" (À "+json[1].dist+" mètres)

"; + + display += "

Adresse : "+json[1].address+"

"; + + if(json[1].nombre == 1) + { + if(available == true) + { + display += "

Il y a actuellement "+json[1].nombre+" vélo disponible.

"; + nombre = "1 vélo"; + } + else + { + display += "

Il y a actuellement "+json[1].nombre+" emplacement disponible.

"; + nombre = "1 emplacement"; + } + } + else + { + if(available == true) + { + display += "

Il y a actuellement "+json[1].nombre+" vélos disponibles.

"; + nombre = json[1].nombre+" vélos"; + } + else + { + display += "

Il y a actuellement "+json[1].nombre+" emplacements disponibles.

"; + nombre = json[1].nombre+" emplacements"; + } + } + + document.getElementById('stations').innerHTML = display; + + if(available) //Add the markers and the popups + L.marker([json[1].lat, json[1].lng], {icon: cycleMarker}).addTo(map).bindPopup(json[1].nom+"
"+nombre+"
(À "+json[1].dist+" mètres)").openPopup(); + else + { + if(json[i].bonus == 1) + L.marker([json[1].lat, json[1].lng], {icon: parkingMarkerBonus}).addTo(map).bindPopup(""+json[i].nom+"
"+nombre+"
(À "+json[i].dist+" mètres)"); + else + L.marker([json[1].lat, json[1].lng], {icon: parkingMarker}).addTo(map).bindPopup(""+json[i].nom+"
"+nombre+"
(À "+json[i].dist+" mètres)"); + } + + if(free) + var routeType = "bicycle"; + else + var routeType = "pedestrian"; + + var route_line = L.Polyline.fromEncoded(json[1].directions, {color: 'blue'}).addTo(map); + + map.fitBounds(route_line.getBounds()); //Make the map size optimized for the content + } + else //Else, we want to display a map + { + var latitude_max = 0; + var latitude_min = 90; + var longitude_max = -180; + var longitude_min = 180; + + for(var i = 1; i < json.length; i++) + { + var nombre; + + if(json[i].nombre == 1) + { + if(available == true) + nombre = json[i].nombre+" vélo"; + else + nombre = json[i].nombre+" emplacement"; + } + else + { + if(available == true) + nombre = json[i].nombre+" vélos"; + else + nombre = json[i].nombre+" emplacements"; + } + + if(json[i].lat < latitude_min) + latitude_min = json[i].lat; + if(json[i].lat > latitude_max) + latitude_max = json[i].lat; + + if(json[i].lng < longitude_min) + longitude_min = json[i].lng; + if(json[i].lng > longitude_max) + longitude_max = json[i].lng; + + if(available) //Set the markers and popups + L.marker([json[i].lat, json[i].lng], {icon: cycleMarker}).addTo(map).bindPopup(""+json[i].nom+"
"+nombre+"
(À "+json[i].dist+" mètres)"); + else + { + if(json[i].bonus == 1) + L.marker([json[i].lat, json[i].lng], {icon: parkingMarkerBonus}).addTo(map).bindPopup(""+json[i].nom+"
"+nombre+"
(À "+json[i].dist+" mètres)"); + else + L.marker([json[i].lat, json[i].lng], {icon: parkingMarker}).addTo(map).bindPopup(""+json[i].nom+"
"+nombre+"
(À "+json[i].dist+" mètres)"); + } + } + + map.fitBounds([[parseFloat(latitude_min), parseFloat(longitude_min)], [parseFloat(latitude_max) + 0.00015, parseFloat(longitude_max) + 0.00015]]); //0.00015 = margin because of markers size + //Make the map fit the data + } + } + } + else + { + document.getElementById("stations").innerHTML = "

La liste des stations n'a pu être récupérée.

"; + } + + document.getElementById("adresse").innerHTML = json[0].reverse_geolocation+"→ ↻ Actualiser ?"; //Display the interesting part of the address + } + }; + + xhr.open("POST", "ajax.php", true); //xhr handle the data about stations + xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); + xhr.send("latitude=" + latitude + "&longitude=" + longitude + "&" + params_url + "&email=" + email + "&directions_provider="+ encodeURI(directions_provider) +"&reverse_geolocation_provider="+ encodeURI(reverse_geolocation_provider)); + } + + if(map_get == true || station) //If we need a map + { + document.getElementById("position").innerHTML = "

Position :

Latitude : "+latitude+", Longitude : "+longitude+" → ↻ Actualiser ?

"; + // create a map in the "map" div, set the view to a given place and zoom + var map = L.map('map').setView([latitude, longitude], 16); + + // add an OpenStreetMap tile layer + L.tileLayer(tiles_provider, {attribution: '© OpenStreetMap contributors'}).addTo(map); + + var redMarker = L.icon({ + iconUrl: 'images/marker-icon-red.png', + shadowUrl: 'images/marker-shadow.png', + + iconSize: [25, 41], // size of the icon + shadowSize: [41, 41], // size of the shadow + iconAnchor: [12, 41], // point of the icon which will correspond to marker's location + shadowAnchor: [12, 41], // the same for the shadow + popupAnchor: [1, -34] // point from which the popup should open relative to the iconAnchor + }); + + var cycleMarker = L.icon({ + iconUrl: 'images/marker_cycle.png', + shadowUrl: 'images/shadow_icons.png', + + iconSize: [32, 37], // size of the icon + shadowSize: [38, 25], // size of the shadow + iconAnchor: [16, 35], // point of the icon which will correspond to marker's location + shadowAnchor: [11, 18], // the same for the shadow + popupAnchor: [0, -31] // point from which the popup should open relative to the iconAnchor + }); + + var parkingMarker = L.icon({ + iconUrl: 'images/marker_parking.png', + shadowUrl: 'images/shadow_icons.png', + + iconSize: [32, 37], // size of the icon + shadowSize: [37, 21], // size of the shadow + iconAnchor: [16, 35], // point of the icon which will correspond to marker's location + shadowAnchor: [11, 18], // the same for the shadow + popupAnchor: [0, -31] // point from which the popup should open relative to the iconAnchor + }); + + var parkingMarkerBonus = L.icon({ + iconUrl: 'images/marker_parking_bonus.png', + shadowUrl: 'images/shadow_icons.png', + + iconSize: [32, 37], // size of the icon + shadowSize: [37, 21], // size of the shadow + iconAnchor: [16, 35], // point of the icon which will correspond to marker's location + shadowAnchor: [11, 18], // the same for the shadow + popupAnchor: [0, -31] // point from which the popup should open relative to the iconAnchor + }); + + // add a marker in the given location, attach some popup content to it and open the popup + var position_marker = L.marker([latitude, longitude], {icon: redMarker}).addTo(map); + position_marker.bindPopup('Ma position.'); + } + else + { + document.getElementById("position").innerHTML = "

Position :

Latitude : "+latitude+", Longitude : "+longitude+" → ↻ Actualiser ?

"; + document.getElementById("see_map").innerHTML = "

Voir la carte

"; + } + } + + function errorFunction(error) //Handle errors + { + switch(error.code) + { + case error.TIMEOUT: + //Restart with a greater timeout + if(refresh) + navigator.geolocation.getCurrentPosition(successFunction, errorFunction, {enableHighAccuracy:true, maximumAge:0, timeout:20000}); + else + navigator.geolocation.getCurrentPosition(successFunction, errorFunction, {enableHighAccuracy:true, maximumAge:60000, timeout:20000}); + break; + + + case error.PERMISSION_DENIED: + document.getElementById("position").innerHTML = "

Erreur : L'application n'a pas l'autorisation d'utiliser les ressources de geolocalisation.

"; + break; + + case error.POSITION_UNAVAILABLE: + document.getElementById("position").innerHTML = "

Erreur : La position n'a pu être déterminée.

"; + break; + + default: + document.getElementById("position").innerHTML = "

Erreur "+error.code+" : "+error.message+"

"; + break; + } + } + + if(refresh) //If refresh, we want to force a new position (non cached) + navigator.geolocation.getCurrentPosition(successFunction, errorFunction, {enableHighAccuracy:true, maximumAge:0, timeout:2000}); + else + navigator.geolocation.getCurrentPosition(successFunction, errorFunction, {enableHighAccuracy:true, maximumAge:60000, timeout:2000}); //Else, we are ok with 60 seconds old position + } + else + { + document.getElementById("position").innerHTML = "

Votre navigateur doit prendre en charge la géolocalisation pour que ce site puisse fonctionner correctement.

"; + } + } + else //If we didn't choose what to do, display the choices + { + document.getElementById("position").innerHTML = "

Retirer un vélo ou Rendre un vélo"; + } +} diff --git a/leaflet.css b/leaflet.css new file mode 100644 index 0000000..d88051c --- /dev/null +++ b/leaflet.css @@ -0,0 +1,458 @@ +/* required styles */ + +.leaflet-map-pane, +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-tile-pane, +.leaflet-overlay-pane, +.leaflet-shadow-pane, +.leaflet-marker-pane, +.leaflet-popup-pane, +.leaflet-overlay-pane svg, +.leaflet-zoom-box, +.leaflet-image-layer, +.leaflet-layer { + position: absolute; + left: 0; + top: 0; + } +.leaflet-container { + overflow: hidden; + -ms-touch-action: none; + } +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + } +.leaflet-marker-icon, +.leaflet-marker-shadow { + display: block; + } +/* map is broken in FF if you have max-width: 100% on tiles */ +.leaflet-container img { + max-width: none !important; + } +/* stupid Android 2 doesn't understand "max-width: none" properly */ +.leaflet-container img.leaflet-image-layer { + max-width: 15000px !important; + } +.leaflet-tile { + filter: inherit; + visibility: hidden; + } +.leaflet-tile-loaded { + visibility: inherit; + } +.leaflet-zoom-box { + width: 0; + height: 0; + } + +.leaflet-tile-pane { z-index: 2; } +.leaflet-objects-pane { z-index: 3; } +.leaflet-overlay-pane { z-index: 4; } +.leaflet-shadow-pane { z-index: 5; } +.leaflet-marker-pane { z-index: 6; } +.leaflet-popup-pane { z-index: 7; } + + +/* control positioning */ + +.leaflet-control { + position: relative; + z-index: 7; + pointer-events: auto; + } +.leaflet-top, +.leaflet-bottom { + position: absolute; + z-index: 1000; + pointer-events: none; + } +.leaflet-top { + top: 0; + } +.leaflet-right { + right: 0; + } +.leaflet-bottom { + bottom: 0; + } +.leaflet-left { + left: 0; + } +.leaflet-control { + float: left; + clear: both; + } +.leaflet-right .leaflet-control { + float: right; + } +.leaflet-top .leaflet-control { + margin-top: 10px; + } +.leaflet-bottom .leaflet-control { + margin-bottom: 10px; + } +.leaflet-left .leaflet-control { + margin-left: 10px; + } +.leaflet-right .leaflet-control { + margin-right: 10px; + } + + +/* zoom and fade animations */ + +.leaflet-fade-anim .leaflet-tile, +.leaflet-fade-anim .leaflet-popup { + opacity: 0; + -webkit-transition: opacity 0.2s linear; + -moz-transition: opacity 0.2s linear; + -o-transition: opacity 0.2s linear; + transition: opacity 0.2s linear; + } +.leaflet-fade-anim .leaflet-tile-loaded, +.leaflet-fade-anim .leaflet-map-pane .leaflet-popup { + opacity: 1; + } + +.leaflet-zoom-anim .leaflet-zoom-animated { + -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1); + -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1); + -o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1); + transition: transform 0.25s cubic-bezier(0,0,0.25,1); + } +.leaflet-zoom-anim .leaflet-tile, +.leaflet-pan-anim .leaflet-tile, +.leaflet-touching .leaflet-zoom-animated { + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; + } + +.leaflet-zoom-anim .leaflet-zoom-hide { + visibility: hidden; + } + + +/* cursors */ + +.leaflet-clickable { + cursor: pointer; + } +.leaflet-container { + cursor: -webkit-grab; + cursor: -moz-grab; + } +.leaflet-popup-pane, +.leaflet-control { + cursor: auto; + } +.leaflet-dragging, +.leaflet-dragging .leaflet-clickable, +.leaflet-dragging .leaflet-container { + cursor: move; + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + } + + +/* visual tweaks */ + +.leaflet-container { + background: #ddd; + outline: 0; + } +.leaflet-container a { + color: #0078A8; + } +.leaflet-container a.leaflet-active { + outline: 2px solid orange; + } +.leaflet-zoom-box { + border: 2px dotted #05f; + background: white; + opacity: 0.5; + } + + +/* general typography */ +.leaflet-container { + font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif; + } + + +/* general toolbar styles */ + +.leaflet-bar { + box-shadow: 0 0 8px rgba(0,0,0,0.4); + border: 1px solid #888; + -webkit-border-radius: 5px; + border-radius: 5px; + } +.leaflet-bar-part { + background-color: rgba(255, 255, 255, 0.8); + border-bottom: 1px solid #aaa; + } +.leaflet-bar-part-top { + -webkit-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; + } +.leaflet-bar-part-bottom { + -webkit-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; + border-bottom: none; + } + +.leaflet-touch .leaflet-bar { + -webkit-border-radius: 10px; + border-radius: 10px; + } +.leaflet-touch .leaflet-bar-part { + border-bottom: 4px solid rgba(0,0,0,0.3); + } +.leaflet-touch .leaflet-bar-part-top { + -webkit-border-radius: 7px 7px 0 0; + border-radius: 7px 7px 0 0; + } +.leaflet-touch .leaflet-bar-part-bottom { + -webkit-border-radius: 0 0 7px 7px; + border-radius: 0 0 7px 7px; + border-bottom: none; + } + + +/* zoom control */ + +.leaflet-container .leaflet-control-zoom { + margin-left: 13px; + margin-top: 12px; + } +.leaflet-control-zoom a { + width: 22px; + height: 22px; + text-align: center; + text-decoration: none; + color: black; + } +.leaflet-control-zoom a, +.leaflet-control-layers-toggle { + background-position: 50% 50%; + background-repeat: no-repeat; + display: block; + } +.leaflet-control-zoom a:hover { + background-color: #fff; + color: #777; + } +.leaflet-control-zoom-in { + font: bold 18px/24px Arial, Helvetica, sans-serif; + } +.leaflet-control-zoom-out { + font: bold 23px/20px Tahoma, Verdana, sans-serif; + } +.leaflet-control-zoom a.leaflet-control-zoom-disabled { + cursor: default; + background-color: rgba(255, 255, 255, 0.8); + color: #bbb; + } + +.leaflet-touch .leaflet-control-zoom a { + width: 30px; + height: 30px; + } +.leaflet-touch .leaflet-control-zoom-in { + font-size: 24px; + line-height: 29px; + } +.leaflet-touch .leaflet-control-zoom-out { + font-size: 28px; + line-height: 24px; + } + +/* layers control */ + +.leaflet-control-layers { + box-shadow: 0 1px 7px rgba(0,0,0,0.4); + background: #f8f8f9; + -webkit-border-radius: 8px; + border-radius: 8px; + } +.leaflet-control-layers-toggle { + background-image: url(images/layers.png); + width: 36px; + height: 36px; + } +.leaflet-touch .leaflet-control-layers-toggle { + width: 44px; + height: 44px; + } +.leaflet-control-layers .leaflet-control-layers-list, +.leaflet-control-layers-expanded .leaflet-control-layers-toggle { + display: none; + } +.leaflet-control-layers-expanded .leaflet-control-layers-list { + display: block; + position: relative; + } +.leaflet-control-layers-expanded { + padding: 6px 10px 6px 6px; + color: #333; + background: #fff; + } +.leaflet-control-layers-selector { + margin-top: 2px; + position: relative; + top: 1px; + } +.leaflet-control-layers label { + display: block; + } +.leaflet-control-layers-separator { + height: 0; + border-top: 1px solid #ddd; + margin: 5px -10px 5px -6px; + } + + +/* attribution and scale controls */ + +.leaflet-container .leaflet-control-attribution { + background-color: rgba(255, 255, 255, 0.7); + box-shadow: 0 0 5px #bbb; + margin: 0; + } +.leaflet-control-attribution, +.leaflet-control-scale-line { + padding: 0 5px; + color: #333; + } +.leaflet-container .leaflet-control-attribution, +.leaflet-container .leaflet-control-scale { + font-size: 11px; + } +.leaflet-left .leaflet-control-scale { + margin-left: 5px; + } +.leaflet-bottom .leaflet-control-scale { + margin-bottom: 5px; + } +.leaflet-control-scale-line { + border: 2px solid #777; + border-top: none; + color: black; + line-height: 1.1; + padding: 2px 5px 1px; + font-size: 11px; + text-shadow: 1px 1px 1px #fff; + background-color: rgba(255, 255, 255, 0.5); + box-shadow: 0 -1px 5px rgba(0, 0, 0, 0.2); + white-space: nowrap; + overflow: hidden; + } +.leaflet-control-scale-line:not(:first-child) { + border-top: 2px solid #777; + border-bottom: none; + margin-top: -2px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); + } +.leaflet-control-scale-line:not(:first-child):not(:last-child) { + border-bottom: 2px solid #777; + } + +.leaflet-touch .leaflet-control-attribution, +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-control-zoom { + box-shadow: none; + } +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-control-zoom { + border: 4px solid rgba(0,0,0,0.3); + } + + +/* popup */ + +.leaflet-popup { + position: absolute; + text-align: center; + } +.leaflet-popup-content-wrapper { + padding: 1px; + text-align: left; + -webkit-border-radius: 20px; + border-radius: 20px; + } +.leaflet-popup-content { + margin: 14px 20px; + line-height: 1.4; + } +.leaflet-popup-content p { + margin: 18px 0; + } +.leaflet-popup-tip-container { + margin: 0 auto; + width: 40px; + height: 20px; + position: relative; + overflow: hidden; + } +.leaflet-popup-tip { + width: 15px; + height: 15px; + padding: 1px; + + margin: -8px auto 0; + + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + } +.leaflet-popup-content-wrapper, .leaflet-popup-tip { + background: white; + + box-shadow: 0 3px 14px rgba(0,0,0,0.4); + } +.leaflet-container a.leaflet-popup-close-button { + position: absolute; + top: 0; + right: 0; + padding: 4px 5px 0 0; + text-align: center; + width: 18px; + height: 14px; + font: 16px/14px Tahoma, Verdana, sans-serif; + color: #c3c3c3; + text-decoration: none; + font-weight: bold; + background: transparent; + } +.leaflet-container a.leaflet-popup-close-button:hover { + color: #999; + } +.leaflet-popup-scrolled { + overflow: auto; + border-bottom: 1px solid #ddd; + border-top: 1px solid #ddd; + } + + +/* div icon */ + +.leaflet-div-icon { + background: #fff; + border: 1px solid #666; + } +.leaflet-editing-icon { + -webkit-border-radius: 2px; + border-radius: 2px; + } + diff --git a/leaflet.ie.css b/leaflet.ie.css new file mode 100644 index 0000000..b0cd570 --- /dev/null +++ b/leaflet.ie.css @@ -0,0 +1,58 @@ +.leaflet-vml-shape { + width: 1px; + height: 1px; + } +.lvml { + behavior: url(#default#VML); + display: inline-block; + position: absolute; + } + +.leaflet-control { + display: inline; + } + +.leaflet-popup-tip { + width: 21px; + _width: 27px; + margin: 0 auto; + _margin-top: -3px; + + filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678); + -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)"; + } +.leaflet-popup-tip-container { + margin-top: -1px; + } +.leaflet-popup-content-wrapper, .leaflet-popup-tip { + border: 1px solid #999; + } +.leaflet-popup-content-wrapper { + zoom: 1; + } + +.leaflet-control-zoom, +.leaflet-control-layers { + border: 3px solid #999; + } +.leaflet-control-zoom a { + background-color: #eee; + } +.leaflet-control-zoom a:hover { + background-color: #fff; + } +.leaflet-control-layers-toggle { + } +.leaflet-control-attribution, +.leaflet-control-layers, +.leaflet-control-scale-line { + background: white; + } +.leaflet-zoom-box { + filter: alpha(opacity=50); + } +.leaflet-control-attribution { + border-top: 1px solid #bbb; + border-left: 1px solid #bbb; + } + diff --git a/leaflet.js b/leaflet.js new file mode 100644 index 0000000..dc774a5 --- /dev/null +++ b/leaflet.js @@ -0,0 +1,8 @@ +/* + Leaflet, a JavaScript library for mobile-friendly interactive maps. http://leafletjs.com + (c) 2010-2013, Vladimir Agafonkin, CloudMade +*/ +(function(t,e,i){var n,o;typeof exports!=i+""?n=exports:(o=t.L,n={},n.noConflict=function(){return t.L=o,this},t.L=n),n.version="0.6-dev",n.Util={extend:function(t){var e,i,n,o,s=Array.prototype.slice.call(arguments,1);for(i=0,n=s.length;n>i;i++){o=s[i]||{};for(e in o)o.hasOwnProperty(e)&&(t[e]=o[e])}return t},bind:function(t,e){var i=arguments.length>2?Array.prototype.slice.call(arguments,2):null;return function(){return t.apply(e,i||arguments)}},stamp:function(){var t=0,e="_leaflet_id";return function(i){return i[e]=i[e]||++t,i[e]}}(),limitExecByInterval:function(t,e,n){var o,s;return function a(){var r=arguments;return o?(s=!0,i):(o=!0,setTimeout(function(){o=!1,s&&(a.apply(n,r),s=!1)},e),t.apply(n,r),i)}},falseFn:function(){return!1},formatNum:function(t,e){var i=Math.pow(10,e||5);return Math.round(t*i)/i},splitWords:function(t){return t.replace(/^\s+|\s+$/g,"").split(/\s+/)},setOptions:function(t,e){return t.options=n.extend({},t.options,e),t.options},getParamString:function(t,e){var i=[];for(var n in t)t.hasOwnProperty(n)&&i.push(n+"="+t[n]);return(e&&-1!==e.indexOf("?")?"&":"?")+i.join("&")},template:function(t,e){return t.replace(/\{ *([\w_]+) *\}/g,function(t,i){var n=e[i];if(!e.hasOwnProperty(i))throw Error("No value provided for variable "+t);return n})},isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},emptyImageUrl:"data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="},function(){function e(e){var i,n,o=["webkit","moz","o","ms"];for(i=0;o.length>i&&!n;i++)n=t[o[i]+e];return n}function o(e){var i=+new Date,n=Math.max(0,16-(i-s));return s=i+n,t.setTimeout(e,n)}var s=0,a=t.requestAnimationFrame||e("RequestAnimationFrame")||o,r=t.cancelAnimationFrame||e("CancelAnimationFrame")||e("CancelRequestAnimationFrame")||function(e){t.clearTimeout(e)};n.Util.requestAnimFrame=function(e,s,r,h){return e=n.bind(e,s),r&&a===o?(e(),i):a.call(t,e,h)},n.Util.cancelAnimFrame=function(e){e&&r.call(t,e)}}(),n.extend=n.Util.extend,n.bind=n.Util.bind,n.stamp=n.Util.stamp,n.setOptions=n.Util.setOptions,n.Class=function(){},n.Class.extend=function(t){var e=function(){this.initialize&&this.initialize.apply(this,arguments),this._initHooks&&this.callInitHooks()},i=function(){};i.prototype=this.prototype;var o=new i;o.constructor=e,e.prototype=o;for(var s in this)this.hasOwnProperty(s)&&"prototype"!==s&&(e[s]=this[s]);t.statics&&(n.extend(e,t.statics),delete t.statics),t.includes&&(n.Util.extend.apply(null,[o].concat(t.includes)),delete t.includes),t.options&&o.options&&(t.options=n.extend({},o.options,t.options)),n.extend(o,t),o._initHooks=[];var a=this;return o.callInitHooks=function(){if(!this._initHooksCalled){a.prototype.callInitHooks&&a.prototype.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,e=o._initHooks.length;e>t;t++)o._initHooks[t].call(this)}},e},n.Class.include=function(t){n.extend(this.prototype,t)},n.Class.mergeOptions=function(t){n.extend(this.prototype.options,t)},n.Class.addInitHook=function(t){var e=Array.prototype.slice.call(arguments,1),i="function"==typeof t?t:function(){this[t].apply(this,e)};this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(i)};var s="_leaflet_events";n.Mixin={},n.Mixin.Events={addEventListener:function(t,e,i){var o,a,r,h=this[s]=this[s]||{};if("object"==typeof t){for(o in t)t.hasOwnProperty(o)&&this.addEventListener(o,t[o],e);return this}for(t=n.Util.splitWords(t),a=0,r=t.length;r>a;a++)h[t[a]]=h[t[a]]||[],h[t[a]].push({action:e,context:i||this});return this},hasEventListeners:function(t){return s in this&&t in this[s]&&this[s][t].length>0},removeEventListener:function(t,e,i){var o,a,r,h,l,u=this[s];if("object"==typeof t){for(o in t)t.hasOwnProperty(o)&&this.removeEventListener(o,t[o],e);return this}for(t=n.Util.splitWords(t),a=0,r=t.length;r>a;a++)if(this.hasEventListeners(t[a]))for(h=u[t[a]],l=h.length-1;l>=0;l--)e&&h[l].action!==e||i&&h[l].context!==i||h.splice(l,1);return this},fireEvent:function(t,e){if(!this.hasEventListeners(t))return this;for(var i=n.extend({type:t,target:this},e),o=this[s][t].slice(),a=0,r=o.length;r>a;a++)o[a].action.call(o[a].context||this,i);return this}},n.Mixin.Events.on=n.Mixin.Events.addEventListener,n.Mixin.Events.off=n.Mixin.Events.removeEventListener,n.Mixin.Events.fire=n.Mixin.Events.fireEvent,function(){var o=!!t.ActiveXObject,s=o&&!t.XMLHttpRequest,a=o&&!e.querySelector,r=navigator.userAgent.toLowerCase(),h=-1!==r.indexOf("webkit"),l=-1!==r.indexOf("chrome"),u=-1!==r.indexOf("android"),c=-1!==r.search("android [23]"),_=typeof orientation!=i+"",d=t.navigator&&t.navigator.msPointerEnabled&&t.navigator.msMaxTouchPoints,p="devicePixelRatio"in t&&t.devicePixelRatio>1||"matchMedia"in t&&t.matchMedia("(min-resolution:144dpi)")&&t.matchMedia("(min-resolution:144dpi)").matches,m=e.documentElement,f=o&&"transition"in m.style,g="WebKitCSSMatrix"in t&&"m11"in new t.WebKitCSSMatrix,v="MozPerspective"in m.style,y="OTransition"in m.style,L=!t.L_DISABLE_3D&&(f||g||v||y),P=!t.L_NO_TOUCH&&function(){var t="ontouchstart";if(d||t in m)return!0;var i=e.createElement("div"),n=!1;return i.setAttribute?(i.setAttribute(t,"return;"),"function"==typeof i[t]&&(n=!0),i.removeAttribute(t),i=null,n):!1}();n.Browser={ie:o,ie6:s,ie7:a,webkit:h,android:u,android23:c,chrome:l,ie3d:f,webkit3d:g,gecko3d:v,opera3d:y,any3d:L,mobile:_,mobileWebkit:_&&h,mobileWebkit3d:_&&g,mobileOpera:_&&t.opera,touch:P,msTouch:d,retina:p}}(),n.Point=function(t,e,i){this.x=i?Math.round(t):t,this.y=i?Math.round(e):e},n.Point.prototype={clone:function(){return new n.Point(this.x,this.y)},add:function(t){return this.clone()._add(n.point(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(n.point(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},distanceTo:function(t){t=n.point(t);var e=t.x-this.x,i=t.y-this.y;return Math.sqrt(e*e+i*i)},equals:function(t){return t.x===this.x&&t.y===this.y},toString:function(){return"Point("+n.Util.formatNum(this.x)+", "+n.Util.formatNum(this.y)+")"}},n.point=function(t,e,i){return t instanceof n.Point?t:n.Util.isArray(t)?new n.Point(t[0],t[1]):isNaN(t)?t:new n.Point(t,e,i)},n.Bounds=function(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;o>n;n++)this.extend(i[n])},n.Bounds.prototype={extend:function(t){return t=n.point(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new n.Point((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new n.Point(this.min.x,this.max.y)},getTopRight:function(){return new n.Point(this.max.x,this.min.y)},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var e,i;return t="number"==typeof t[0]||t instanceof n.Point?n.point(t):n.bounds(t),t instanceof n.Bounds?(e=t.min,i=t.max):e=i=t,e.x>=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=n.bounds(t);var e=this.min,i=this.max,o=t.min,s=t.max,a=s.x>=e.x&&o.x<=i.x,r=s.y>=e.y&&o.y<=i.y;return a&&r},isValid:function(){return!(!this.min||!this.max)}},n.bounds=function(t,e){return!t||t instanceof n.Bounds?t:new n.Bounds(t,e)},n.Transformation=function(t,e,i,n){this._a=t,this._b=e,this._c=i,this._d=n},n.Transformation.prototype={transform:function(t,e){return this._transform(t.clone(),e)},_transform:function(t,e){return e=e||1,t.x=e*(this._a*t.x+this._b),t.y=e*(this._c*t.y+this._d),t},untransform:function(t,e){return e=e||1,new n.Point((t.x/e-this._b)/this._a,(t.y/e-this._d)/this._c)}},n.DomUtil={get:function(t){return"string"==typeof t?e.getElementById(t):t},getStyle:function(t,i){var n=t.style[i];if(!n&&t.currentStyle&&(n=t.currentStyle[i]),(!n||"auto"===n)&&e.defaultView){var o=e.defaultView.getComputedStyle(t,null);n=o?o[i]:null}return"auto"===n?null:n},getViewportOffset:function(t){var i,o=0,s=0,a=t,r=e.body,h=n.Browser.ie7;do{if(o+=a.offsetTop||0,s+=a.offsetLeft||0,o+=parseInt(n.DomUtil.getStyle(a,"borderTopWidth"),10)||0,s+=parseInt(n.DomUtil.getStyle(a,"borderLeftWidth"),10)||0,i=n.DomUtil.getStyle(a,"position"),a.offsetParent===r&&"absolute"===i)break;if("fixed"===i){o+=r.scrollTop||0,s+=r.scrollLeft||0;break}a=a.offsetParent}while(a);a=t;do{if(a===r)break;o-=a.scrollTop||0,s-=a.scrollLeft||0,n.DomUtil.documentIsLtr()||!n.Browser.webkit&&!h||(s+=a.scrollWidth-a.clientWidth,h&&"hidden"!==n.DomUtil.getStyle(a,"overflow-y")&&"hidden"!==n.DomUtil.getStyle(a,"overflow")&&(s+=17)),a=a.parentNode}while(a);return new n.Point(s,o)},documentIsLtr:function(){return n.DomUtil._docIsLtrCached||(n.DomUtil._docIsLtrCached=!0,n.DomUtil._docIsLtr="ltr"===n.DomUtil.getStyle(e.body,"direction")),n.DomUtil._docIsLtr},create:function(t,i,n){var o=e.createElement(t);return o.className=i,n&&n.appendChild(o),o},disableTextSelection:function(){e.selection&&e.selection.empty&&e.selection.empty(),this._onselectstart||(this._onselectstart=e.onselectstart||null,e.onselectstart=n.Util.falseFn)},enableTextSelection:function(){e.onselectstart===n.Util.falseFn&&(e.onselectstart=this._onselectstart,this._onselectstart=null)},hasClass:function(t,e){return t.className.length>0&&RegExp("(^|\\s)"+e+"(\\s|$)").test(t.className)},addClass:function(t,e){n.DomUtil.hasClass(t,e)||(t.className+=(t.className?" ":"")+e)},removeClass:function(t,e){function i(t,i){return i===e?"":t}t.className=t.className.replace(/(\S+)\s*/g,i).replace(/(^\s+|\s+$)/,"")},setOpacity:function(t,e){if("opacity"in t.style)t.style.opacity=e;else if("filter"in t.style){var i=!1,n="DXImageTransform.Microsoft.Alpha";try{i=t.filters.item(n)}catch(o){}e=Math.round(100*e),i?(i.Enabled=100!==e,i.Opacity=e):t.style.filter+=" progid:"+n+"(opacity="+e+")"}},testProp:function(t){for(var i=e.documentElement.style,n=0;t.length>n;n++)if(t[n]in i)return t[n];return!1},getTranslateString:function(t){var e=n.Browser.webkit3d,i="translate"+(e?"3d":"")+"(",o=(e?",0":"")+")";return i+t.x+"px,"+t.y+"px"+o},getScaleString:function(t,e){var i=n.DomUtil.getTranslateString(e.add(e.multiplyBy(-1*t))),o=" scale("+t+") ";return i+o},setPosition:function(t,e,i){t._leaflet_pos=e,!i&&n.Browser.any3d?(t.style[n.DomUtil.TRANSFORM]=n.DomUtil.getTranslateString(e),n.Browser.mobileWebkit3d&&(t.style.WebkitBackfaceVisibility="hidden")):(t.style.left=e.x+"px",t.style.top=e.y+"px")},getPosition:function(t){return t._leaflet_pos}},n.DomUtil.TRANSFORM=n.DomUtil.testProp(["transform","WebkitTransform","OTransform","MozTransform","msTransform"]),n.DomUtil.TRANSITION=n.DomUtil.testProp(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),n.DomUtil.TRANSITION_END="webkitTransition"===n.DomUtil.TRANSITION||"OTransition"===n.DomUtil.TRANSITION?n.DomUtil.TRANSITION+"End":"transitionend",n.LatLng=function(t,e){var i=parseFloat(t),n=parseFloat(e);if(isNaN(i)||isNaN(n))throw Error("Invalid LatLng object: ("+t+", "+e+")");this.lat=i,this.lng=n},n.extend(n.LatLng,{DEG_TO_RAD:Math.PI/180,RAD_TO_DEG:180/Math.PI,MAX_MARGIN:1e-9}),n.LatLng.prototype={equals:function(t){if(!t)return!1;t=n.latLng(t);var e=Math.max(Math.abs(this.lat-t.lat),Math.abs(this.lng-t.lng));return n.LatLng.MAX_MARGIN>=e},toString:function(t){return"LatLng("+n.Util.formatNum(this.lat,t)+", "+n.Util.formatNum(this.lng,t)+")"},distanceTo:function(t){t=n.latLng(t);var e=6378137,i=n.LatLng.DEG_TO_RAD,o=(t.lat-this.lat)*i,s=(t.lng-this.lng)*i,a=this.lat*i,r=t.lat*i,h=Math.sin(o/2),l=Math.sin(s/2),u=h*h+l*l*Math.cos(a)*Math.cos(r);return 2*e*Math.atan2(Math.sqrt(u),Math.sqrt(1-u))},wrap:function(t,e){var i=this.lng;return t=t||-180,e=e||180,i=(i+e)%(e-t)+(t>i||i===e?e:t),new n.LatLng(this.lat,i)}},n.latLng=function(t,e){return t instanceof n.LatLng?t:n.Util.isArray(t)?new n.LatLng(t[0],t[1]):isNaN(t)?t:new n.LatLng(t,e)},n.LatLngBounds=function(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;o>n;n++)this.extend(i[n])},n.LatLngBounds.prototype={extend:function(t){return t="number"==typeof t[0]||"string"==typeof t[0]||t instanceof n.LatLng?n.latLng(t):n.latLngBounds(t),t instanceof n.LatLng?this._southWest||this._northEast?(this._southWest.lat=Math.min(t.lat,this._southWest.lat),this._southWest.lng=Math.min(t.lng,this._southWest.lng),this._northEast.lat=Math.max(t.lat,this._northEast.lat),this._northEast.lng=Math.max(t.lng,this._northEast.lng)):(this._southWest=new n.LatLng(t.lat,t.lng),this._northEast=new n.LatLng(t.lat,t.lng)):t instanceof n.LatLngBounds&&(this.extend(t._southWest),this.extend(t._northEast)),this},pad:function(t){var e=this._southWest,i=this._northEast,o=Math.abs(e.lat-i.lat)*t,s=Math.abs(e.lng-i.lng)*t;return new n.LatLngBounds(new n.LatLng(e.lat-o,e.lng-s),new n.LatLng(i.lat+o,i.lng+s))},getCenter:function(){return new n.LatLng((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new n.LatLng(this._northEast.lat,this._southWest.lng)},getSouthEast:function(){return new n.LatLng(this._southWest.lat,this._northEast.lng)},contains:function(t){t="number"==typeof t[0]||t instanceof n.LatLng?n.latLng(t):n.latLngBounds(t);var e,i,o=this._southWest,s=this._northEast;return t instanceof n.LatLngBounds?(e=t.getSouthWest(),i=t.getNorthEast()):e=i=t,e.lat>=o.lat&&i.lat<=s.lat&&e.lng>=o.lng&&i.lng<=s.lng},intersects:function(t){t=n.latLngBounds(t);var e=this._southWest,i=this._northEast,o=t.getSouthWest(),s=t.getNorthEast(),a=s.lat>=e.lat&&o.lat<=i.lat,r=s.lng>=e.lng&&o.lng<=i.lng;return a&&r},toBBoxString:function(){var t=this._southWest,e=this._northEast;return[t.lng,t.lat,e.lng,e.lat].join(",")},equals:function(t){return t?(t=n.latLngBounds(t),this._southWest.equals(t.getSouthWest())&&this._northEast.equals(t.getNorthEast())):!1},isValid:function(){return!(!this._southWest||!this._northEast)}},n.latLngBounds=function(t,e){return!t||t instanceof n.LatLngBounds?t:new n.LatLngBounds(t,e)},n.Projection={},n.Projection.SphericalMercator={MAX_LATITUDE:85.0511287798,project:function(t){var e=n.LatLng.DEG_TO_RAD,i=this.MAX_LATITUDE,o=Math.max(Math.min(i,t.lat),-i),s=t.lng*e,a=o*e;return a=Math.log(Math.tan(Math.PI/4+a/2)),new n.Point(s,a)},unproject:function(t){var e=n.LatLng.RAD_TO_DEG,i=t.x*e,o=(2*Math.atan(Math.exp(t.y))-Math.PI/2)*e;return new n.LatLng(o,i)}},n.Projection.LonLat={project:function(t){return new n.Point(t.lng,t.lat)},unproject:function(t){return new n.LatLng(t.y,t.x)}},n.CRS={latLngToPoint:function(t,e){var i=this.projection.project(t),n=this.scale(e);return this.transformation._transform(i,n)},pointToLatLng:function(t,e){var i=this.scale(e),n=this.transformation.untransform(t,i);return this.projection.unproject(n)},project:function(t){return this.projection.project(t)},scale:function(t){return 256*Math.pow(2,t)}},n.CRS.Simple=n.extend({},n.CRS,{projection:n.Projection.LonLat,transformation:new n.Transformation(1,0,-1,0),scale:function(t){return Math.pow(2,t)}}),n.CRS.EPSG3857=n.extend({},n.CRS,{code:"EPSG:3857",projection:n.Projection.SphericalMercator,transformation:new n.Transformation(.5/Math.PI,.5,-.5/Math.PI,.5),project:function(t){var e=this.projection.project(t),i=6378137;return e.multiplyBy(i)}}),n.CRS.EPSG900913=n.extend({},n.CRS.EPSG3857,{code:"EPSG:900913"}),n.CRS.EPSG4326=n.extend({},n.CRS,{code:"EPSG:4326",projection:n.Projection.LonLat,transformation:new n.Transformation(1/360,.5,-1/360,.5)}),n.Map=n.Class.extend({includes:n.Mixin.Events,options:{crs:n.CRS.EPSG3857,fadeAnimation:n.DomUtil.TRANSITION&&!n.Browser.android23,trackResize:!0,markerZoomAnimation:n.DomUtil.TRANSITION&&n.Browser.any3d},initialize:function(t,e){e=n.setOptions(this,e),this._initContainer(t),this._initLayout(),this.callInitHooks(),this._initEvents(),e.maxBounds&&this.setMaxBounds(e.maxBounds),e.center&&e.zoom!==i&&this.setView(n.latLng(e.center),e.zoom,!0),this._initLayers(e.layers)},setView:function(t,e){return this._resetView(n.latLng(t),this._limitZoom(e)),this},setZoom:function(t){return this.setView(this.getCenter(),t)},zoomIn:function(t){return this.setZoom(this._zoom+(t||1))},zoomOut:function(t){return this.setZoom(this._zoom-(t||1))},fitBounds:function(t){var e=this.getBoundsZoom(t);return this.setView(n.latLngBounds(t).getCenter(),e)},fitWorld:function(){var t=new n.LatLng(-60,-170),e=new n.LatLng(85,179);return this.fitBounds(new n.LatLngBounds(t,e))},panTo:function(t){return this.setView(t,this._zoom)},panBy:function(t){return this.fire("movestart"),this._rawPanBy(n.point(t)),this.fire("move"),this.fire("moveend")},setMaxBounds:function(t){if(t=n.latLngBounds(t),this.options.maxBounds=t,!t)return this._boundsMinZoom=null,this;var e=this.getBoundsZoom(t,!0);return this._boundsMinZoom=e,this._loaded&&(e>this._zoom?this.setView(t.getCenter(),e):this.panInsideBounds(t)),this},panInsideBounds:function(t){t=n.latLngBounds(t);var e=this.getBounds(),i=this.project(e.getSouthWest()),o=this.project(e.getNorthEast()),s=this.project(t.getSouthWest()),a=this.project(t.getNorthEast()),r=0,h=0;return o.ya.x&&(r=a.x-o.x),i.y>s.y&&(h=s.y-i.y),i.x=r);return c&&e?null:e?r:r-1},getSize:function(){return(!this._size||this._sizeChanged)&&(this._size=new n.Point(this._container.clientWidth,this._container.clientHeight),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(){var t=this._getTopLeftPoint();return new n.Bounds(t,t.add(this.getSize()))},getPixelOrigin:function(){return this._initialTopLeftPoint},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t){var e=this.options.crs;return e.scale(t)/e.scale(this._zoom)},getScaleZoom:function(t){return this._zoom+Math.log(t)/Math.LN2},project:function(t,e){return e=e===i?this._zoom:e,this.options.crs.latLngToPoint(n.latLng(t),e)},unproject:function(t,e){return e=e===i?this._zoom:e,this.options.crs.pointToLatLng(n.point(t),e)},layerPointToLatLng:function(t){var e=n.point(t).add(this._initialTopLeftPoint);return this.unproject(e)},latLngToLayerPoint:function(t){var e=this.project(n.latLng(t))._round();return e._subtract(this._initialTopLeftPoint)},containerPointToLayerPoint:function(t){return n.point(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return n.point(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var e=this.containerPointToLayerPoint(n.point(t));return this.layerPointToLatLng(e)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(n.latLng(t)))},mouseEventToContainerPoint:function(t){return n.DomEvent.getMousePosition(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var e=this._container=n.DomUtil.get(t);if(e._leaflet)throw Error("Map container is already initialized.");e._leaflet=!0},_initLayout:function(){var t=this._container;n.DomUtil.addClass(t,"leaflet-container"),n.Browser.touch&&n.DomUtil.addClass(t,"leaflet-touch"),this.options.fadeAnimation&&n.DomUtil.addClass(t,"leaflet-fade-anim");var e=n.DomUtil.getStyle(t,"position");"absolute"!==e&&"relative"!==e&&"fixed"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._mapPane=t.mapPane=this._createPane("leaflet-map-pane",this._container),this._tilePane=t.tilePane=this._createPane("leaflet-tile-pane",this._mapPane),t.objectsPane=this._createPane("leaflet-objects-pane",this._mapPane),t.shadowPane=this._createPane("leaflet-shadow-pane"),t.overlayPane=this._createPane("leaflet-overlay-pane"),t.markerPane=this._createPane("leaflet-marker-pane"),t.popupPane=this._createPane("leaflet-popup-pane");var e=" leaflet-zoom-hide";this.options.markerZoomAnimation||(n.DomUtil.addClass(t.markerPane,e),n.DomUtil.addClass(t.shadowPane,e),n.DomUtil.addClass(t.popupPane,e))},_createPane:function(t,e){return n.DomUtil.create("div",t,e||this._panes.objectsPane)},_initLayers:function(t){t=t?n.Util.isArray(t)?t:[t]:[],this._layers={},this._zoomBoundLayers={},this._tileLayersNum=0;var e,i;for(e=0,i=t.length;i>e;e++)this.addLayer(t[e])},_resetView:function(t,e,i,o){var s=this._zoom!==e;o||(this.fire("movestart"),s&&this.fire("zoomstart")),this._zoom=e,this._initialTopLeftPoint=this._getNewTopLeftPoint(t),i?this._initialTopLeftPoint._add(this._getMapPanePos()):n.DomUtil.setPosition(this._mapPane,new n.Point(0,0)),this._tileLayersToLoad=this._tileLayersNum;var a=!this._loaded;this._loaded=!0,this.fire("viewreset",{hard:!i}),this.fire("move"),(s||o)&&this.fire("zoomend"),this.fire("moveend",{hard:!i}),a&&this.fire("load")},_rawPanBy:function(t){n.DomUtil.setPosition(this._mapPane,this._getMapPanePos().subtract(t))},_updateZoomLevels:function(){var t,e=1/0,n=-1/0;for(t in this._zoomBoundLayers)if(this._zoomBoundLayers.hasOwnProperty(t)){var o=this._zoomBoundLayers[t];isNaN(o.options.minZoom)||(e=Math.min(e,o.options.minZoom)),isNaN(o.options.maxZoom)||(n=Math.max(n,o.options.maxZoom))}t===i?this._layersMaxZoom=this._layersMinZoom=i:(this._layersMaxZoom=n,this._layersMinZoom=e)},_initEvents:function(){if(n.DomEvent){n.DomEvent.on(this._container,"click",this._onMouseClick,this);var e,i,o=["dblclick","mousedown","mouseup","mouseenter","mouseleave","mousemove","contextmenu"];for(e=0,i=o.length;i>e;e++)n.DomEvent.on(this._container,o[e],this._fireMouseEvent,this);this.options.trackResize&&n.DomEvent.on(t,"resize",this._onResize,this)}},_onResize:function(){n.Util.cancelAnimFrame(this._resizeRequest),this._resizeRequest=n.Util.requestAnimFrame(this.invalidateSize,this,!1,this._container)},_onMouseClick:function(t){!this._loaded||this.dragging&&this.dragging.moved()||(this.fire("preclick"),this._fireMouseEvent(t))},_fireMouseEvent:function(t){if(this._loaded){var e=t.type;if(e="mouseenter"===e?"mouseover":"mouseleave"===e?"mouseout":e,this.hasEventListeners(e)){"contextmenu"===e&&n.DomEvent.preventDefault(t);var i=this.mouseEventToContainerPoint(t),o=this.containerPointToLayerPoint(i),s=this.layerPointToLatLng(o);this.fire(e,{latlng:s,layerPoint:o,containerPoint:i,originalEvent:t})}}},_onTileLayerLoad:function(){this._tileLayersToLoad--,this._tileLayersNum&&!this._tileLayersToLoad&&this._tileBg&&(clearTimeout(this._clearTileBgTimer),this._clearTileBgTimer=setTimeout(n.bind(this._clearTileBg,this),500))},whenReady:function(t,e){return this._loaded?t.call(e||this,this):this.on("load",t,e),this},_getMapPanePos:function(){return n.DomUtil.getPosition(this._mapPane)},_getTopLeftPoint:function(){if(!this._loaded)throw Error("Set map center and zoom first.");return this._initialTopLeftPoint.subtract(this._getMapPanePos())},_getNewTopLeftPoint:function(t,e){var i=this.getSize()._divideBy(2);return this.project(t,e)._subtract(i)._round()},_latLngToNewLayerPoint:function(t,e,i){var n=this._getNewTopLeftPoint(i,e).add(this._getMapPanePos());return this.project(t,e)._subtract(n)},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitZoom:function(t){var e=this.getMinZoom(),i=this.getMaxZoom();return Math.max(e,Math.min(i,t))}}),n.map=function(t,e){return new n.Map(t,e)},n.Projection.Mercator={MAX_LATITUDE:85.0840591556,R_MINOR:6356752.3142,R_MAJOR:6378137,project:function(t){var e=n.LatLng.DEG_TO_RAD,i=this.MAX_LATITUDE,o=Math.max(Math.min(i,t.lat),-i),s=this.R_MAJOR,a=this.R_MINOR,r=t.lng*e*s,h=o*e,l=a/s,u=Math.sqrt(1-l*l),c=u*Math.sin(h);c=Math.pow((1-c)/(1+c),.5*u);var _=Math.tan(.5*(.5*Math.PI-h))/c;return h=-a*Math.log(_),new n.Point(r,h)},unproject:function(t){for(var e,i=n.LatLng.RAD_TO_DEG,o=this.R_MAJOR,s=this.R_MINOR,a=t.x*i/o,r=s/o,h=Math.sqrt(1-r*r),l=Math.exp(-t.y/s),u=Math.PI/2-2*Math.atan(l),c=15,_=1e-7,d=c,p=.1;Math.abs(p)>_&&--d>0;)e=h*Math.sin(u),p=Math.PI/2-2*Math.atan(l*Math.pow((1-e)/(1+e),.5*h))-u,u+=p;return new n.LatLng(u*i,a)}},n.CRS.EPSG3395=n.extend({},n.CRS,{code:"EPSG:3395",projection:n.Projection.Mercator,transformation:function(){var t=n.Projection.Mercator,e=t.R_MAJOR,i=t.R_MINOR;return new n.Transformation(.5/(Math.PI*e),.5,-.5/(Math.PI*i),.5)}()}),n.TileLayer=n.Class.extend({includes:n.Mixin.Events,options:{minZoom:0,maxZoom:18,tileSize:256,subdomains:"abc",errorTileUrl:"",attribution:"",zoomOffset:0,opacity:1,unloadInvisibleTiles:n.Browser.mobile,updateWhenIdle:n.Browser.mobile},initialize:function(t,e){e=n.setOptions(this,e),e.detectRetina&&n.Browser.retina&&e.maxZoom>0&&(e.tileSize=Math.floor(e.tileSize/2),e.zoomOffset++,e.minZoom>0&&e.minZoom--,this.options.maxZoom--),this._url=t;var i=this.options.subdomains;"string"==typeof i&&(this.options.subdomains=i.split(""))},onAdd:function(t){this._map=t,this._initContainer(),this._createTileProto(),t.on({viewreset:this._resetCallback,moveend:this._update},this),this.options.updateWhenIdle||(this._limitedUpdate=n.Util.limitExecByInterval(this._update,150,this),t.on("move",this._limitedUpdate,this)),this._reset(),this._update()},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){this._container.parentNode.removeChild(this._container),t.off({viewreset:this._resetCallback,moveend:this._update},this),this.options.updateWhenIdle||t.off("move",this._limitedUpdate,this),this._container=null,this._map=null},bringToFront:function(){var t=this._map._panes.tilePane;return this._container&&(t.appendChild(this._container),this._setAutoZIndex(t,Math.max)),this},bringToBack:function(){var t=this._map._panes.tilePane;return this._container&&(t.insertBefore(this._container,t.firstChild),this._setAutoZIndex(t,Math.min)),this},getAttribution:function(){return this.options.attribution},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},setUrl:function(t,e){return this._url=t,e||this.redraw(),this},redraw:function(){return this._map&&(this._map._panes.tilePane.empty=!1,this._reset(!0),this._update()),this},_updateZIndex:function(){this._container&&this.options.zIndex!==i&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t,e){var i,n,o,s=t.children,a=-e(1/0,-1/0);for(n=0,o=s.length;o>n;n++)s[n]!==this._container&&(i=parseInt(s[n].style.zIndex,10),isNaN(i)||(a=e(a,i)));this.options.zIndex=this._container.style.zIndex=(isFinite(a)?a:0)+e(1,-1)},_updateOpacity:function(){n.DomUtil.setOpacity(this._container,this.options.opacity);var t,e=this._tiles;if(n.Browser.webkit)for(t in e)e.hasOwnProperty(t)&&(e[t].style.webkitTransform+=" translate(0,0)")},_initContainer:function(){var t=this._map._panes.tilePane;(!this._container||t.empty)&&(this._container=n.DomUtil.create("div","leaflet-layer"),this._updateZIndex(),t.appendChild(this._container),1>this.options.opacity&&this._updateOpacity())},_resetCallback:function(t){this._reset(t.hard)},_reset:function(t){var e=this._tiles;for(var i in e)e.hasOwnProperty(i)&&this.fire("tileunload",{tile:e[i]});this._tiles={},this._tilesToLoad=0,this.options.reuseTiles&&(this._unusedTiles=[]),t&&this._container&&(this._container.innerHTML=""),this._initContainer()},_update:function(){if(this._map){var t=this._map.getPixelBounds(),e=this._map.getZoom(),i=this.options.tileSize;if(!(e>this.options.maxZoom||this.options.minZoom>e)){var o=new n.Point(Math.floor(t.min.x/i),Math.floor(t.min.y/i)),s=new n.Point(Math.floor(t.max.x/i),Math.floor(t.max.y/i)),a=new n.Bounds(o,s);this._addTilesFromCenterOut(a),(this.options.unloadInvisibleTiles||this.options.reuseTiles)&&this._removeOtherTiles(a)}}},_addTilesFromCenterOut:function(t){var i,o,s,a=[],r=t.getCenter();for(i=t.min.y;t.max.y>=i;i++)for(o=t.min.x;t.max.x>=o;o++)s=new n.Point(o,i),this._tileShouldBeLoaded(s)&&a.push(s);var h=a.length;if(0!==h){a.sort(function(t,e){return t.distanceTo(r)-e.distanceTo(r)});var l=e.createDocumentFragment();for(this._tilesToLoad||this.fire("loading"),this._tilesToLoad+=h,o=0;h>o;o++)this._addTile(a[o],l);this._container.appendChild(l)}},_tileShouldBeLoaded:function(t){if(t.x+":"+t.y in this._tiles)return!1;if(!this.options.continuousWorld){var e=this._getWrapTileNum();if(this.options.noWrap&&(0>t.x||t.x>=e)||0>t.y||t.y>=e)return!1}return!0},_removeOtherTiles:function(t){var e,i,n,o;for(o in this._tiles)this._tiles.hasOwnProperty(o)&&(e=o.split(":"),i=parseInt(e[0],10),n=parseInt(e[1],10),(t.min.x>i||i>t.max.x||t.min.y>n||n>t.max.y)&&this._removeTile(o))},_removeTile:function(t){var e=this._tiles[t];this.fire("tileunload",{tile:e,url:e.src}),this.options.reuseTiles?(n.DomUtil.removeClass(e,"leaflet-tile-loaded"),this._unusedTiles.push(e)):e.parentNode===this._container&&this._container.removeChild(e),n.Browser.android||(e.src=n.Util.emptyImageUrl),delete this._tiles[t]},_addTile:function(t,e){var i=this._getTilePos(t),o=this._getTile();n.DomUtil.setPosition(o,i,n.Browser.chrome||n.Browser.android23),this._tiles[t.x+":"+t.y]=o,this._loadTile(o,t),o.parentNode!==this._container&&e.appendChild(o) +},_getZoomForUrl:function(){var t=this.options,e=this._map.getZoom();return t.zoomReverse&&(e=t.maxZoom-e),e+t.zoomOffset},_getTilePos:function(t){var e=this._map.getPixelOrigin(),i=this.options.tileSize;return t.multiplyBy(i).subtract(e)},getTileUrl:function(t){return this._adjustTilePoint(t),n.Util.template(this._url,n.extend({s:this._getSubdomain(t),z:this._getZoomForUrl(),x:t.x,y:t.y},this.options))},_getWrapTileNum:function(){return Math.pow(2,this._getZoomForUrl())},_adjustTilePoint:function(t){var e=this._getWrapTileNum();this.options.continuousWorld||this.options.noWrap||(t.x=(t.x%e+e)%e),this.options.tms&&(t.y=e-t.y-1)},_getSubdomain:function(t){var e=(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[e]},_createTileProto:function(){var t=this._tileImg=n.DomUtil.create("img","leaflet-tile");t.style.width=t.style.height=this.options.tileSize+"px",t.galleryimg="no"},_getTile:function(){if(this.options.reuseTiles&&this._unusedTiles.length>0){var t=this._unusedTiles.pop();return this._resetTile(t),t}return this._createTile()},_resetTile:function(){},_createTile:function(){var t=this._tileImg.cloneNode(!1);return t.onselectstart=t.onmousemove=n.Util.falseFn,t},_loadTile:function(t,e){t._layer=this,t.onload=this._tileOnLoad,t.onerror=this._tileOnError,t.src=this.getTileUrl(e)},_tileLoaded:function(){this._tilesToLoad--,this._tilesToLoad||this.fire("load")},_tileOnLoad:function(){var t=this._layer;this.src!==n.Util.emptyImageUrl&&(n.DomUtil.addClass(this,"leaflet-tile-loaded"),t.fire("tileload",{tile:this,url:this.src})),t._tileLoaded()},_tileOnError:function(){var t=this._layer;t.fire("tileerror",{tile:this,url:this.src});var e=t.options.errorTileUrl;e&&(this.src=e),t._tileLoaded()}}),n.tileLayer=function(t,e){return new n.TileLayer(t,e)},n.TileLayer.WMS=n.TileLayer.extend({defaultWmsParams:{service:"WMS",request:"GetMap",version:"1.1.1",layers:"",styles:"",format:"image/jpeg",transparent:!1},initialize:function(t,e){this._url=t;var i=n.extend({},this.defaultWmsParams);i.width=i.height=e.detectRetina&&n.Browser.retina?2*this.options.tileSize:this.options.tileSize;for(var o in e)this.options.hasOwnProperty(o)||(i[o]=e[o]);this.wmsParams=i,n.setOptions(this,e)},onAdd:function(t){var e=parseFloat(this.wmsParams.version)>=1.3?"crs":"srs";this.wmsParams[e]=t.options.crs.code,n.TileLayer.prototype.onAdd.call(this,t)},getTileUrl:function(t,e){this._adjustTilePoint(t);var i=this._map,o=i.options.crs,s=this.options.tileSize,a=t.multiplyBy(s),r=a.add(new n.Point(s,s)),h=o.project(i.unproject(a,e)),l=o.project(i.unproject(r,e)),u=[h.x,l.y,l.x,h.y].join(","),c=n.Util.template(this._url,{s:this._getSubdomain(t)});return c+n.Util.getParamString(this.wmsParams,c)+"&bbox="+u},setParams:function(t,e){return n.extend(this.wmsParams,t),e||this.redraw(),this}}),n.tileLayer.wms=function(t,e){return new n.TileLayer.WMS(t,e)},n.TileLayer.Canvas=n.TileLayer.extend({options:{async:!1},initialize:function(t){n.setOptions(this,t)},redraw:function(){var t=this._tiles;for(var e in t)t.hasOwnProperty(e)&&this._redrawTile(t[e]);return this},_redrawTile:function(t){this.drawTile(t,t._tilePoint,this._map._zoom)},_createTileProto:function(){var t=this._canvasProto=n.DomUtil.create("canvas","leaflet-tile");t.width=t.height=this.options.tileSize},_createTile:function(){var t=this._canvasProto.cloneNode(!1);return t.onselectstart=t.onmousemove=n.Util.falseFn,t},_loadTile:function(t,e){t._layer=this,t._tilePoint=e,this._redrawTile(t),this.options.async||this.tileDrawn(t)},drawTile:function(){},tileDrawn:function(t){this._tileOnLoad.call(t)}}),n.tileLayer.canvas=function(t){return new n.TileLayer.Canvas(t)},n.ImageOverlay=n.Class.extend({includes:n.Mixin.Events,options:{opacity:1},initialize:function(t,e,i){this._url=t,this._bounds=n.latLngBounds(e),n.setOptions(this,i)},onAdd:function(t){this._map=t,this._image||this._initImage(),t._panes.overlayPane.appendChild(this._image),t.on("viewreset",this._reset,this),t.options.zoomAnimation&&n.Browser.any3d&&t.on("zoomanim",this._animateZoom,this),this._reset()},onRemove:function(t){t.getPanes().overlayPane.removeChild(this._image),t.off("viewreset",this._reset,this),t.options.zoomAnimation&&t.off("zoomanim",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},bringToFront:function(){return this._image&&this._map._panes.overlayPane.appendChild(this._image),this},bringToBack:function(){var t=this._map._panes.overlayPane;return this._image&&t.insertBefore(this._image,t.firstChild),this},_initImage:function(){this._image=n.DomUtil.create("img","leaflet-image-layer"),this._map.options.zoomAnimation&&n.Browser.any3d?n.DomUtil.addClass(this._image,"leaflet-zoom-animated"):n.DomUtil.addClass(this._image,"leaflet-zoom-hide"),this._updateOpacity(),n.extend(this._image,{galleryimg:"no",onselectstart:n.Util.falseFn,onmousemove:n.Util.falseFn,onload:n.bind(this._onImageLoad,this),src:this._url})},_animateZoom:function(t){var e=this._map,i=this._image,o=e.getZoomScale(t.zoom),s=this._bounds.getNorthWest(),a=this._bounds.getSouthEast(),r=e._latLngToNewLayerPoint(s,t.zoom,t.center),h=e._latLngToNewLayerPoint(a,t.zoom,t.center)._subtract(r),l=r._add(h._multiplyBy(.5*(1-1/o)));i.style[n.DomUtil.TRANSFORM]=n.DomUtil.getTranslateString(l)+" scale("+o+") "},_reset:function(){var t=this._image,e=this._map.latLngToLayerPoint(this._bounds.getNorthWest()),i=this._map.latLngToLayerPoint(this._bounds.getSouthEast())._subtract(e);n.DomUtil.setPosition(t,e),t.style.width=i.x+"px",t.style.height=i.y+"px"},_onImageLoad:function(){this.fire("load")},_updateOpacity:function(){n.DomUtil.setOpacity(this._image,this.options.opacity)}}),n.imageOverlay=function(t,e,i){return new n.ImageOverlay(t,e,i)},n.Icon=n.Class.extend({options:{className:""},initialize:function(t){n.setOptions(this,t)},createIcon:function(){return this._createIcon("icon")},createShadow:function(){return this._createIcon("shadow")},_createIcon:function(t){var e=this._getIconUrl(t);if(!e){if("icon"===t)throw Error("iconUrl not set in Icon options (see the docs).");return null}var i=this._createImg(e);return this._setIconStyles(i,t),i},_setIconStyles:function(t,e){var i,o=this.options,s=n.point(o[e+"Size"]);i="shadow"===e?n.point(o.shadowAnchor||o.iconAnchor):n.point(o.iconAnchor),!i&&s&&(i=s.divideBy(2,!0)),t.className="leaflet-marker-"+e+" "+o.className,i&&(t.style.marginLeft=-i.x+"px",t.style.marginTop=-i.y+"px"),s&&(t.style.width=s.x+"px",t.style.height=s.y+"px")},_createImg:function(t){var i;return n.Browser.ie6?(i=e.createElement("div"),i.style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+t+'")'):(i=e.createElement("img"),i.src=t),i},_getIconUrl:function(t){return n.Browser.retina&&this.options[t+"RetinaUrl"]?this.options[t+"RetinaUrl"]:this.options[t+"Url"]}}),n.icon=function(t){return new n.Icon(t)},n.Icon.Default=n.Icon.extend({options:{iconSize:new n.Point(25,41),iconAnchor:new n.Point(12,41),popupAnchor:new n.Point(1,-34),shadowSize:new n.Point(41,41)},_getIconUrl:function(t){var e=t+"Url";if(this.options[e])return this.options[e];n.Browser.retina&&"icon"===t&&(t+="@2x");var i=n.Icon.Default.imagePath;if(!i)throw Error("Couldn't autodetect L.Icon.Default.imagePath, set it manually.");return i+"/marker-"+t+".png"}}),n.Icon.Default.imagePath=function(){var t,i,n,o,s,a=e.getElementsByTagName("script"),r=/\/?leaflet[\-\._]?([\w\-\._]*)\.js\??/;for(t=0,i=a.length;i>t;t++)if(n=a[t].src,o=n.match(r))return s=n.split(r)[0],(s?s+"/":"")+"images"}(),n.Marker=n.Class.extend({includes:n.Mixin.Events,options:{icon:new n.Icon.Default,title:"",clickable:!0,draggable:!1,zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250},initialize:function(t,e){n.setOptions(this,e),this._latlng=n.latLng(t)},onAdd:function(t){this._map=t,t.on("viewreset",this.update,this),this._initIcon(),this.update(),t.options.zoomAnimation&&t.options.markerZoomAnimation&&t.on("zoomanim",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){this._removeIcon(),this.fire("remove"),t.off({viewreset:this.update,zoomanim:this._animateZoom},this),this._map=null},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=n.latLng(t),this.update(),this.fire("move",{latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update(),this},setIcon:function(t){return this._map&&this._removeIcon(),this.options.icon=t,this._map&&(this._initIcon(),this.update()),this},update:function(){if(this._icon){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,e=this._map,i=e.options.zoomAnimation&&e.options.markerZoomAnimation,o=i?"leaflet-zoom-animated":"leaflet-zoom-hide",s=!1;this._icon||(this._icon=t.icon.createIcon(),t.title&&(this._icon.title=t.title),this._initInteraction(),s=1>this.options.opacity,n.DomUtil.addClass(this._icon,o),t.riseOnHover&&n.DomEvent.on(this._icon,"mouseover",this._bringToFront,this).on(this._icon,"mouseout",this._resetZIndex,this)),this._shadow||(this._shadow=t.icon.createShadow(),this._shadow&&(n.DomUtil.addClass(this._shadow,o),s=1>this.options.opacity)),s&&this._updateOpacity();var a=this._map._panes;a.markerPane.appendChild(this._icon),this._shadow&&a.shadowPane.appendChild(this._shadow)},_removeIcon:function(){var t=this._map._panes;this.options.riseOnHover&&n.DomEvent.off(this._icon,"mouseover",this._bringToFront).off(this._icon,"mouseout",this._resetZIndex),t.markerPane.removeChild(this._icon),this._shadow&&t.shadowPane.removeChild(this._shadow),this._icon=this._shadow=null},_setPos:function(t){n.DomUtil.setPosition(this._icon,t),this._shadow&&n.DomUtil.setPosition(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);this._setPos(e)},_initInteraction:function(){if(this.options.clickable){var t=this._icon,e=["dblclick","mousedown","mouseover","mouseout","contextmenu"];n.DomUtil.addClass(t,"leaflet-clickable"),n.DomEvent.on(t,"click",this._onMouseClick,this);for(var i=0;e.length>i;i++)n.DomEvent.on(t,e[i],this._fireMouseEvent,this);n.Handler.MarkerDrag&&(this.dragging=new n.Handler.MarkerDrag(this),this.options.draggable&&this.dragging.enable())}},_onMouseClick:function(t){var e=this.dragging&&this.dragging.moved();(this.hasEventListeners(t.type)||e)&&n.DomEvent.stopPropagation(t),e||(this.dragging&&this.dragging._enabled||!this._map.dragging||!this._map.dragging.moved())&&this.fire(t.type,{originalEvent:t})},_fireMouseEvent:function(t){this.fire(t.type,{originalEvent:t}),"contextmenu"===t.type&&this.hasEventListeners(t.type)&&n.DomEvent.preventDefault(t),"mousedown"!==t.type&&n.DomEvent.stopPropagation(t)},setOpacity:function(t){this.options.opacity=t,this._map&&this._updateOpacity()},_updateOpacity:function(){n.DomUtil.setOpacity(this._icon,this.options.opacity),this._shadow&&n.DomUtil.setOpacity(this._shadow,this.options.opacity)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)}}),n.marker=function(t,e){return new n.Marker(t,e)},n.DivIcon=n.Icon.extend({options:{iconSize:new n.Point(12,12),className:"leaflet-div-icon"},createIcon:function(){var t=e.createElement("div"),i=this.options;return i.html&&(t.innerHTML=i.html),i.bgPos&&(t.style.backgroundPosition=-i.bgPos.x+"px "+-i.bgPos.y+"px"),this._setIconStyles(t,"icon"),t},createShadow:function(){return null}}),n.divIcon=function(t){return new n.DivIcon(t)},n.Map.mergeOptions({closePopupOnClick:!0}),n.Popup=n.Class.extend({includes:n.Mixin.Events,options:{minWidth:50,maxWidth:300,maxHeight:null,autoPan:!0,closeButton:!0,offset:new n.Point(0,6),autoPanPadding:new n.Point(5,5),className:"",zoomAnimation:!0},initialize:function(t,e){n.setOptions(this,t),this._source=e,this._animated=n.Browser.any3d&&this.options.zoomAnimation},onAdd:function(t){this._map=t,this._container||this._initLayout(),this._updateContent();var e=t.options.fadeAnimation;e&&n.DomUtil.setOpacity(this._container,0),t._panes.popupPane.appendChild(this._container),t.on("viewreset",this._updatePosition,this),this._animated&&t.on("zoomanim",this._zoomAnimation,this),t.options.closePopupOnClick&&t.on("preclick",this._close,this),this._update(),e&&n.DomUtil.setOpacity(this._container,1)},addTo:function(t){return t.addLayer(this),this},openOn:function(t){return t.openPopup(this),this},onRemove:function(t){t._panes.popupPane.removeChild(this._container),n.Util.falseFn(this._container.offsetWidth),t.off({viewreset:this._updatePosition,preclick:this._close,zoomanim:this._zoomAnimation},this),t.options.fadeAnimation&&n.DomUtil.setOpacity(this._container,0),this._map=null},setLatLng:function(t){return this._latlng=n.latLng(t),this._update(),this},setContent:function(t){return this._content=t,this._update(),this},_close:function(){var t=this._map;t&&(t._popup=null,t.removeLayer(this).fire("popupclose",{popup:this}))},_initLayout:function(){var t,e="leaflet-popup",i=e+" "+this.options.className+" leaflet-zoom-"+(this._animated?"animated":"hide"),o=this._container=n.DomUtil.create("div",i);this.options.closeButton&&(t=this._closeButton=n.DomUtil.create("a",e+"-close-button",o),t.href="#close",t.innerHTML="×",n.DomEvent.on(t,"click",this._onCloseButtonClick,this));var s=this._wrapper=n.DomUtil.create("div",e+"-content-wrapper",o);n.DomEvent.disableClickPropagation(s),this._contentNode=n.DomUtil.create("div",e+"-content",s),n.DomEvent.on(this._contentNode,"mousewheel",n.DomEvent.stopPropagation),this._tipContainer=n.DomUtil.create("div",e+"-tip-container",o),this._tip=n.DomUtil.create("div",e+"-tip",this._tipContainer)},_update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},_updateContent:function(){if(this._content){if("string"==typeof this._content)this._contentNode.innerHTML=this._content;else{for(;this._contentNode.hasChildNodes();)this._contentNode.removeChild(this._contentNode.firstChild);this._contentNode.appendChild(this._content)}this.fire("contentupdate")}},_updateLayout:function(){var t=this._contentNode,e=t.style;e.width="",e.whiteSpace="nowrap";var i=t.offsetWidth;i=Math.min(i,this.options.maxWidth),i=Math.max(i,this.options.minWidth),e.width=i+1+"px",e.whiteSpace="",e.height="";var o=t.offsetHeight,s=this.options.maxHeight,a="leaflet-popup-scrolled";s&&o>s?(e.height=s+"px",n.DomUtil.addClass(t,a)):n.DomUtil.removeClass(t,a),this._containerWidth=this._container.offsetWidth},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),e=this._animated,i=this.options.offset;e&&n.DomUtil.setPosition(this._container,t),this._containerBottom=-i.y-(e?0:t.y),this._containerLeft=-Math.round(this._containerWidth/2)+i.x+(e?0:t.x),this._container.style.bottom=this._containerBottom+"px",this._container.style.left=this._containerLeft+"px"}},_zoomAnimation:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);n.DomUtil.setPosition(this._container,e)},_adjustPan:function(){if(this.options.autoPan){var t=this._map,e=this._container.offsetHeight,i=this._containerWidth,o=new n.Point(this._containerLeft,-e-this._containerBottom);this._animated&&o._add(n.DomUtil.getPosition(this._container));var s=t.layerPointToContainerPoint(o),a=this.options.autoPanPadding,r=t.getSize(),h=0,l=0;0>s.x&&(h=s.x-a.x),s.x+i>r.x&&(h=s.x+i-r.x+a.x),0>s.y&&(l=s.y-a.y),s.y+e>r.y&&(l=s.y+e-r.y+a.y),(h||l)&&t.panBy(new n.Point(h,l))}},_onCloseButtonClick:function(t){this._close(),n.DomEvent.stop(t)}}),n.popup=function(t,e){return new n.Popup(t,e)},n.Marker.include({openPopup:function(){return this._popup&&this._map&&(this._popup.setLatLng(this._latlng),this._map.openPopup(this._popup)),this},closePopup:function(){return this._popup&&this._popup._close(),this},bindPopup:function(t,e){var i=n.point(this.options.icon.options.popupAnchor)||new n.Point(0,0);return i=i.add(n.Popup.prototype.options.offset),e&&e.offset&&(i=i.add(e.offset)),e=n.extend({offset:i},e),this._popup||this.on("click",this.openPopup,this).on("remove",this.closePopup,this).on("move",this._movePopup,this),this._popup=new n.Popup(e,this).setContent(t),this},unbindPopup:function(){return this._popup&&(this._popup=null,this.off("click",this.openPopup).off("remove",this.closePopup).off("move",this._movePopup)),this},_movePopup:function(t){this._popup.setLatLng(t.latlng)}}),n.Map.include({openPopup:function(t){return this.closePopup(),this._popup=t,this.addLayer(t).fire("popupopen",{popup:this._popup})},closePopup:function(){return this._popup&&this._popup._close(),this}}),n.LayerGroup=n.Class.extend({initialize:function(t){this._layers={};var e,i;if(t)for(e=0,i=t.length;i>e;e++)this.addLayer(t[e])},addLayer:function(t){var e=n.stamp(t);return this._layers[e]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var e=n.stamp(t);return delete this._layers[e],this._map&&this._map.removeLayer(t),this},hasLayer:function(t){if(!t)return!1;var e=n.stamp(t);return this._layers.hasOwnProperty(e)},clearLayers:function(){return this.eachLayer(this.removeLayer,this),this},invoke:function(t){var e,i,n=Array.prototype.slice.call(arguments,1);for(e in this._layers)this._layers.hasOwnProperty(e)&&(i=this._layers[e],i[t]&&i[t].apply(i,n));return this},onAdd:function(t){this._map=t,this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t),this._map=null},addTo:function(t){return t.addLayer(this),this},eachLayer:function(t,e){for(var i in this._layers)this._layers.hasOwnProperty(i)&&t.call(e,this._layers[i])},setZIndex:function(t){return this.invoke("setZIndex",t)}}),n.layerGroup=function(t){return new n.LayerGroup(t)},n.FeatureGroup=n.LayerGroup.extend({includes:n.Mixin.Events,statics:{EVENTS:"click dblclick mouseover mouseout mousemove contextmenu"},addLayer:function(t){return this._layers[n.stamp(t)]?this:(t.on(n.FeatureGroup.EVENTS,this._propagateEvent,this),n.LayerGroup.prototype.addLayer.call(this,t),this._popupContent&&t.bindPopup&&t.bindPopup(this._popupContent,this._popupOptions),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return t.off(n.FeatureGroup.EVENTS,this._propagateEvent,this),n.LayerGroup.prototype.removeLayer.call(this,t),this._popupContent&&this.invoke("unbindPopup"),this.fire("layerremove",{layer:t})},bindPopup:function(t,e){return this._popupContent=t,this._popupOptions=e,this.invoke("bindPopup",t,e)},setStyle:function(t){return this.invoke("setStyle",t)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var t=new n.LatLngBounds;return this.eachLayer(function(e){t.extend(e instanceof n.Marker?e.getLatLng():e.getBounds())}),t},_propagateEvent:function(t){t.layer=t.target,t.target=this,this.fire(t.type,t)}}),n.featureGroup=function(t){return new n.FeatureGroup(t)},n.Path=n.Class.extend({includes:[n.Mixin.Events],statics:{CLIP_PADDING:n.Browser.mobile?Math.max(0,Math.min(.5,(1280/Math.max(t.innerWidth,t.innerHeight)-1)/2)):.5},options:{stroke:!0,color:"#0033ff",dashArray:null,weight:5,opacity:.5,fill:!1,fillColor:null,fillOpacity:.2,clickable:!0},initialize:function(t){n.setOptions(this,t)},onAdd:function(t){this._map=t,this._container||(this._initElements(),this._initEvents()),this.projectLatlngs(),this._updatePath(),this._container&&this._map._pathRoot.appendChild(this._container),this.fire("add"),t.on({viewreset:this.projectLatlngs,moveend:this._updatePath},this)},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){t._pathRoot.removeChild(this._container),this.fire("remove"),this._map=null,n.Browser.vml&&(this._container=null,this._stroke=null,this._fill=null),t.off({viewreset:this.projectLatlngs,moveend:this._updatePath},this)},projectLatlngs:function(){},setStyle:function(t){return n.setOptions(this,t),this._container&&this._updateStyle(),this},redraw:function(){return this._map&&(this.projectLatlngs(),this._updatePath()),this}}),n.Map.include({_updatePathViewport:function(){var t=n.Path.CLIP_PADDING,e=this.getSize(),i=n.DomUtil.getPosition(this._mapPane),o=i.multiplyBy(-1)._subtract(e.multiplyBy(t)._round()),s=o.add(e.multiplyBy(1+2*t)._round());this._pathViewport=new n.Bounds(o,s)}}),n.Path.SVG_NS="http://www.w3.org/2000/svg",n.Browser.svg=!(!e.createElementNS||!e.createElementNS(n.Path.SVG_NS,"svg").createSVGRect),n.Path=n.Path.extend({statics:{SVG:n.Browser.svg},bringToFront:function(){var t=this._map._pathRoot,e=this._container;return e&&t.lastChild!==e&&t.appendChild(e),this},bringToBack:function(){var t=this._map._pathRoot,e=this._container,i=t.firstChild;return e&&i!==e&&t.insertBefore(e,i),this},getPathString:function(){},_createElement:function(t){return e.createElementNS(n.Path.SVG_NS,t)},_initElements:function(){this._map._initPathRoot(),this._initPath(),this._initStyle()},_initPath:function(){this._container=this._createElement("g"),this._path=this._createElement("path"),this._container.appendChild(this._path)},_initStyle:function(){this.options.stroke&&(this._path.setAttribute("stroke-linejoin","round"),this._path.setAttribute("stroke-linecap","round")),this.options.fill&&this._path.setAttribute("fill-rule","evenodd"),this._updateStyle()},_updateStyle:function(){this.options.stroke?(this._path.setAttribute("stroke",this.options.color),this._path.setAttribute("stroke-opacity",this.options.opacity),this._path.setAttribute("stroke-width",this.options.weight),this.options.dashArray?this._path.setAttribute("stroke-dasharray",this.options.dashArray):this._path.removeAttribute("stroke-dasharray")):this._path.setAttribute("stroke","none"),this.options.fill?(this._path.setAttribute("fill",this.options.fillColor||this.options.color),this._path.setAttribute("fill-opacity",this.options.fillOpacity)):this._path.setAttribute("fill","none")},_updatePath:function(){var t=this.getPathString();t||(t="M0 0"),this._path.setAttribute("d",t)},_initEvents:function(){if(this.options.clickable){(n.Browser.svg||!n.Browser.vml)&&this._path.setAttribute("class","leaflet-clickable"),n.DomEvent.on(this._container,"click",this._onMouseClick,this);for(var t=["dblclick","mousedown","mouseover","mouseout","mousemove","contextmenu"],e=0;t.length>e;e++)n.DomEvent.on(this._container,t[e],this._fireMouseEvent,this)}},_onMouseClick:function(t){this._map.dragging&&this._map.dragging.moved()||this._fireMouseEvent(t)},_fireMouseEvent:function(t){if(this.hasEventListeners(t.type)){var e=this._map,i=e.mouseEventToContainerPoint(t),o=e.containerPointToLayerPoint(i),s=e.layerPointToLatLng(o);this.fire(t.type,{latlng:s,layerPoint:o,containerPoint:i,originalEvent:t}),"contextmenu"===t.type&&n.DomEvent.preventDefault(t),"mousemove"!==t.type&&n.DomEvent.stopPropagation(t)}}}),n.Map.include({_initPathRoot:function(){this._pathRoot||(this._pathRoot=n.Path.prototype._createElement("svg"),this._panes.overlayPane.appendChild(this._pathRoot),this.options.zoomAnimation&&n.Browser.any3d?(this._pathRoot.setAttribute("class"," leaflet-zoom-animated"),this.on({zoomanim:this._animatePathZoom,zoomend:this._endPathZoom})):this._pathRoot.setAttribute("class"," leaflet-zoom-hide"),this.on("moveend",this._updateSvgViewport),this._updateSvgViewport())},_animatePathZoom:function(t){var e=this.getZoomScale(t.zoom),i=this._getCenterOffset(t.center)._multiplyBy(-e)._add(this._pathViewport.min);this._pathRoot.style[n.DomUtil.TRANSFORM]=n.DomUtil.getTranslateString(i)+" scale("+e+") ",this._pathZooming=!0},_endPathZoom:function(){this._pathZooming=!1},_updateSvgViewport:function(){if(!this._pathZooming){this._updatePathViewport();var t=this._pathViewport,e=t.min,i=t.max,o=i.x-e.x,s=i.y-e.y,a=this._pathRoot,r=this._panes.overlayPane;n.Browser.mobileWebkit&&r.removeChild(a),n.DomUtil.setPosition(a,e),a.setAttribute("width",o),a.setAttribute("height",s),a.setAttribute("viewBox",[e.x,e.y,o,s].join(" ")),n.Browser.mobileWebkit&&r.appendChild(a)}}}),n.Path.include({bindPopup:function(t,e){return(!this._popup||e)&&(this._popup=new n.Popup(e,this)),this._popup.setContent(t),this._popupHandlersAdded||(this.on("click",this._openPopup,this).on("remove",this.closePopup,this),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this._popup=null,this.off("click",this._openPopup).off("remove",this.closePopup),this._popupHandlersAdded=!1),this},openPopup:function(t){return this._popup&&(t=t||this._latlng||this._latlngs[Math.floor(this._latlngs.length/2)],this._openPopup({latlng:t})),this},closePopup:function(){return this._popup&&this._popup._close(),this},_openPopup:function(t){this._popup.setLatLng(t.latlng),this._map.openPopup(this._popup)}}),n.Browser.vml=!n.Browser.svg&&function(){try{var t=e.createElement("div");t.innerHTML='';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(n){return!1}}(),n.Path=n.Browser.svg||!n.Browser.vml?n.Path:n.Path.extend({statics:{VML:!0,CLIP_PADDING:.02},_createElement:function(){try{return e.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return e.createElement("')}}catch(t){return function(t){return e.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),_initPath:function(){var t=this._container=this._createElement("shape");n.DomUtil.addClass(t,"leaflet-vml-shape"),this.options.clickable&&n.DomUtil.addClass(t,"leaflet-clickable"),t.coordsize="1 1",this._path=this._createElement("path"),t.appendChild(this._path),this._map._pathRoot.appendChild(t)},_initStyle:function(){this._updateStyle()},_updateStyle:function(){var t=this._stroke,e=this._fill,i=this.options,n=this._container;n.stroked=i.stroke,n.filled=i.fill,i.stroke?(t||(t=this._stroke=this._createElement("stroke"),t.endcap="round",n.appendChild(t)),t.weight=i.weight+"px",t.color=i.color,t.opacity=i.opacity,t.dashStyle=i.dashArray?i.dashArray instanceof Array?i.dashArray.join(" "):i.dashArray.replace(/ *, */g," "):""):t&&(n.removeChild(t),this._stroke=null),i.fill?(e||(e=this._fill=this._createElement("fill"),n.appendChild(e)),e.color=i.fillColor||i.color,e.opacity=i.fillOpacity):e&&(n.removeChild(e),this._fill=null)},_updatePath:function(){var t=this._container.style;t.display="none",this._path.v=this.getPathString()+" ",t.display=""}}),n.Map.include(n.Browser.svg||!n.Browser.vml?{}:{_initPathRoot:function(){if(!this._pathRoot){var t=this._pathRoot=e.createElement("div");t.className="leaflet-vml-container",this._panes.overlayPane.appendChild(t),this.on("moveend",this._updatePathViewport),this._updatePathViewport()}}}),n.Browser.canvas=function(){return!!e.createElement("canvas").getContext}(),n.Path=n.Path.SVG&&!t.L_PREFER_CANVAS||!n.Browser.canvas?n.Path:n.Path.extend({statics:{CANVAS:!0,SVG:!1},redraw:function(){return this._map&&(this.projectLatlngs(),this._requestUpdate()),this},setStyle:function(t){return n.setOptions(this,t),this._map&&(this._updateStyle(),this._requestUpdate()),this},onRemove:function(t){t.off("viewreset",this.projectLatlngs,this).off("moveend",this._updatePath,this),this.options.clickable&&this._map.off("click",this._onClick,this),this._requestUpdate(),this._map=null},_requestUpdate:function(){this._map&&!n.Path._updateRequest&&(n.Path._updateRequest=n.Util.requestAnimFrame(this._fireMapMoveEnd,this._map))},_fireMapMoveEnd:function(){n.Path._updateRequest=null,this.fire("moveend")},_initElements:function(){this._map._initPathRoot(),this._ctx=this._map._canvasCtx},_updateStyle:function(){var t=this.options;t.stroke&&(this._ctx.lineWidth=t.weight,this._ctx.strokeStyle=t.color),t.fill&&(this._ctx.fillStyle=t.fillColor||t.color)},_drawPath:function(){var t,e,i,o,s,a;for(this._ctx.beginPath(),t=0,i=this._parts.length;i>t;t++){for(e=0,o=this._parts[t].length;o>e;e++)s=this._parts[t][e],a=(0===e?"move":"line")+"To",this._ctx[a](s.x,s.y);this instanceof n.Polygon&&this._ctx.closePath()}},_checkIfEmpty:function(){return!this._parts.length},_updatePath:function(){if(!this._checkIfEmpty()){var t=this._ctx,e=this.options;this._drawPath(),t.save(),this._updateStyle(),e.fill&&(t.globalAlpha=e.fillOpacity,t.fill()),e.stroke&&(t.globalAlpha=e.opacity,t.stroke()),t.restore()}},_initEvents:function(){this.options.clickable&&this._map.on("click",this._onClick,this)},_onClick:function(t){this._containsPoint(t.layerPoint)&&this.fire("click",{latlng:t.latlng,layerPoint:t.layerPoint,containerPoint:t.containerPoint,originalEvent:t})}}),n.Map.include(n.Path.SVG&&!t.L_PREFER_CANVAS||!n.Browser.canvas?{}:{_initPathRoot:function(){var t,i=this._pathRoot;i||(i=this._pathRoot=e.createElement("canvas"),i.style.position="absolute",t=this._canvasCtx=i.getContext("2d"),t.lineCap="round",t.lineJoin="round",this._panes.overlayPane.appendChild(i),this.options.zoomAnimation&&(this._pathRoot.className="leaflet-zoom-animated",this.on("zoomanim",this._animatePathZoom),this.on("zoomend",this._endPathZoom)),this.on("moveend",this._updateCanvasViewport),this._updateCanvasViewport())},_updateCanvasViewport:function(){if(!this._pathZooming){this._updatePathViewport();var t=this._pathViewport,e=t.min,i=t.max.subtract(e),o=this._pathRoot;n.DomUtil.setPosition(o,e),o.width=i.x,o.height=i.y,o.getContext("2d").translate(-e.x,-e.y)}}}),n.LineUtil={simplify:function(t,e){if(!e||!t.length)return t.slice();var i=e*e;return t=this._reducePoints(t,i),t=this._simplifyDP(t,i)},pointToSegmentDistance:function(t,e,i){return Math.sqrt(this._sqClosestPointOnSegment(t,e,i,!0))},closestPointOnSegment:function(t,e,i){return this._sqClosestPointOnSegment(t,e,i)},_simplifyDP:function(t,e){var n=t.length,o=typeof Uint8Array!=i+""?Uint8Array:Array,s=new o(n);s[0]=s[n-1]=1,this._simplifyDPStep(t,s,e,0,n-1);var a,r=[];for(a=0;n>a;a++)s[a]&&r.push(t[a]);return r},_simplifyDPStep:function(t,e,i,n,o){var s,a,r,h=0;for(a=n+1;o-1>=a;a++)r=this._sqClosestPointOnSegment(t[a],t[n],t[o],!0),r>h&&(s=a,h=r);h>i&&(e[s]=1,this._simplifyDPStep(t,e,i,n,s),this._simplifyDPStep(t,e,i,s,o))},_reducePoints:function(t,e){for(var i=[t[0]],n=1,o=0,s=t.length;s>n;n++)this._sqDist(t[n],t[o])>e&&(i.push(t[n]),o=n);return s-1>o&&i.push(t[s-1]),i},clipSegment:function(t,e,i,n){var o,s,a,r=n?this._lastCode:this._getBitCode(t,i),h=this._getBitCode(e,i);for(this._lastCode=h;;){if(!(r|h))return[t,e];if(r&h)return!1;o=r||h,s=this._getEdgeIntersection(t,e,o,i),a=this._getBitCode(s,i),o===r?(t=s,r=a):(e=s,h=a)}},_getEdgeIntersection:function(t,e,o,s){var a=e.x-t.x,r=e.y-t.y,h=s.min,l=s.max;return 8&o?new n.Point(t.x+a*(l.y-t.y)/r,l.y):4&o?new n.Point(t.x+a*(h.y-t.y)/r,h.y):2&o?new n.Point(l.x,t.y+r*(l.x-t.x)/a):1&o?new n.Point(h.x,t.y+r*(h.x-t.x)/a):i},_getBitCode:function(t,e){var i=0;return t.xe.max.x&&(i|=2),t.ye.max.y&&(i|=8),i},_sqDist:function(t,e){var i=e.x-t.x,n=e.y-t.y;return i*i+n*n},_sqClosestPointOnSegment:function(t,e,i,o){var s,a=e.x,r=e.y,h=i.x-a,l=i.y-r,u=h*h+l*l;return u>0&&(s=((t.x-a)*h+(t.y-r)*l)/u,s>1?(a=i.x,r=i.y):s>0&&(a+=h*s,r+=l*s)),h=t.x-a,l=t.y-r,o?h*h+l*l:new n.Point(a,r)}},n.Polyline=n.Path.extend({initialize:function(t,e){n.Path.prototype.initialize.call(this,e),this._latlngs=this._convertLatLngs(t)},options:{smoothFactor:1,noClip:!1},projectLatlngs:function(){this._originalPoints=[];for(var t=0,e=this._latlngs.length;e>t;t++)this._originalPoints[t]=this._map.latLngToLayerPoint(this._latlngs[t])},getPathString:function(){for(var t=0,e=this._parts.length,i="";e>t;t++)i+=this._getPathPartStr(this._parts[t]);return i},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._latlngs=this._convertLatLngs(t),this.redraw()},addLatLng:function(t){return this._latlngs.push(n.latLng(t)),this.redraw()},spliceLatLngs:function(){var t=[].splice.apply(this._latlngs,arguments); +return this._convertLatLngs(this._latlngs),this.redraw(),t},closestLayerPoint:function(t){for(var e,i,o=1/0,s=this._parts,a=null,r=0,h=s.length;h>r;r++)for(var l=s[r],u=1,c=l.length;c>u;u++){e=l[u-1],i=l[u];var _=n.LineUtil._sqClosestPointOnSegment(t,e,i,!0);o>_&&(o=_,a=n.LineUtil._sqClosestPointOnSegment(t,e,i))}return a&&(a.distance=Math.sqrt(o)),a},getBounds:function(){var t,e,i=new n.LatLngBounds,o=this.getLatLngs();for(t=0,e=o.length;e>t;t++)i.extend(o[t]);return i},_convertLatLngs:function(t){var e,i;for(e=0,i=t.length;i>e;e++){if(n.Util.isArray(t[e])&&"number"!=typeof t[e][0])return;t[e]=n.latLng(t[e])}return t},_initEvents:function(){n.Path.prototype._initEvents.call(this)},_getPathPartStr:function(t){for(var e,i=n.Path.VML,o=0,s=t.length,a="";s>o;o++)e=t[o],i&&e._round(),a+=(o?"L":"M")+e.x+" "+e.y;return a},_clipPoints:function(){var t,e,o,s=this._originalPoints,a=s.length;if(this.options.noClip)return this._parts=[s],i;this._parts=[];var r=this._parts,h=this._map._pathViewport,l=n.LineUtil;for(t=0,e=0;a-1>t;t++)o=l.clipSegment(s[t],s[t+1],h,t),o&&(r[e]=r[e]||[],r[e].push(o[0]),(o[1]!==s[t+1]||t===a-2)&&(r[e].push(o[1]),e++))},_simplifyPoints:function(){for(var t=this._parts,e=n.LineUtil,i=0,o=t.length;o>i;i++)t[i]=e.simplify(t[i],this.options.smoothFactor)},_updatePath:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),n.Path.prototype._updatePath.call(this))}}),n.polyline=function(t,e){return new n.Polyline(t,e)},n.PolyUtil={},n.PolyUtil.clipPolygon=function(t,e){var i,o,s,a,r,h,l,u,c,_=[1,4,2,8],d=n.LineUtil;for(o=0,l=t.length;l>o;o++)t[o]._code=d._getBitCode(t[o],e);for(a=0;4>a;a++){for(u=_[a],i=[],o=0,l=t.length,s=l-1;l>o;s=o++)r=t[o],h=t[s],r._code&u?h._code&u||(c=d._getEdgeIntersection(h,r,u,e),c._code=d._getBitCode(c,e),i.push(c)):(h._code&u&&(c=d._getEdgeIntersection(h,r,u,e),c._code=d._getBitCode(c,e),i.push(c)),i.push(r));t=i}return t},n.Polygon=n.Polyline.extend({options:{fill:!0},initialize:function(t,e){n.Polyline.prototype.initialize.call(this,t,e),t&&n.Util.isArray(t[0])&&"number"!=typeof t[0][0]&&(this._latlngs=this._convertLatLngs(t[0]),this._holes=t.slice(1)),t=this._latlngs,t[0].equals(t[t.length-1])&&t.pop()},projectLatlngs:function(){if(n.Polyline.prototype.projectLatlngs.call(this),this._holePoints=[],this._holes){var t,e,i,o;for(t=0,i=this._holes.length;i>t;t++)for(this._holePoints[t]=[],e=0,o=this._holes[t].length;o>e;e++)this._holePoints[t][e]=this._map.latLngToLayerPoint(this._holes[t][e])}},_clipPoints:function(){var t=this._originalPoints,e=[];if(this._parts=[t].concat(this._holePoints),!this.options.noClip){for(var i=0,o=this._parts.length;o>i;i++){var s=n.PolyUtil.clipPolygon(this._parts[i],this._map._pathViewport);s.length&&e.push(s)}this._parts=e}},_getPathPartStr:function(t){var e=n.Polyline.prototype._getPathPartStr.call(this,t);return e+(n.Browser.svg?"z":"x")}}),n.polygon=function(t,e){return new n.Polygon(t,e)},function(){function t(t){return n.FeatureGroup.extend({initialize:function(t,e){this._layers={},this._options=e,this.setLatLngs(t)},setLatLngs:function(e){var i=0,n=e.length;for(this.eachLayer(function(t){n>i?t.setLatLngs(e[i++]):this.removeLayer(t)},this);n>i;)this.addLayer(new t(e[i++],this._options));return this}})}n.MultiPolyline=t(n.Polyline),n.MultiPolygon=t(n.Polygon),n.multiPolyline=function(t,e){return new n.MultiPolyline(t,e)},n.multiPolygon=function(t,e){return new n.MultiPolygon(t,e)}}(),n.Rectangle=n.Polygon.extend({initialize:function(t,e){n.Polygon.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=n.latLngBounds(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}}),n.rectangle=function(t,e){return new n.Rectangle(t,e)},n.Circle=n.Path.extend({initialize:function(t,e,i){n.Path.prototype.initialize.call(this,i),this._latlng=n.latLng(t),this._mRadius=e},options:{fill:!0},setLatLng:function(t){return this._latlng=n.latLng(t),this.redraw()},setRadius:function(t){return this._mRadius=t,this.redraw()},projectLatlngs:function(){var t=this._getLngRadius(),e=new n.LatLng(this._latlng.lat,this._latlng.lng-t),i=this._map.latLngToLayerPoint(e);this._point=this._map.latLngToLayerPoint(this._latlng),this._radius=Math.max(Math.round(this._point.x-i.x),1)},getBounds:function(){var t=this._getLngRadius(),e=360*(this._mRadius/40075017),i=this._latlng,o=new n.LatLng(i.lat-e,i.lng-t),s=new n.LatLng(i.lat+e,i.lng+t);return new n.LatLngBounds(o,s)},getLatLng:function(){return this._latlng},getPathString:function(){var t=this._point,e=this._radius;return this._checkIfEmpty()?"":n.Browser.svg?"M"+t.x+","+(t.y-e)+"A"+e+","+e+",0,1,1,"+(t.x-.1)+","+(t.y-e)+" z":(t._round(),e=Math.round(e),"AL "+t.x+","+t.y+" "+e+","+e+" 0,"+23592600)},getRadius:function(){return this._mRadius},_getLatRadius:function(){return 360*(this._mRadius/40075017)},_getLngRadius:function(){return this._getLatRadius()/Math.cos(n.LatLng.DEG_TO_RAD*this._latlng.lat)},_checkIfEmpty:function(){if(!this._map)return!1;var t=this._map._pathViewport,e=this._radius,i=this._point;return i.x-e>t.max.x||i.y-e>t.max.y||i.x+ei;i++)for(l=this._parts[i],o=0,r=l.length,s=r-1;r>o;s=o++)if((e||0!==o)&&(h=n.LineUtil.pointToSegmentDistance(t,l[s],l[o]),u>=h))return!0;return!1}}:{}),n.Polygon.include(n.Path.CANVAS?{_containsPoint:function(t){var e,i,o,s,a,r,h,l,u=!1;if(n.Polyline.prototype._containsPoint.call(this,t,!0))return!0;for(s=0,h=this._parts.length;h>s;s++)for(e=this._parts[s],a=0,l=e.length,r=l-1;l>a;r=a++)i=e[a],o=e[r],i.y>t.y!=o.y>t.y&&t.x<(o.x-i.x)*(t.y-i.y)/(o.y-i.y)+i.x&&(u=!u);return u}}:{}),n.Circle.include(n.Path.CANVAS?{_drawPath:function(){var t=this._point;this._ctx.beginPath(),this._ctx.arc(t.x,t.y,this._radius,0,2*Math.PI,!1)},_containsPoint:function(t){var e=this._point,i=this.options.stroke?this.options.weight/2:0;return t.distanceTo(e)<=this._radius+i}}:{}),n.GeoJSON=n.FeatureGroup.extend({initialize:function(t,e){n.setOptions(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,o=n.Util.isArray(t)?t:t.features;if(o){for(e=0,i=o.length;i>e;e++)(o[e].geometries||o[e].geometry||o[e].features)&&this.addData(o[e]);return this}var s=this.options;if(!s.filter||s.filter(t)){var a=n.GeoJSON.geometryToLayer(t,s.pointToLayer);return a.feature=t,a.defaultOptions=a.options,this.resetStyle(a),s.onEachFeature&&s.onEachFeature(t,a),this.addLayer(a)}},resetStyle:function(t){var e=this.options.style;e&&(n.Util.extend(t.options,t.defaultOptions),this._setLayerStyle(t,e))},setStyle:function(t){this.eachLayer(function(e){this._setLayerStyle(e,t)},this)},_setLayerStyle:function(t,e){"function"==typeof e&&(e=e(t.feature)),t.setStyle&&t.setStyle(e)}}),n.extend(n.GeoJSON,{geometryToLayer:function(t,e){var i,o,s,a,r,h="Feature"===t.type?t.geometry:t,l=h.coordinates,u=[];switch(h.type){case"Point":return i=this.coordsToLatLng(l),e?e(t,i):new n.Marker(i);case"MultiPoint":for(s=0,a=l.length;a>s;s++)i=this.coordsToLatLng(l[s]),r=e?e(t,i):new n.Marker(i),u.push(r);return new n.FeatureGroup(u);case"LineString":return o=this.coordsToLatLngs(l),new n.Polyline(o);case"Polygon":return o=this.coordsToLatLngs(l,1),new n.Polygon(o);case"MultiLineString":return o=this.coordsToLatLngs(l,1),new n.MultiPolyline(o);case"MultiPolygon":return o=this.coordsToLatLngs(l,2),new n.MultiPolygon(o);case"GeometryCollection":for(s=0,a=h.geometries.length;a>s;s++)r=this.geometryToLayer({geometry:h.geometries[s],type:"Feature",properties:t.properties},e),u.push(r);return new n.FeatureGroup(u);default:throw Error("Invalid GeoJSON object.")}},coordsToLatLng:function(t,e){var i=parseFloat(t[e?0:1]),o=parseFloat(t[e?1:0]);return new n.LatLng(i,o)},coordsToLatLngs:function(t,e,i){var n,o,s,a=[];for(o=0,s=t.length;s>o;o++)n=e?this.coordsToLatLngs(t[o],e-1,i):this.coordsToLatLng(t[o],i),a.push(n);return a}}),n.geoJson=function(t,e){return new n.GeoJSON(t,e)},n.DomEvent={addListener:function(t,e,o,s){var a,r,h,l=n.stamp(o),u="_leaflet_"+e+l;return t[u]?this:(a=function(e){return o.call(s||t,e||n.DomEvent._getEvent())},n.Browser.msTouch&&0===e.indexOf("touch")?this.addMsTouchListener(t,e,a,l):(n.Browser.touch&&"dblclick"===e&&this.addDoubleTapListener&&this.addDoubleTapListener(t,a,l),"addEventListener"in t?"mousewheel"===e?(t.addEventListener("DOMMouseScroll",a,!1),t.addEventListener(e,a,!1)):"mouseenter"===e||"mouseleave"===e?(r=a,h="mouseenter"===e?"mouseover":"mouseout",a=function(e){return n.DomEvent._checkMouse(t,e)?r(e):i},t.addEventListener(h,a,!1)):t.addEventListener(e,a,!1):"attachEvent"in t&&t.attachEvent("on"+e,a),t[u]=a,this))},removeListener:function(t,e,i){var o=n.stamp(i),s="_leaflet_"+e+o,a=t[s];if(a)return n.Browser.msTouch&&0===e.indexOf("touch")?this.removeMsTouchListener(t,e,o):n.Browser.touch&&"dblclick"===e&&this.removeDoubleTapListener?this.removeDoubleTapListener(t,o):"removeEventListener"in t?"mousewheel"===e?(t.removeEventListener("DOMMouseScroll",a,!1),t.removeEventListener(e,a,!1)):"mouseenter"===e||"mouseleave"===e?t.removeEventListener("mouseenter"===e?"mouseover":"mouseout",a,!1):t.removeEventListener(e,a,!1):"detachEvent"in t&&t.detachEvent("on"+e,a),t[s]=null,this},stopPropagation:function(t){return t.stopPropagation?t.stopPropagation():t.cancelBubble=!0,this},disableClickPropagation:function(t){for(var e=n.DomEvent.stopPropagation,i=n.Draggable.START.length-1;i>=0;i--)n.DomEvent.addListener(t,n.Draggable.START[i],e);return n.DomEvent.addListener(t,"click",e).addListener(t,"dblclick",e)},preventDefault:function(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this},stop:function(t){return n.DomEvent.preventDefault(t).stopPropagation(t)},getMousePosition:function(t,i){var o=e.body,s=e.documentElement,a=t.pageX?t.pageX:t.clientX+o.scrollLeft+s.scrollLeft,r=t.pageY?t.pageY:t.clientY+o.scrollTop+s.scrollTop,h=new n.Point(a,r);return i?h._subtract(n.DomUtil.getViewportOffset(i)):h},getWheelDelta:function(t){var e=0;return t.wheelDelta&&(e=t.wheelDelta/120),t.detail&&(e=-t.detail/3),e},_checkMouse:function(t,e){var i=e.relatedTarget;if(!i)return!0;try{for(;i&&i!==t;)i=i.parentNode}catch(n){return!1}return i!==t},_getEvent:function(){var e=t.event;if(!e)for(var i=arguments.callee.caller;i&&(e=i.arguments[0],!e||t.Event!==e.constructor);)i=i.caller;return e}},n.DomEvent.on=n.DomEvent.addListener,n.DomEvent.off=n.DomEvent.removeListener,n.Draggable=n.Class.extend({includes:n.Mixin.Events,statics:{START:n.Browser.touch?["touchstart","mousedown"]:["mousedown"],END:{mousedown:"mouseup",touchstart:"touchend",MSPointerDown:"touchend"},MOVE:{mousedown:"mousemove",touchstart:"touchmove",MSPointerDown:"touchmove"},TAP_TOLERANCE:15},initialize:function(t,e,i){this._element=t,this._dragStartTarget=e||t,this._longPress=i&&!n.Browser.msTouch},enable:function(){if(!this._enabled){for(var t=n.Draggable.START.length-1;t>=0;t--)n.DomEvent.on(this._dragStartTarget,n.Draggable.START[t],this._onDown,this);this._enabled=!0}},disable:function(){if(this._enabled){for(var t=n.Draggable.START.length-1;t>=0;t--)n.DomEvent.off(this._dragStartTarget,n.Draggable.START[t],this._onDown,this);this._enabled=!1,this._moved=!1}},_onDown:function(t){if(!(!n.Browser.touch&&t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(n.DomEvent.preventDefault(t),n.DomEvent.stopPropagation(t),n.Draggable._disabled))){if(this._simulateClick=!0,t.touches&&t.touches.length>1)return this._simulateClick=!1,clearTimeout(this._longPressTimeout),i;var o=t.touches&&1===t.touches.length?t.touches[0]:t,s=o.target;n.Browser.touch&&"a"===s.tagName.toLowerCase()&&n.DomUtil.addClass(s,"leaflet-active"),this._moved=!1,this._moving||(this._startPoint=new n.Point(o.clientX,o.clientY),this._startPos=this._newPos=n.DomUtil.getPosition(this._element),t.touches&&1===t.touches.length&&n.Browser.touch&&this._longPress&&(this._longPressTimeout=setTimeout(n.bind(function(){var t=this._newPos&&this._newPos.distanceTo(this._startPos)||0;n.Draggable.TAP_TOLERANCE>t&&(this._simulateClick=!1,this._onUp(),this._simulateEvent("contextmenu",o))},this),1e3)),n.DomEvent.on(e,n.Draggable.MOVE[t.type],this._onMove,this),n.DomEvent.on(e,n.Draggable.END[t.type],this._onUp,this))}},_onMove:function(t){if(!(t.touches&&t.touches.length>1)){var e=t.touches&&1===t.touches.length?t.touches[0]:t,i=new n.Point(e.clientX,e.clientY),o=i.subtract(this._startPoint);(o.x||o.y)&&(n.DomEvent.preventDefault(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=n.DomUtil.getPosition(this._element).subtract(o),n.Browser.touch||(n.DomUtil.disableTextSelection(),this._setMovingCursor())),this._newPos=this._startPos.add(o),this._moving=!0,n.Util.cancelAnimFrame(this._animRequest),this._animRequest=n.Util.requestAnimFrame(this._updatePosition,this,!0,this._dragStartTarget))}},_updatePosition:function(){this.fire("predrag"),n.DomUtil.setPosition(this._element,this._newPos),this.fire("drag")},_onUp:function(t){var i;if(clearTimeout(this._longPressTimeout),this._simulateClick&&t.changedTouches){var o=t.changedTouches[0],s=o.target,a=this._newPos&&this._newPos.distanceTo(this._startPos)||0;"a"===s.tagName.toLowerCase()&&n.DomUtil.removeClass(s,"leaflet-active"),n.Draggable.TAP_TOLERANCE>a&&(i=o)}n.Browser.touch||(n.DomUtil.enableTextSelection(),this._restoreCursor());for(var r in n.Draggable.MOVE)n.Draggable.MOVE.hasOwnProperty(r)&&(n.DomEvent.off(e,n.Draggable.MOVE[r],this._onMove),n.DomEvent.off(e,n.Draggable.END[r],this._onUp));this._moved&&(n.Util.cancelAnimFrame(this._animRequest),this.fire("dragend")),this._moving=!1,i&&(this._moved=!1,this._simulateEvent("click",i))},_setMovingCursor:function(){n.DomUtil.addClass(e.body,"leaflet-dragging")},_restoreCursor:function(){n.DomUtil.removeClass(e.body,"leaflet-dragging")},_simulateEvent:function(i,n){var o=e.createEvent("MouseEvents");o.initMouseEvent(i,!0,!0,t,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),n.target.dispatchEvent(o)}}),n.Handler=n.Class.extend({initialize:function(t){this._map=t},enable:function(){this._enabled||(this._enabled=!0,this.addHooks())},disable:function(){this._enabled&&(this._enabled=!1,this.removeHooks())},enabled:function(){return!!this._enabled}}),n.Map.mergeOptions({dragging:!0,inertia:!n.Browser.android23,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,inertiaThreshold:n.Browser.touch?32:18,easeLinearity:.25,longPress:!0,worldCopyJump:!1}),n.Map.Drag=n.Handler.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new n.Draggable(t._mapPane,t._container,t.options.longPress),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDrag,this),t.on("viewreset",this._onViewReset,this))}this._draggable.enable()},removeHooks:function(){this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){var t=this._map;t._panAnim&&t._panAnim.stop(),t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(){if(this._map.options.inertia){var t=this._lastTime=+new Date,e=this._lastPos=this._draggable._newPos;this._positions.push(e),this._times.push(t),t-this._times[0]>200&&(this._positions.shift(),this._times.shift())}this._map.fire("move").fire("drag")},_onViewReset:function(){var t=this._map.getSize()._divideBy(2),e=this._map.latLngToLayerPoint(new n.LatLng(0,0));this._initialWorldOffset=e.subtract(t).x,this._worldWidth=this._map.project(new n.LatLng(0,180)).x},_onPreDrag:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-e+i)%t+e-i,s=(n+e+i)%t-e-i,a=Math.abs(o+i)e.inertiaThreshold||!this._positions[0];if(o)t.fire("moveend");else{var s=this._lastPos.subtract(this._positions[0]),a=(this._lastTime+i-this._times[0])/1e3,r=e.easeLinearity,h=s.multiplyBy(r/a),l=h.distanceTo(new n.Point(0,0)),u=Math.min(e.inertiaMaxSpeed,l),c=h.multiplyBy(u/l),_=u/(e.inertiaDeceleration*r),d=c.multiplyBy(-_/2).round();n.Util.requestAnimFrame(function(){t.panBy(d,_,r)})}t.fire("dragend"),e.maxBounds&&n.Util.requestAnimFrame(this._panInsideMaxBounds,t,!0,t._container)},_panInsideMaxBounds:function(){this.panInsideBounds(this.options.maxBounds)}}),n.Map.addInitHook("addHandler","dragging",n.Map.Drag),n.Map.mergeOptions({doubleClickZoom:!0}),n.Map.DoubleClickZoom=n.Handler.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick)},_onDoubleClick:function(t){this.setView(t.latlng,this._zoom+1)}}),n.Map.addInitHook("addHandler","doubleClickZoom",n.Map.DoubleClickZoom),n.Map.mergeOptions({scrollWheelZoom:!0}),n.Map.ScrollWheelZoom=n.Handler.extend({addHooks:function(){n.DomEvent.on(this._map._container,"mousewheel",this._onWheelScroll,this),this._delta=0},removeHooks:function(){n.DomEvent.off(this._map._container,"mousewheel",this._onWheelScroll)},_onWheelScroll:function(t){var e=n.DomEvent.getWheelDelta(t);this._delta+=e,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var i=Math.max(40-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(n.bind(this._performZoom,this),i),n.DomEvent.preventDefault(t),n.DomEvent.stopPropagation(t)},_performZoom:function(){var t=this._map,e=this._delta,i=t.getZoom();if(e=e>0?Math.ceil(e):Math.round(e),e=Math.max(Math.min(e,4),-4),e=t._limitZoom(i+e)-i,this._delta=0,this._startTime=null,e){var n=i+e,o=this._getCenterForScrollWheelZoom(n);t.setView(o,n)}},_getCenterForScrollWheelZoom:function(t){var e=this._map,i=e.getZoomScale(t),n=e.getSize()._divideBy(2),o=this._lastMousePos._subtract(n)._multiplyBy(1-1/i),s=e._getTopLeftPoint()._add(n)._add(o);return e.unproject(s)}}),n.Map.addInitHook("addHandler","scrollWheelZoom",n.Map.ScrollWheelZoom),n.extend(n.DomEvent,{_touchstart:n.Browser.msTouch?"MSPointerDown":"touchstart",_touchend:n.Browser.msTouch?"MSPointerUp":"touchend",addDoubleTapListener:function(t,i,o){function s(t){var e;if(n.Browser.msTouch?(p.push(t.pointerId),e=p.length):e=t.touches.length,!(e>1)){var i=Date.now(),o=i-(r||i);h=t.touches?t.touches[0]:t,l=o>0&&u>=o,r=i}}function a(t){if(n.Browser.msTouch){var e=p.indexOf(t.pointerId);if(-1===e)return;p.splice(e,1)}if(l){if(n.Browser.msTouch){var o,s={};for(var a in h)o=h[a],s[a]="function"==typeof o?o.bind(h):o;h=s}h.type="dblclick",i(h),r=null}}var r,h,l=!1,u=250,c="_leaflet_",_=this._touchstart,d=this._touchend,p=[];t[c+_+o]=s,t[c+d+o]=a;var m=n.Browser.msTouch?e.documentElement:t;return t.addEventListener(_,s,!1),m.addEventListener(d,a,!1),n.Browser.msTouch&&m.addEventListener("MSPointerCancel",a,!1),this},removeDoubleTapListener:function(t,i){var o="_leaflet_";return t.removeEventListener(this._touchstart,t[o+this._touchstart+i],!1),(n.Browser.msTouch?e.documentElement:t).removeEventListener(this._touchend,t[o+this._touchend+i],!1),n.Browser.msTouch&&e.documentElement.removeEventListener("MSPointerCancel",t[o+this._touchend+i],!1),this}}),n.extend(n.DomEvent,{_msTouches:[],_msDocumentListener:!1,addMsTouchListener:function(t,e,i,n){switch(e){case"touchstart":return this.addMsTouchListenerStart(t,e,i,n);case"touchend":return this.addMsTouchListenerEnd(t,e,i,n);case"touchmove":return this.addMsTouchListenerMove(t,e,i,n);default:throw"Unknown touch event type"}},addMsTouchListenerStart:function(t,i,n,o){var s="_leaflet_",a=this._msTouches,r=function(t){for(var e=!1,i=0;a.length>i;i++)if(a[i].pointerId===t.pointerId){e=!0;break}e||a.push(t),t.touches=a.slice(),t.changedTouches=[t],n(t)};if(t[s+"touchstart"+o]=r,t.addEventListener("MSPointerDown",r,!1),!this._msDocumentListener){var h=function(t){for(var e=0;a.length>e;e++)if(a[e].pointerId===t.pointerId){a.splice(e,1);break}};e.documentElement.addEventListener("MSPointerUp",h,!1),e.documentElement.addEventListener("MSPointerCancel",h,!1),this._msDocumentListener=!0}return this},addMsTouchListenerMove:function(t,e,i,n){function o(t){if(t.pointerType!==t.MSPOINTER_TYPE_MOUSE||0!==t.buttons){for(var e=0;a.length>e;e++)if(a[e].pointerId===t.pointerId){a[e]=t;break}t.touches=a.slice(),t.changedTouches=[t],i(t)}}var s="_leaflet_",a=this._msTouches;return t[s+"touchmove"+n]=o,t.addEventListener("MSPointerMove",o,!1),this},addMsTouchListenerEnd:function(t,e,i,n){var o="_leaflet_",s=this._msTouches,a=function(t){for(var e=0;s.length>e;e++)if(s[e].pointerId===t.pointerId){s.splice(e,1);break}t.touches=s.slice(),t.changedTouches=[t],i(t)};return t[o+"touchend"+n]=a,t.addEventListener("MSPointerUp",a,!1),t.addEventListener("MSPointerCancel",a,!1),this},removeMsTouchListener:function(t,e,i){var n="_leaflet_",o=t[n+e+i];switch(e){case"touchstart":t.removeEventListener("MSPointerDown",o,!1);break;case"touchmove":t.removeEventListener("MSPointerMove",o,!1);break;case"touchend":t.removeEventListener("MSPointerUp",o,!1),t.removeEventListener("MSPointerCancel",o,!1)}return this}}),n.Map.mergeOptions({touchZoom:n.Browser.touch&&!n.Browser.android23}),n.Map.TouchZoom=n.Handler.extend({addHooks:function(){n.DomEvent.on(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){n.DomEvent.off(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var o=i.mouseEventToLayerPoint(t.touches[0]),s=i.mouseEventToLayerPoint(t.touches[1]),a=i._getCenterLayerPoint();this._startCenter=o.add(s)._divideBy(2),this._startDist=o.distanceTo(s),this._moved=!1,this._zooming=!0,this._centerOffset=a.subtract(this._startCenter),i._panAnim&&i._panAnim.stop(),n.DomEvent.on(e,"touchmove",this._onTouchMove,this).on(e,"touchend",this._onTouchEnd,this),n.DomEvent.preventDefault(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length){var e=this._map,i=e.mouseEventToLayerPoint(t.touches[0]),o=e.mouseEventToLayerPoint(t.touches[1]);this._scale=i.distanceTo(o)/this._startDist,this._delta=i._add(o)._divideBy(2)._subtract(this._startCenter),1!==this._scale&&(this._moved||(n.DomUtil.addClass(e._mapPane,"leaflet-zoom-anim leaflet-touching"),e.fire("movestart").fire("zoomstart")._prepareTileBg(),this._moved=!0),n.Util.cancelAnimFrame(this._animRequest),this._animRequest=n.Util.requestAnimFrame(this._updateOnMove,this,!0,this._map._container),n.DomEvent.preventDefault(t))}},_updateOnMove:function(){var t=this._map,e=this._getScaleOrigin(),i=t.layerPointToLatLng(e);t.fire("zoomanim",{center:i,zoom:t.getScaleZoom(this._scale)}),t._tileBg.style[n.DomUtil.TRANSFORM]=n.DomUtil.getTranslateString(this._delta)+" "+n.DomUtil.getScaleString(this._scale,this._startCenter)},_onTouchEnd:function(){if(this._moved&&this._zooming){var t=this._map;this._zooming=!1,n.DomUtil.removeClass(t._mapPane,"leaflet-touching"),n.DomEvent.off(e,"touchmove",this._onTouchMove).off(e,"touchend",this._onTouchEnd);var i=this._getScaleOrigin(),o=t.layerPointToLatLng(i),s=t.getZoom(),a=t.getScaleZoom(this._scale)-s,r=a>0?Math.ceil(a):Math.floor(a),h=t._limitZoom(s+r);t.fire("zoomanim",{center:o,zoom:h}),t._runAnimation(o,h,t.getZoomScale(h)/this._scale,i,!0)}},_getScaleOrigin:function(){var t=this._centerOffset.subtract(this._delta).divideBy(this._scale);return this._startCenter.add(t)}}),n.Map.addInitHook("addHandler","touchZoom",n.Map.TouchZoom),n.Map.mergeOptions({boxZoom:!0}),n.Map.BoxZoom=n.Handler.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane},addHooks:function(){n.DomEvent.on(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){n.DomEvent.off(this._container,"mousedown",this._onMouseDown)},_onMouseDown:function(t){return!t.shiftKey||1!==t.which&&1!==t.button?!1:(n.DomUtil.disableTextSelection(),this._startLayerPoint=this._map.mouseEventToLayerPoint(t),this._box=n.DomUtil.create("div","leaflet-zoom-box",this._pane),n.DomUtil.setPosition(this._box,this._startLayerPoint),this._container.style.cursor="crosshair",n.DomEvent.on(e,"mousemove",this._onMouseMove,this).on(e,"mouseup",this._onMouseUp,this).preventDefault(t),this._map.fire("boxzoomstart"),i)},_onMouseMove:function(t){var e=this._startLayerPoint,i=this._box,o=this._map.mouseEventToLayerPoint(t),s=o.subtract(e),a=new n.Point(Math.min(o.x,e.x),Math.min(o.y,e.y));n.DomUtil.setPosition(i,a),i.style.width=Math.max(0,Math.abs(s.x)-4)+"px",i.style.height=Math.max(0,Math.abs(s.y)-4)+"px"},_onMouseUp:function(t){this._pane.removeChild(this._box),this._container.style.cursor="",n.DomUtil.enableTextSelection(),n.DomEvent.off(e,"mousemove",this._onMouseMove).off(e,"mouseup",this._onMouseUp);var i=this._map,o=i.mouseEventToLayerPoint(t);if(!this._startLayerPoint.equals(o)){var s=new n.LatLngBounds(i.layerPointToLatLng(this._startLayerPoint),i.layerPointToLatLng(o));i.fitBounds(s),i.fire("boxzoomend",{boxZoomBounds:s})}}}),n.Map.addInitHook("addHandler","boxZoom",n.Map.BoxZoom),n.Map.mergeOptions({keyboard:!0,keyboardPanOffset:80,keyboardZoomOffset:1}),n.Map.Keyboard=n.Handler.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61],zoomOut:[189,109,173]},initialize:function(t){this._map=t,this._setPanOffset(t.options.keyboardPanOffset),this._setZoomOffset(t.options.keyboardZoomOffset)},addHooks:function(){var t=this._map._container;-1===t.tabIndex&&(t.tabIndex="0"),n.DomEvent.on(t,"focus",this._onFocus,this).on(t,"blur",this._onBlur,this).on(t,"mousedown",this._onMouseDown,this),this._map.on("focus",this._addHooks,this).on("blur",this._removeHooks,this)},removeHooks:function(){this._removeHooks();var t=this._map._container;n.DomEvent.off(t,"focus",this._onFocus,this).off(t,"blur",this._onBlur,this).off(t,"mousedown",this._onMouseDown,this),this._map.off("focus",this._addHooks,this).off("blur",this._removeHooks,this)},_onMouseDown:function(){this._focused||this._map._container.focus()},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanOffset:function(t){var e,i,n=this._panKeys={},o=this.keyCodes;for(e=0,i=o.left.length;i>e;e++)n[o.left[e]]=[-1*t,0];for(e=0,i=o.right.length;i>e;e++)n[o.right[e]]=[t,0];for(e=0,i=o.down.length;i>e;e++)n[o.down[e]]=[0,t];for(e=0,i=o.up.length;i>e;e++)n[o.up[e]]=[0,-1*t]},_setZoomOffset:function(t){var e,i,n=this._zoomKeys={},o=this.keyCodes;for(e=0,i=o.zoomIn.length;i>e;e++)n[o.zoomIn[e]]=t;for(e=0,i=o.zoomOut.length;i>e;e++)n[o.zoomOut[e]]=-t},_addHooks:function(){n.DomEvent.on(e,"keydown",this._onKeyDown,this)},_removeHooks:function(){n.DomEvent.off(e,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){var e=t.keyCode,i=this._map;if(this._panKeys.hasOwnProperty(e))i.panBy(this._panKeys[e]),i.options.maxBounds&&i.panInsideBounds(i.options.maxBounds);else{if(!this._zoomKeys.hasOwnProperty(e))return;i.setZoom(i.getZoom()+this._zoomKeys[e])}n.DomEvent.stop(t)}}),n.Map.addInitHook("addHandler","keyboard",n.Map.Keyboard),n.Handler.MarkerDrag=n.Handler.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new n.Draggable(t,t).on("dragstart",this._onDragStart,this).on("drag",this._onDrag,this).on("dragend",this._onDragEnd,this)),this._draggable.enable()},removeHooks:function(){this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){this._marker.closePopup().fire("movestart").fire("dragstart")},_onDrag:function(){var t=this._marker,e=t._shadow,i=n.DomUtil.getPosition(t._icon),o=t._map.layerPointToLatLng(i);e&&n.DomUtil.setPosition(e,i),t._latlng=o,t.fire("move",{latlng:o}).fire("drag")},_onDragEnd:function(){this._marker.fire("moveend").fire("dragend")}}),n.Handler.PolyEdit=n.Handler.extend({options:{icon:new n.DivIcon({iconSize:new n.Point(8,8),className:"leaflet-div-icon leaflet-editing-icon"})},initialize:function(t,e){this._poly=t,n.setOptions(this,e)},addHooks:function(){this._poly._map&&(this._markerGroup||this._initMarkers(),this._poly._map.addLayer(this._markerGroup))},removeHooks:function(){this._poly._map&&(this._poly._map.removeLayer(this._markerGroup),delete this._markerGroup,delete this._markers)},updateMarkers:function(){this._markerGroup.clearLayers(),this._initMarkers()},_initMarkers:function(){this._markerGroup||(this._markerGroup=new n.LayerGroup),this._markers=[];var t,e,i,o,s=this._poly._latlngs;for(t=0,i=s.length;i>t;t++)o=this._createMarker(s[t],t),o.on("click",this._onMarkerClick,this),this._markers.push(o);var a,r;for(t=0,e=i-1;i>t;e=t++)(0!==t||n.Polygon&&this._poly instanceof n.Polygon)&&(a=this._markers[e],r=this._markers[t],this._createMiddleMarker(a,r),this._updatePrevNext(a,r))},_createMarker:function(t,e){var i=new n.Marker(t,{draggable:!0,icon:this.options.icon});return i._origLatLng=t,i._index=e,i.on("drag",this._onMarkerDrag,this),i.on("dragend",this._fireEdit,this),this._markerGroup.addLayer(i),i},_fireEdit:function(){this._poly.fire("edit")},_onMarkerDrag:function(t){var e=t.target;n.extend(e._origLatLng,e._latlng),e._middleLeft&&e._middleLeft.setLatLng(this._getMiddleLatLng(e._prev,e)),e._middleRight&&e._middleRight.setLatLng(this._getMiddleLatLng(e,e._next)),this._poly.redraw()},_onMarkerClick:function(t){if(!(3>this._poly._latlngs.length)){var e=t.target,i=e._index;this._markerGroup.removeLayer(e),this._markers.splice(i,1),this._poly.spliceLatLngs(i,1),this._updateIndexes(i,-1),this._updatePrevNext(e._prev,e._next),e._middleLeft&&this._markerGroup.removeLayer(e._middleLeft),e._middleRight&&this._markerGroup.removeLayer(e._middleRight),e._prev&&e._next?this._createMiddleMarker(e._prev,e._next):e._prev?e._next||(e._prev._middleRight=null):e._next._middleLeft=null,this._poly.fire("edit")}},_updateIndexes:function(t,e){this._markerGroup.eachLayer(function(i){i._index>t&&(i._index+=e)})},_createMiddleMarker:function(t,e){var i,n,o,s=this._getMiddleLatLng(t,e),a=this._createMarker(s);a.setOpacity(.6),t._middleRight=e._middleLeft=a,n=function(){var n=e._index;a._index=n,a.off("click",i).on("click",this._onMarkerClick,this),s.lat=a.getLatLng().lat,s.lng=a.getLatLng().lng,this._poly.spliceLatLngs(n,0,s),this._markers.splice(n,0,a),a.setOpacity(1),this._updateIndexes(n,1),e._index++,this._updatePrevNext(t,a),this._updatePrevNext(a,e)},o=function(){a.off("dragstart",n,this),a.off("dragend",o,this),this._createMiddleMarker(t,a),this._createMiddleMarker(a,e)},i=function(){n.call(this),o.call(this),this._poly.fire("edit")},a.on("click",i,this).on("dragstart",n,this).on("dragend",o,this),this._markerGroup.addLayer(a)},_updatePrevNext:function(t,e){t&&(t._next=e),e&&(e._prev=t)},_getMiddleLatLng:function(t,e){var i=this._poly._map,n=i.latLngToLayerPoint(t.getLatLng()),o=i.latLngToLayerPoint(e.getLatLng());return i.layerPointToLatLng(n._add(o)._divideBy(2))}}),n.Polyline.addInitHook(function(){n.Handler.PolyEdit&&(this.editing=new n.Handler.PolyEdit(this),this.options.editable&&this.editing.enable()),this.on("add",function(){this.editing&&this.editing.enabled()&&this.editing.addHooks()}),this.on("remove",function(){this.editing&&this.editing.enabled()&&this.editing.removeHooks() +})}),n.Control=n.Class.extend({options:{position:"topright"},initialize:function(t){n.setOptions(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},addTo:function(t){this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),o=t._controlCorners[i];return n.DomUtil.addClass(e,"leaflet-control"),-1!==i.indexOf("bottom")?o.insertBefore(e,o.firstChild):o.appendChild(e),this},removeFrom:function(t){var e=this.getPosition(),i=t._controlCorners[e];return i.removeChild(this._container),this._map=null,this.onRemove&&this.onRemove(t),this}}),n.control=function(t){return new n.Control(t)},n.Map.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.removeFrom(this),this},_initControlPos:function(){function t(t,s){var a=i+t+" "+i+s;e[t+s]=n.DomUtil.create("div",a,o)}var e=this._controlCorners={},i="leaflet-",o=this._controlContainer=n.DomUtil.create("div",i+"control-container",this._container);t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")}}),n.Control.Zoom=n.Control.extend({options:{position:"topleft"},onAdd:function(t){var e="leaflet-control-zoom",i="leaflet-bar",o=i+"-part",s=n.DomUtil.create("div",e+" "+i);return this._map=t,this._zoomInButton=this._createButton("+","Zoom in",e+"-in "+o+" "+o+"-top",s,this._zoomIn,this),this._zoomOutButton=this._createButton("-","Zoom out",e+"-out "+o+" "+o+"-bottom",s,this._zoomOut,this),t.on("zoomend",this._updateDisabled,this),s},onRemove:function(t){t.off("zoomend",this._updateDisabled,this)},_zoomIn:function(t){this._map.zoomIn(t.shiftKey?3:1)},_zoomOut:function(t){this._map.zoomOut(t.shiftKey?3:1)},_createButton:function(t,e,i,o,s,a){var r=n.DomUtil.create("a",i,o);r.innerHTML=t,r.href="#",r.title=e;var h=n.DomEvent.stopPropagation;return n.DomEvent.on(r,"click",h).on(r,"mousedown",h).on(r,"dblclick",h).on(r,"click",n.DomEvent.preventDefault).on(r,"click",s,a),r},_updateDisabled:function(){var t=this._map,e="leaflet-control-zoom-disabled";n.DomUtil.removeClass(this._zoomInButton,e),n.DomUtil.removeClass(this._zoomOutButton,e),t._zoom===t.getMinZoom()&&n.DomUtil.addClass(this._zoomOutButton,e),t._zoom===t.getMaxZoom()&&n.DomUtil.addClass(this._zoomInButton,e)}}),n.Map.mergeOptions({zoomControl:!0}),n.Map.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new n.Control.Zoom,this.addControl(this.zoomControl))}),n.control.zoom=function(t){return new n.Control.Zoom(t)},n.Control.Attribution=n.Control.extend({options:{position:"bottomright",prefix:'Powered by Leaflet'},initialize:function(t){n.setOptions(this,t),this._attributions={}},onAdd:function(t){return this._container=n.DomUtil.create("div","leaflet-control-attribution"),n.DomEvent.disableClickPropagation(this._container),t.on("layeradd",this._onLayerAdd,this).on("layerremove",this._onLayerRemove,this),this._update(),this._container},onRemove:function(t){t.off("layeradd",this._onLayerAdd).off("layerremove",this._onLayerRemove)},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):i},removeAttribution:function(t){return t?(this._attributions[t]--,this._update(),this):i},_update:function(){if(this._map){var t=[];for(var e in this._attributions)this._attributions.hasOwnProperty(e)&&this._attributions[e]&&t.push(e);var i=[];this.options.prefix&&i.push(this.options.prefix),t.length&&i.push(t.join(", ")),this._container.innerHTML=i.join(" — ")}},_onLayerAdd:function(t){t.layer.getAttribution&&this.addAttribution(t.layer.getAttribution())},_onLayerRemove:function(t){t.layer.getAttribution&&this.removeAttribution(t.layer.getAttribution())}}),n.Map.mergeOptions({attributionControl:!0}),n.Map.addInitHook(function(){this.options.attributionControl&&(this.attributionControl=(new n.Control.Attribution).addTo(this))}),n.control.attribution=function(t){return new n.Control.Attribution(t)},n.Control.Scale=n.Control.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0,updateWhenIdle:!1},onAdd:function(t){this._map=t;var e="leaflet-control-scale",i=n.DomUtil.create("div",e),o=this.options;return this._addScales(o,e,i),t.on(o.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=n.DomUtil.create("div",e+"-line",i)),t.imperial&&(this._iScale=n.DomUtil.create("div",e+"-line",i))},_update:function(){var t=this._map.getBounds(),e=t.getCenter().lat,i=6378137*Math.PI*Math.cos(e*Math.PI/180),n=i*(t.getNorthEast().lng-t.getSouthWest().lng)/180,o=this._map.getSize(),s=this.options,a=0;o.x>0&&(a=n*(s.maxWidth/o.x)),this._updateScales(s,a)},_updateScales:function(t,e){t.metric&&e&&this._updateMetric(e),t.imperial&&e&&this._updateImperial(e)},_updateMetric:function(t){var e=this._getRoundNum(t);this._mScale.style.width=this._getScaleWidth(e/t)+"px",this._mScale.innerHTML=1e3>e?e+" m":e/1e3+" km"},_updateImperial:function(t){var e,i,n,o=3.2808399*t,s=this._iScale;o>5280?(e=o/5280,i=this._getRoundNum(e),s.style.width=this._getScaleWidth(i/e)+"px",s.innerHTML=i+" mi"):(n=this._getRoundNum(o),s.style.width=this._getScaleWidth(n/o)+"px",s.innerHTML=n+" ft")},_getScaleWidth:function(t){return Math.round(this.options.maxWidth*t)-10},_getRoundNum:function(t){var e=Math.pow(10,(Math.floor(t)+"").length-1),i=t/e;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:1,e*i}}),n.control.scale=function(t){return new n.Control.Scale(t)},n.Control.Layers=n.Control.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0},initialize:function(t,e,i){n.setOptions(this,i),this._layers={},this._lastZIndex=0,this._handlingClick=!1;for(var o in t)t.hasOwnProperty(o)&&this._addLayer(t[o],o);for(o in e)e.hasOwnProperty(o)&&this._addLayer(e[o],o,!0)},onAdd:function(t){return this._initLayout(),this._update(),t.on("layeradd",this._onLayerChange,this).on("layerremove",this._onLayerChange,this),this._container},onRemove:function(t){t.off("layeradd",this._onLayerChange).off("layerremove",this._onLayerChange)},addBaseLayer:function(t,e){return this._addLayer(t,e),this._update(),this},addOverlay:function(t,e){return this._addLayer(t,e,!0),this._update(),this},removeLayer:function(t){var e=n.stamp(t);return delete this._layers[e],this._update(),this},_initLayout:function(){var t="leaflet-control-layers",e=this._container=n.DomUtil.create("div",t);n.Browser.touch?n.DomEvent.on(e,"click",n.DomEvent.stopPropagation):(n.DomEvent.disableClickPropagation(e),n.DomEvent.on(e,"mousewheel",n.DomEvent.stopPropagation));var i=this._form=n.DomUtil.create("form",t+"-list");if(this.options.collapsed){n.DomEvent.on(e,"mouseover",this._expand,this).on(e,"mouseout",this._collapse,this);var o=this._layersLink=n.DomUtil.create("a",t+"-toggle",e);o.href="#",o.title="Layers",n.Browser.touch?n.DomEvent.on(o,"click",n.DomEvent.stopPropagation).on(o,"click",n.DomEvent.preventDefault).on(o,"click",this._expand,this):n.DomEvent.on(o,"focus",this._expand,this),this._map.on("movestart",this._collapse,this)}else this._expand();this._baseLayersList=n.DomUtil.create("div",t+"-base",i),this._separator=n.DomUtil.create("div",t+"-separator",i),this._overlaysList=n.DomUtil.create("div",t+"-overlays",i),e.appendChild(i)},_addLayer:function(t,e,i){var o=n.stamp(t);this._layers[o]={layer:t,name:e,overlay:i},this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex))},_update:function(){if(this._container){this._baseLayersList.innerHTML="",this._overlaysList.innerHTML="";var t=!1,e=!1;for(var i in this._layers)if(this._layers.hasOwnProperty(i)){var n=this._layers[i];this._addItem(n),e=e||n.overlay,t=t||!n.overlay}this._separator.style.display=e&&t?"":"none"}},_onLayerChange:function(t){var e=n.stamp(t.layer);this._layers[e]&&!this._handlingClick&&this._update()},_createRadioElement:function(t,i){var n='t;t++)e=o[t],i=this._layers[e.layerId],e.checked&&!this._map.hasLayer(i.layer)?(this._map.addLayer(i.layer),i.overlay?this._map.fire("overlayadd",{layer:i}):n=i.layer):!e.checked&&this._map.hasLayer(i.layer)&&(this._map.removeLayer(i.layer),this._map.fire("overlayremove",{layer:i}));n&&(this._map.setZoom(this._map.getZoom()),this._map.fire("baselayerchange",{layer:n})),this._handlingClick=!1},_expand:function(){n.DomUtil.addClass(this._container,"leaflet-control-layers-expanded")},_collapse:function(){this._container.className=this._container.className.replace(" leaflet-control-layers-expanded","")}}),n.control.layers=function(t,e,i){return new n.Control.Layers(t,e,i)},n.PosAnimation=n.Class.extend({includes:n.Mixin.Events,run:function(t,e,i,o){this.stop(),this._el=t,this._inProgress=!0,this.fire("start"),t.style[n.DomUtil.TRANSITION]="all "+(i||.25)+"s cubic-bezier(0,0,"+(o||.5)+",1)",n.DomEvent.on(t,n.DomUtil.TRANSITION_END,this._onTransitionEnd,this),n.DomUtil.setPosition(t,e),n.Util.falseFn(t.offsetWidth),this._stepTimer=setInterval(n.bind(this.fire,this,"step"),50)},stop:function(){this._inProgress&&(n.DomUtil.setPosition(this._el,this._getPos()),this._onTransitionEnd(),n.Util.falseFn(this._el.offsetWidth))},_transformRe:/(-?[\d\.]+), (-?[\d\.]+)\)/,_getPos:function(){var e,i,o,s=this._el,a=t.getComputedStyle(s);return n.Browser.any3d?(o=a[n.DomUtil.TRANSFORM].match(this._transformRe),e=parseFloat(o[1]),i=parseFloat(o[2])):(e=parseFloat(a.left),i=parseFloat(a.top)),new n.Point(e,i,!0)},_onTransitionEnd:function(){n.DomEvent.off(this._el,n.DomUtil.TRANSITION_END,this._onTransitionEnd,this),this._inProgress&&(this._inProgress=!1,this._el.style[n.DomUtil.TRANSITION]="",clearInterval(this._stepTimer),this.fire("step").fire("end"))}}),n.Map.include({setView:function(t,e,i){e=this._limitZoom(e);var n=this._zoom!==e;if(this._loaded&&!i&&this._layers){this._panAnim&&this._panAnim.stop();var o=n?this._zoomToIfClose&&this._zoomToIfClose(t,e):this._panByIfClose(t);if(o)return clearTimeout(this._sizeTimer),this}return this._resetView(t,e),this},panBy:function(t,e,i){if(t=n.point(t),!t.x&&!t.y)return this;this._panAnim||(this._panAnim=new n.PosAnimation,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),this.fire("movestart"),n.DomUtil.addClass(this._mapPane,"leaflet-pan-anim");var o=n.DomUtil.getPosition(this._mapPane).subtract(t)._round();return this._panAnim.run(this._mapPane,o,e||.25,i),this},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){n.DomUtil.removeClass(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_panByIfClose:function(t){var e=this._getCenterOffset(t)._floor();return this._offsetIsWithinView(e)?(this.panBy(e),!0):!1},_offsetIsWithinView:function(t,e){var i=e||1,n=this.getSize();return Math.abs(t.x)<=n.x*i&&Math.abs(t.y)<=n.y*i}}),n.PosAnimation=n.DomUtil.TRANSITION?n.PosAnimation:n.PosAnimation.extend({run:function(t,e,i,o){this.stop(),this._el=t,this._inProgress=!0,this._duration=i||.25,this._easeOutPower=1/Math.max(o||.5,.2),this._startPos=n.DomUtil.getPosition(t),this._offset=e.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(),this._complete())},_animate:function(){this._animId=n.Util.requestAnimFrame(this._animate,this),this._step()},_step:function(){var t=+new Date-this._startTime,e=1e3*this._duration;e>t?this._runFrame(this._easeOut(t/e)):(this._runFrame(1),this._complete())},_runFrame:function(t){var e=this._startPos.add(this._offset.multiplyBy(t));n.DomUtil.setPosition(this._el,e),this.fire("step")},_complete:function(){n.Util.cancelAnimFrame(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),n.Map.mergeOptions({zoomAnimation:n.DomUtil.TRANSITION&&!n.Browser.android23&&!n.Browser.mobileOpera}),n.DomUtil.TRANSITION&&n.Map.addInitHook(function(){n.DomEvent.on(this._mapPane,n.DomUtil.TRANSITION_END,this._catchTransitionEnd,this)}),n.Map.include(n.DomUtil.TRANSITION?{_zoomToIfClose:function(t,e){if(this._animatingZoom)return!0;if(!this.options.zoomAnimation)return!1;var i=this.getZoomScale(e),o=this._getCenterOffset(t)._divideBy(1-1/i);if(!this._offsetIsWithinView(o,1))return!1;n.DomUtil.addClass(this._mapPane,"leaflet-zoom-anim"),this.fire("movestart").fire("zoomstart"),this.fire("zoomanim",{center:t,zoom:e});var s=this._getCenterLayerPoint().add(o);return this._prepareTileBg(),this._runAnimation(t,e,i,s),!0},_catchTransitionEnd:function(){this._animatingZoom&&this._onZoomTransitionEnd()},_runAnimation:function(t,e,i,o,s){this._animateToCenter=t,this._animateToZoom=e,this._animatingZoom=!0,n.Draggable&&(n.Draggable._disabled=!0);var a=n.DomUtil.TRANSFORM,r=this._tileBg;clearTimeout(this._clearTileBgTimer),n.Util.falseFn(r.offsetWidth);var h=n.DomUtil.getScaleString(i,o),l=r.style[a];r.style[a]=s?l+" "+h:h+" "+l},_prepareTileBg:function(){var t=this._tilePane,e=this._tileBg;if(e&&this._getLoadedTilesPercentage(e)>.5&&.5>this._getLoadedTilesPercentage(t))return t.style.visibility="hidden",t.empty=!0,this._stopLoadingImages(t),i;e||(e=this._tileBg=this._createPane("leaflet-tile-pane",this._mapPane),e.style.zIndex=1),e.style[n.DomUtil.TRANSFORM]="",e.style.visibility="hidden",e.empty=!0,t.empty=!1,this._tilePane=this._panes.tilePane=e;var o=this._tileBg=t;n.DomUtil.addClass(o,"leaflet-zoom-animated"),this._stopLoadingImages(o)},_getLoadedTilesPercentage:function(t){var e,i,n=t.getElementsByTagName("img"),o=0;for(e=0,i=n.length;i>e;e++)n[e].complete&&o++;return o/i},_stopLoadingImages:function(t){var e,i,o,s=Array.prototype.slice.call(t.getElementsByTagName("img"));for(e=0,i=s.length;i>e;e++)o=s[e],o.complete||(o.onload=n.Util.falseFn,o.onerror=n.Util.falseFn,o.src=n.Util.emptyImageUrl,o.parentNode.removeChild(o))},_onZoomTransitionEnd:function(){this._restoreTileFront(),n.DomUtil.removeClass(this._mapPane,"leaflet-zoom-anim"),n.Util.falseFn(this._tileBg.offsetWidth),this._animatingZoom=!1,this._resetView(this._animateToCenter,this._animateToZoom,!0,!0),n.Draggable&&(n.Draggable._disabled=!1)},_restoreTileFront:function(){this._tilePane.innerHTML="",this._tilePane.style.visibility="",this._tilePane.style.zIndex=2,this._tileBg.style.zIndex=1},_clearTileBg:function(){this._animatingZoom||this.touchZoom._zooming||(this._tileBg.innerHTML="")}}:{}),n.Map.include({_defaultLocateOptions:{watch:!1,setView:!1,maxZoom:1/0,timeout:1e4,maximumAge:0,enableHighAccuracy:!1},locate:function(t){if(t=this._locationOptions=n.extend(this._defaultLocateOptions,t),!navigator.geolocation)return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var e=n.bind(this._handleGeolocationResponse,this),i=n.bind(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch(this._locationWatchId),this},_handleGeolocationError:function(t){var e=t.code,i=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout");this._locationOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+i+"."})},_handleGeolocationResponse:function(t){var e=180*t.coords.accuracy/4e7,i=2*e,o=t.coords.latitude,s=t.coords.longitude,a=new n.LatLng(o,s),r=new n.LatLng(o-e,s-i),h=new n.LatLng(o+e,s+i),l=new n.LatLngBounds(r,h),u=this._locationOptions;if(u.setView){var c=Math.min(this.getBoundsZoom(l),u.maxZoom);this.setView(a,c)}this.fire("locationfound",{latlng:a,bounds:l,accuracy:t.coords.accuracy})}})})(this,document); diff --git a/main.css b/main.css new file mode 100644 index 0000000..05f3cf5 --- /dev/null +++ b/main.css @@ -0,0 +1,116 @@ +body, html +{ + text-align: center; + margin: 0; + width: 100%; + height: 100%; +} + +body h1:first-child +{ + margin-top: 10px; + margin-bottom: 10px; +} + +h1 a, h2 a +{ + text-decoration: none; + color: black; +} + +table +{ + margin: auto; + vertical-align: middle; + border-collapse: collapse; +} + +td +{ + padding: 10px 15px; +} + +td +{ + border-bottom: 1px dotted black; +} + +table tr:last-child>td +{ + border-bottom: none; +} + + +.left +{ + text-align: left; +} + +.right +{ + text-align: right; +} + +a +{ + text-decoration: none; +} + +#position img +{ + vertical-align: middle; +} + +#ou +{ + margin-left: 25px; + margin-right: 15px; +} + +@media screen and (max-width: 327px) /* a little trick to be more beautiful on small screens */ +{ + #ou + { + display: block; + } +} + +#map +{ + width: 100%; + height: 75%; + margin-bottom: 15px; +} + +#map_p +{ + margin: 0; + margin-bottom: 10px; +} + +#map_p img +{ + vertical-align: middle; +} + +#position h2 +{ + font-size: 1em; + text-decoration: underline; + margin: 0; +} + +#position p +{ + margin-bottom: 0; +} + +#thanks, #suggestions +{ + font-size: 0.7em; +} + +#thanks img +{ + height: 1em; +} diff --git a/station.php b/station.php new file mode 100644 index 0000000..28ec24a --- /dev/null +++ b/station.php @@ -0,0 +1,48 @@ + + + + + + Vélibs à proximité + + + + + + + + + + + + +

Vélibs à proximité

+ +
+
+ + ← Retour à la liste

"; + ?> + +
+ +
+

Votre navigateur doit prendre en charge la géolocalisation pour que ce site puisse fonctionner correctement.

+
+ +
+

Map is handled thanks to the Leaflet library, using © OpenStreetMap contributors tiles. Reverse geolocation (Nominatim) are provided by the MapQuest open API. Routes are provided by the OSRM project (OSRM is a free and open source program under GNU Affero GPL).

+

N'hésitez pas à m'envoyer vos suggestions à webmaster@phyks.me.

+ +