[FAIT] Carte avec recherche de lieux

Problème/bug rencontré sur le site, évolution/amélioration à proposer
Avatar du membre
sly
Messages : 1945
Enregistré le : dim. 29 févr., 2004 6:59 pm
Localisation : Chambéry - Savoie
Contact :

[FAIT] Carte avec recherche de lieux

Message par sly » dim. 14 oct., 2012 2:01 am

Plus qu'un long discours, l'essayer c'est l'adopter :
ça se passe en haut à gauche ici :
http://layers.openstreetmap.fr/

discret, efficace (ou presque), permet de chercher ce qui est hors refuges.info afin de se déplacer plus rapidement sur la carte.

Tu penses que ça serait intégrable chez nous ?
Modifié en dernier par sly le mar. 16 oct., 2012 8:18 pm, modifié 3 fois.

Avatar du membre
Dominique
Messages : 1150
Enregistré le : sam. 08 avr., 2006 9:58 pm
Localisation : Chaville 92
Contact :

Message par Dominique » dim. 14 oct., 2012 8:36 am

Oui, ce sont les fonctions de geotagging
J'ai fait piteusement impasse jusqu'à maintenant sans grande raison valable mais j'y pense car c'est très utile
Elles ne sont pas directement liées à OpenLayers mais à l'exploitation de sources d'infos données par les fournisseur de cartes. De sorte qu'il faut réinterfacer chaque carte
D’habitude, ces fonctions sont facilement disponibles dans l'API du fournisseur mais, comme je m'en passe, je dois refaire l'interface
Je n'ai pas vraiment regardé, mais ça ne devrait pas être insurmontable

Avatar du membre
sly
Messages : 1945
Enregistré le : dim. 29 févr., 2004 6:59 pm
Localisation : Chambéry - Savoie
Contact :

Message par sly » dim. 14 oct., 2012 3:24 pm

Pour ma part, je ne pense pas qu'il soit nécessaire d'adapter toutes les apis de recherche de tous les fournisseurs de carte (surtout qu'un jour ça va couper en face et que ça en fait plein à interfacer)

Ce que je proposais de faire c'était plutôt de repiquer le code (libre) de la page précédement citée, pour intégrer le chercheur "nominatim"
soit un minimum (je l'espère) de boulot pour un résultat acceptable

Avatar du membre
Dominique
Messages : 1150
Enregistré le : sam. 08 avr., 2006 9:58 pm
Localisation : Chaville 92
Contact :

Message par Dominique » dim. 14 oct., 2012 4:22 pm

Voilà. C'est fait :D
En fait, il n'y a pas de lien avec la carte : on peut rechercher dans la base d'un fournisseur, ce qui donne un lon-lat et afficher sur n'importe quelle carte
Puisqu'on est libre, j'ai interfacé nominatim.openstreetmap.org
- saisie de la recherche dans le champ recherche (dispo en haut de toutes les pages)
- restitution dans la page de résultat des recherches
- choix -> on va sur la carte
A essayer

P.S. si tu pouvais mettre la main sur cette :blue: :blue: fonction PHP qui permet de transcoder de l'unicode 4 digit en iso-8859-1, tu m'arrangerais
Modifié en dernier par Dominique le dim. 14 oct., 2012 4:45 pm, modifié 1 fois.

Avatar du membre
Claude Mauguier
Messages : 553
Enregistré le : ven. 08 avr., 2011 3:31 pm
Localisation : Isére

Message par Claude Mauguier » dim. 14 oct., 2012 5:36 pm

Génial : plus besoin de ramer sur les cartes pour trouver Tataouine ou Trou-les-Bains :D

Avatar du membre
sly
Messages : 1945
Enregistré le : dim. 29 févr., 2004 6:59 pm
Localisation : Chambéry - Savoie
Contact :

Message par sly » dim. 14 oct., 2012 5:52 pm

Dominique a écrit :Voilà. C'est fait :D
Pas mal du tout, et je n'avais pas pensé à fusionner ça avec notre propre recherche.
Tant que les résultats sont bien clairement séparés entre notre base et des points "bases de tiers", ça me va.

J'ai même ré-insisté sur le point pour le cas où la recherche ne trouve rien dans notre base afin de bien préciser qu'il n'y a rien chez nous, mais que les choix proposés viennent d'ailleurs.
P.S. si tu pouvais mettre la main sur cette :blue: :blue: fonction PHP qui permet de transcoder de l'unicode 4 digit en iso-8859-1, tu m'arrangerais
ça ne peut pas exister, il n'y a pas bijection entre les deux ensembles.
Au mieux il existe des conversions partielles, mais le cyrillique ne passera jamais.

unicode 32 dis-tu ? qui a tu trouvé qui te balance de l'unicode 32 ? nominatim ? ça m'étonnerais terriblement, la base OSM étant en UTF-8

Si, comme je le crois, je ne me suis pas trompé, ton bonheur est là :
http://php.net/manual/fr/function.utf8-decode.php

Avatar du membre
sly
Messages : 1945
Enregistré le : dim. 29 févr., 2004 6:59 pm
Localisation : Chambéry - Savoie
Contact :

Message par sly » dim. 14 oct., 2012 5:54 pm

Claude Mauguier a écrit :Génial : plus besoin de ramer sur les cartes pour trouver Tataouine ou Trou-les-Bains :D
Pas sûr que pour trouver "tataouine" ça t'aide pour autant... argh, quoi, ça existe en tunisie ! On en apprend tous les jours...

http://www.refuges.info/nav.php?zoom=13 ... n=10.44152

Avatar du membre
Claude Mauguier
Messages : 553
Enregistré le : ven. 08 avr., 2011 3:31 pm
Localisation : Isére

Message par Claude Mauguier » dim. 14 oct., 2012 6:13 pm

J'ai fait un essai pour trouver "Mettelhorn" (au-dessus de Zermatt) : ça marche ! bien que le point n'existe pas sur WRI. Pareil pour Similaun.
Par contre "Grossvenediger" ne marche pas... probablement une question d'orthographe sur OSM/Map Refuges.info, où les deux "s" du nom apparaissent avec la vieille graphie germanique (une sorte de B majuscule sans la barre du milieu). Mais c'est marginal.

Avatar du membre
Dominique
Messages : 1150
Enregistré le : sam. 08 avr., 2006 9:58 pm
Localisation : Chaville 92
Contact :

Message par Dominique » dim. 14 oct., 2012 6:31 pm

sly a écrit :unicode 32 dis-tu ? qui a tu trouvé qui te balance de l'unicode 32 ? nominatim ? ça m'étonnerais terriblement, la base OSM étant en UTF-8
:oops: :oops: :oops: ne cherche pas, j'ai bu. C'est bien de utf8, mais sous forme java (dans le JSON que je cherche à interpréter en PHP !)
Si on remplace \u00 par &#x ça s'affiche direct :idea:

Avatar du membre
sly
Messages : 1945
Enregistré le : dim. 29 févr., 2004 6:59 pm
Localisation : Chambéry - Savoie
Contact :

Message par sly » dim. 14 oct., 2012 6:40 pm

Ok, je me suis gourré
Dominique a écrit : \u00a9
J'ai bien essayé utf8, mais c'est utf16 qu'il faudrait !
Pfffff, c'est quoi ce caca de json !
C'est même pas de l'utf-16, c'est de l'utf-16 dans une représentation ascii hexadécidmal échappée par \u
J'ai jamais entendu parlé de cette bidouille.
Ils peuvent pas faire de l'utf8 comme tout le monde.

J'ai vérifié avec &format=xml et là, tout est "normal" dans le sens où c'est bien de l'utf8

J'en perd mon latin-1 et je ne vois pas comment faire ça proprement à part juste bidouiller salement
utf-8 et utf-16 semblent avoir une compatibilité pour les caractères latins, il faudrait donc d'abord convertir les "\uXYZT" en UTF-8

Voici la bidouille sale trouvée sur le net :
http://www.avoid.org/?p=67

un truc style ça :
function from_json_to_utf8($json)
{
return preg_replace("/\\\\u([a-f0-9]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", $json);
}

puis :
print(utf8_decode(from_json_to_utf8($text)));

semble faire l'affaire.

Avatar du membre
sly
Messages : 1945
Enregistré le : dim. 29 févr., 2004 6:59 pm
Localisation : Chambéry - Savoie
Contact :

Message par sly » dim. 14 oct., 2012 6:52 pm

Dominique a écrit : :oops: :oops: :oops: ne cherche pas, j'ai bu. C'est bien de utf8, mais sous forme java (dans le JSON que je cherche à interpréter en PHP !)
Si on remplace \u00 par &#x ça s'affiche direct :idea:
Sauf deuxième erreur, d'après les docs que j'ai lu c'est bien de l'utf-16.

Toutefois, l'utf-16 semble intégrer comme sous ensemble ISO9660-1

C'est à dire que un é (dont la représentation hexadécimal en ISOtruc est 0xC9) sera en UTF-16 : 0x00C9

En clair, si tu vire les 00 du début, et que tu prétends que c'est de l'iso, hop ça marche par magie.
Par contre, le code &#xXY; étant interprété par le navigateur uniquement, ça ne te permettra pas d'envoyer email ni stoquer en base.

Bon, tout ça me fait penser doucement que le choix initial de refuges.info de tout faire en ISO9660-15 commence à devenir un handicap à l'heure d'un UTF8 qui se répand de partout.
La transition ne s'avère pas simple, mais il va peut-être falloir y passer...

Avatar du membre
Dominique
Messages : 1150
Enregistré le : sam. 08 avr., 2006 9:58 pm
Localisation : Chaville 92
Contact :

Message par Dominique » dim. 14 oct., 2012 6:58 pm

Par contre, &xe8 ne marche pas si le code est suivi par une lettre hexa
Il faut une expression régulière pour rajouter le ; à la fin &xe8; :(

Avatar du membre
sly
Messages : 1945
Enregistré le : dim. 29 févr., 2004 6:59 pm
Localisation : Chambéry - Savoie
Contact :

Message par sly » dim. 14 oct., 2012 7:07 pm

Dominique a écrit :Par contre, &xe8 ne marche pas si le code est suivi par une lettre hexa
Il faut une expression régulière pour rajouter le ; à la fin &xe8; :(
Une entité html étant au format &*; tu ne peux y échapper si tu veux suivre ce chemin. Mais pour la pérénité, je te suggère ma proposition ci-avant qui évite de passer par les entités HTML, qui, il me semble, nous péterons dans la g... tôt ou tard.

Ou encore mieux : utiliser le xml

Avatar du membre
Dominique
Messages : 1150
Enregistré le : sam. 08 avr., 2006 9:58 pm
Localisation : Chaville 92
Contact :

Message par Dominique » dim. 14 oct., 2012 7:54 pm

J'ai viré ma conversion burlesque de JSON en PHP et je suis passé par XML: ça marche nickel

Par contre, en PHP 5.2.0, je ne sais pas détecter simplement qu'il n'y a pas de fils à un SimpleXMLElement
Serait il envisageable d'upgrader le PHP STP ? (en 5.3, on a SimpleXMLElement->count())

Avatar du membre
sly
Messages : 1945
Enregistré le : dim. 29 févr., 2004 6:59 pm
Localisation : Chambéry - Savoie
Contact :

Message par sly » dim. 14 oct., 2012 8:46 pm

Dominique a écrit : Serait il envisageable d'upgrader le PHP STP ? (en 5.3, on a SimpleXMLElement->count())
Dans l'immédiat (je veux dire : quelques jours) aucune chance, sur le moyen terme pourquoi pas, mais de nombreux tests devront d'abord être faits pour valider la compatibilité du site avec php 5.3

Répondre

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 7 invités