Valider 53b81d6b rédigé par brunobergot@gmail.com's avatar brunobergot@gmail.com
Parcourir les fichiers

version 4.0.2 : le retour du geocoder (on utilise la vesion de nominatim...

version 4.0.2 : le retour du geocoder (on utilise la vesion de nominatim hébergée par mapquest, il faudra penser à ajouter tout ça dans les crédits du paquet)
parent 6395eb7d
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+4 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
coder un geocoder maison en js ou utiliser la lib php suivante : https://github.com/willdurand/Geocoder
peut être utiliser cette lib php pour le geocoder ? : https://github.com/willdurand/Geocoder

des couches à pomper :
- http://earthquake.usgs.gov/template/js/classes/usgs/leaflet/layer/

une barre de zoom bien faite à passer en plugin ici : https://github.com/CloudMade/Leaflet/pull/689

+1 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -24,6 +24,7 @@ function gis_insert_head($flux){
	
	$flux .="\n".'<script type="text/javascript" src="'. find_in_path(_DIR_LIB_GIS.'dist/leaflet.js') .'"></script>';
	$flux .="\n".'<script type="text/javascript">/*<![CDATA[*/ L.Icon.Default.imagePath = "' . find_in_path(_DIR_LIB_GIS.'dist/images') .'"; /*]]>*/</script>'."\n";
	$flux .="\n".'<script type="text/javascript" src="'. find_in_path('javascript/gis.js') .'"></script>';
	$flux .="\n".'<script type="text/javascript" src="'. find_in_path(_DIR_LIB_GIS.'plugins/layer/vector/KML.js') .'"></script>';
	$flux .="\n".'<script type="text/javascript" src="'. find_in_path(_DIR_LIB_GIS.'plugins/layer/tile/leaflet-providers-0.0.1.js') .'"></script>';

+113 −0
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
/*
 * L.Geocoder is used to make geocoding or reverse geocoding requests.
 */

L.Geocoder = L.Class.extend({

	includes: L.Mixin.Events,

	options: {
		forwardUrl: 'http://open.mapquestapi.com/nominatim/v1/search',
		reverseUrl: 'http://open.mapquestapi.com/nominatim/v1/reverse',
		limit: 1,
		addressdetails: 1
	},

	initialize: function (callback, options) {
		L.Util.setOptions(this, options);
		this._user_callback = callback;
	},

	geocode: function (data) {
		if (L.LatLng && (data instanceof L.LatLng)) {
			this._reverse_geocode(data);
		} else if (typeof(data) == 'string') {
			this._geocode(data);
		}
	},

	_geocode: function (text) {
		this._request(
			this.options.forwardUrl,
			{
				format: 'json',
				q: text,
				limit: this.options.limit,
				addressdetails: this.options.addressdetails
			}
		);
	},

	_reverse_geocode: function (latlng) {
		this._request(
			this.options.reverseUrl,
			{
				format: 'json',
				lat: latlng.lat,
				lon: latlng.lng
			}
		);
	},

	_request: function (url, data) {
		console.log(data);
		$.ajax({
			//cache: true,
			context: this,
			data: data,
			dataType: 'jsonp',
			jsonp: 'json_callback',
			success: this._callback,
			url: url
		});
	},
	
	_callback: function (response) {
		var return_location = {};
	console.log(response);
	console.log(typeof(response));
		if (response instanceof Array && !response.length) {
			return false;
		} else {
			return_location.street = '';
			return_location.postcode = '';
			return_location.locality = '';
			return_location.region = '';
			return_location.country = '';
			
			if (response.length > 0) {
				place = response[0];
			} else {
				place = response;
			}
			var street_components = [];
		console.log(place);
			if (place.address.country) {
				return_location.country = place.address.country;
			}
			if (place.address.state) {
				return_location.region = place.address.state;
			}
			if (place.address.city) {
				return_location.locality = place.address.city;
			}
			if (place.address.postcode) {
				return_location.postcode = place.address.postcode;
			}
			if (place.address.road) {
				street_components.push(place.address.road);
			}
			if (place.address.house_number) {
				street_components.unshift(place.address.house_number);
			}
			
			if (return_location.street === '' && street_components.length > 0) {
				return_location.street = street_components.join(' ');
			}
			
			return_location.point = new L.LatLng(place.lat, place.lon);
			
			this._user_callback(return_location);
		}
	},
});
 No newline at end of file
+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
<paquet
	prefix="gis"
	categorie="divers"
	version="4.0.1"
	version="4.0.2"
	schema="2.0.2"
	etat="dev"
	compatibilite="[3.0.0;3.0.*]"
+4 −6
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -135,8 +135,7 @@ var geocoder;]
		]
		
		[(#GET{geocoder}|oui)
		// geocoder
		//geocoder = new mxn.Geocoder('api',geocode);]
		geocoder = new L.Geocoder(geocode);]
		
		[(#REM) Ici on utilise #ENV{lat} et #ENV{lon}, et pas les valeurs
		        d'initialisation #GET{init_lat} et #GET{init_lon} qui sont toujours remplies]
@@ -191,12 +190,11 @@ var geocoder;]
		form_map.on('zoomend', function(e) {
			$('#champ_#ENV{champ_zoom,zoom}').val(e.target._zoom);
		});
		/*
		
		[(#GET{geocoder}|oui)
		// geocoder si clic...
		$('a##ENV{nom}_rechercher_geocodage').css("cursor","pointer").click(function(){
			var address = {};
			address.address = $("#champ_#ENV{nom}_geocoder").attr("value");
			var address = $("#champ_#ENV{nom}_geocoder").attr("value");
			annuler_geocoder = 0;
			geocoder.geocode(address);
		});
@@ -208,7 +206,7 @@ var geocoder;]
				return false;
			}
		});]
		*/
		
		[(#ENV{id_gis}|non|ou{#ENV{id_gis}|=={oui}}|et{#CONFIG{gis/geolocaliser_user_html5}|=={on}}|oui)
		form_map.locate({setView: true, maxZoom: [(#GET{init_zoom})]});]