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 0000000..2315e96 Binary files /dev/null and b/favicon.ico differ diff --git a/images/carte.png b/images/carte.png new file mode 100644 index 0000000..b71463e Binary files /dev/null and b/images/carte.png differ diff --git a/images/layers.png b/images/layers.png new file mode 100644 index 0000000..ef90a08 Binary files /dev/null and b/images/layers.png differ diff --git a/images/marker-icon-red.png b/images/marker-icon-red.png new file mode 100644 index 0000000..e0d2afe Binary files /dev/null and b/images/marker-icon-red.png differ diff --git a/images/marker-icon.png b/images/marker-icon.png new file mode 100644 index 0000000..e2e9f75 Binary files /dev/null and b/images/marker-icon.png differ diff --git a/images/marker-icon@2x.png b/images/marker-icon@2x.png new file mode 100644 index 0000000..0015b64 Binary files /dev/null and b/images/marker-icon@2x.png differ diff --git a/images/marker-shadow.png b/images/marker-shadow.png new file mode 100644 index 0000000..d1e773c Binary files /dev/null and b/images/marker-shadow.png differ diff --git a/images/marker_cycle.png b/images/marker_cycle.png new file mode 100644 index 0000000..e28eff6 Binary files /dev/null and b/images/marker_cycle.png differ diff --git a/images/marker_parking.png b/images/marker_parking.png new file mode 100644 index 0000000..1a44769 Binary files /dev/null and b/images/marker_parking.png differ diff --git a/images/marker_parking_bonus.png b/images/marker_parking_bonus.png new file mode 100644 index 0000000..e5917d8 Binary files /dev/null and b/images/marker_parking_bonus.png differ diff --git a/images/parking.png b/images/parking.png new file mode 100644 index 0000000..d4ec555 Binary files /dev/null and b/images/parking.png differ diff --git a/images/shadow_icons.png b/images/shadow_icons.png new file mode 100644 index 0000000..0381fd7 Binary files /dev/null and b/images/shadow_icons.png differ diff --git a/images/velo.png b/images/velo.png new file mode 100644 index 0000000..d5b4177 Binary files /dev/null and b/images/velo.png differ diff --git a/index.php b/index.php new file mode 100644 index 0000000..d406198 --- /dev/null +++ b/index.php @@ -0,0 +1,104 @@ + + + + + +
+ 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
+
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].dist+" mètres | "+json[i].nom+" | "; + if(json[i].nombre == 1) + { + if(available == true) + display += ""+json[i].nombre+" vélo | "+json[i].nombre+" emplacement | "; + } + else + { + if(available == true) + display += ""+json[i].nombre+" vélos | "; + else + display += ""+json[i].nombre+" emplacements | "; + } + } + + 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+"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 = "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 = "Latitude : "+latitude+", Longitude : "+longitude+" → ↻ Actualiser ?
"; + document.getElementById("see_map").innerHTML = ""; + } + } + + 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 = " ou ";
+ }
+}
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.yVé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.
+ +