Action 00021

Ce wiki, réalisé dans le cadre de la tournée pancanadienne Fab Labs Nation en 2017, est présenté à titre d'artefact informationnel. Il ne sera pas mis à jour jusqu'à nouvel ordre. Plus d'infos : https://fablabsnation.ca. //// This wiki, created for the Fab Labs Nation tour in 2017, is presented as an informational artefact. It will not be updated until further notice. More info : https://fablabsnation.ca.
Aller à : navigation, rechercher

Ouverture : 2017-03-22

Échéance :

Responsable(s)

Yoann Ochietti

État de suivi
5 - Terminée

Actions liées

Nom de l'action

Utiliser la fonction parseur #geocode pour les cartes au lieu de demander les coordonnées

Contexte de création

Page(s) concernée(s)

Classe:Organisation
Classe:Fab Lab

Suivis

DateParNotes
7 avril 2017 12:42:13Yoann OchiettiFait dans VdJ et AE.
6 avril 2017 18:26:40Yoann Ochiettigeocoding poussé vers FLsQ. Poussé partout mais il manque Maps dans VDJ et des permissions dans AE pour configurer correctement. Devrait être reglé imminement.
3 avril 2017 15:39:08Yoann OchiettiSemble s'être stabilisé depuis. À surveiller.
31 mars 2017 15:10:03Yoann OchiettiFait pour les organisations. Le geocoding actuel plante par moments (internal server error). Il faudrait trouver un manière d'appeler la fonction geocode moins souvent (peut-être de quoi avec la substitution?) ou bien utiliser un autre service plus stable (payant? google?)
30 mars 2017 18:00:09Yoann OchiettiFait pour les Fab Labs.
30 mars 2017 18:00:09Yoann OchiettiNOTE IMPORTANTE: la fonction #geocode utilisait auparavant google. Le seul autre service disponible (geonames) était très limité au Canada. J'ai donc modifié le fichier de geocoding pour Geonames dans le serveur pour plutôt utiliser l'api gratuite de Geocoder.ca. Cela ralentit les loadings un peu, on pourrait considérer trouver un autre service web de geocoding, c'est assez simple à implémenter au serveur. J'ai fait des backups des versions originales et modifiées des fichiers.

Autres notes

Modificationst à l'extension:

protected function getRequestUrl( $address ) {
		global $egMapsGeoNamesUser;
		
		//MODIFICATION YOANN
		return 'https://geocoder.ca/?locate=' . urlencode( $address ) . '&geoit=csv';

		//ORIGINALE
		//return 'http://api.geonames.org/search?q=' . urlencode( $address ) . '&maxRows=1&username=' . urlencode( $egMapsGeoNamesUser );
	}
	protected function parseResponse( $response ) {
	//MODIFICATION YOANN

		$csvValues = explode (',',$response,4)

		$lat = floatval(($csvValues[2]);
		$lon = floatval($csvValues[3]);

	//ORIGINALE
	//	$lon = self::getXmlElementValue( $response, 'lng' );
	//	$lat = self::getXmlElementValue( $response, 'lat' );
		
		// In case one of the values is not found, return false.
		if ( !$lon || !$lat ) return false;

		return [
			'lat' => (float)$lat,
			'lon' => (float)$lon
		];		
	}