IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IGN API Géoportail Discussion :

Utilisation de la recherche pour un objet d'une couche KML


Sujet :

IGN API Géoportail

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 71
    Points : 30
    Points
    30
    Par défaut Utilisation de la recherche pour un objet d'une couche KML
    Bonjour

    Avant toute chose, je voudrais signaler un soucis avec la fonction de recherche. Si j'effectue une recherche les infos bulles qui apparaissent normalement pour les objets d'une couche ne sont plus visualisables. Est ce qu'il y a un moyen pour palier à ce problème sans recharger l'API ?

    Ensuite, j'ai eu une demande par rapport à une couche en particulier, celle de la DECI. Il s'agit de pouvoir faire une recherche par numéro de point d'eau entre autre. J'ai testé avec les codages html de ce site : http://acestgratuit.free.fr/scripts_...oteurform.html

    dans le head j'ai mis comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script language="Javascript">
    function callsearch(){
    searchwords=document.searchform.searchwords.value.toLowerCase();
    while (searchwords.indexOf(" ")>-1) 
    {
    pos=searchwords.indexOf(" ");
    searchwords=searchwords.substring(0,pos)+"+"+
    searchwords.substring(pos+1); 
    }
    location="assets/deci/deci.kml"; 
    } 
    </script>
    et de cette façon dans le body

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <script type="text/javascript" src="js/quickstart.js"></script>
    	<form action="javascript:callsearch();" name="searchform" method="post">
      <p><input type="text" name="searchwords" size="15"> <input TYPE="button"
      onclick="javascript:callsearch()" VALUE="Search"> </p>
    </form>
    Cependant le test ainsi réalisé n'est pas fonctionnel. Par contre, ce que je souhaiterais savoir, c'est si dans le codage de la fonction de recherche fournie dans la documentation il est possible d'implémenter d'autres fonctions de recherche fonctionnant avec la couche DECI.

    Ou alors existe t'il un autre moyen d'implémenter ce type de recherche vis à vis d'une couche précise ?

  2. #2
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    Bonjour,

    Citation Envoyé par Scarab Aware Voir le message
    Avant toute chose, je voudrais signaler un soucis avec la fonction de recherche. Si j'effectue une recherche les infos bulles qui apparaissent normalement pour les objets d'une couche ne sont plus visualisables. Est ce qu'il y a un moyen pour palier à ce problème sans recharger l'API ?
    Pouvez vous préciser le problème ?
    Car pour moi, lorsque j'effectue une recherche (par exemple avec cette page d'exemple), les infos bulles associées aux résultats de la recherche sont visualisables.


    Ensuite, j'ai eu une demande par rapport à une couche en particulier, celle de la DECI. Il s'agit de pouvoir faire une recherche par numéro de point d'eau entre autre. J'ai testé avec les codages html de ce site : http://acestgratuit.free.fr/scripts_...oteurform.html

    dans le head j'ai mis comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script language="Javascript">
    function callsearch(){
    searchwords=document.searchform.searchwords.value.toLowerCase();
    while (searchwords.indexOf(" ")>-1) 
    {
    pos=searchwords.indexOf(" ");
    searchwords=searchwords.substring(0,pos)+"+"+
    searchwords.substring(pos+1); 
    }
    location="assets/deci/deci.kml"; 
    } 
    </script>
    D'après ce que j'ai compris de ce moteur de recherche, il ne me semble pas que ce soit la bonne utilisation : il faut mettre comme valeur de 'location', l'url de la page qui contient le code de ce moteur de recherche (à savoir 'chemin/vers/xsearch.htm') et non le nom de votre fichier kml sur lequel vous souhaitez faire votre recherche. Ensuite, le code de ce moteur semble interroger une bdd qu'il faut avoir préalablement remplie.

    Cependant le test ainsi réalisé n'est pas fonctionnel.
    ça me parait normal (cf. ci-dessus).

    Par contre, ce que je souhaiterais savoir, c'est si dans le codage de la fonction de recherche fournie dans la documentation il est possible d'implémenter d'autres fonctions de recherche fonctionnant avec la couche DECI.

    Ou alors existe t'il un autre moyen d'implémenter ce type de recherche vis à vis d'une couche précise ?
    La recherche proposée par l'API Géoportail est une recherche par noms de lieux, adresses, points géodésiques (à venir) ou parcelles cadastrales (à venir). Pour cela elle utilise des BDDs pré-établies à l'IGN. Elle ne peut pas être paramétrée pour utiliser d'autres sources de données côté utilisateur.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 71
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    Concernant la recherche, oui bien sur si on parle de l'info-bulle associée à la requête ça marche. Ce qui ne fonctionne plus c'est les autres info-bulles. Voici une capture :



    La cible de recherche n'a pas de problème. Cependant le point rouge que vous pouvez voir, sur lequel on a des informations en cliquant dessus, n'affiche plus l'info-bulle après la recherche. Ainsi, j'aimerais savoir s'il y a possibilité de remédier à ce problème, afin que après recherche on puisse encore consulter l'info-bulle. Ceci en gardant l'emplacement du search comme sur cet exemple : http://api.ign.fr/tech-docs-js/examp...gazetteer.html
    Car effectivement je constate que avec cet exemple : http://api.ign.fr/tech-docs-js/examp...azetteer4.html ça ne pose pas problème. Mais pour des raisons pratique je ne peux pas vraiment faire le placement hors toolbox. Qui plus est, je me suis aperçu qu'en cliquant à nouveau sur recherche suivi d'un second clic cela remédiait au problème en faisant disparaître la cible. Un résultat probant, mais non satisfaisant vis à vis des utilisateurs. De fait, est il possible de remédier à cela, en passant par une modification dans le code ?

    Sinon merci de votre réponse, et pour la recherche par base de données je vois ce que je peux faire.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 71
    Points : 30
    Points
    30
    Par défaut A propos de la fonction de recherche
    En fait avec la recherche placée en dehors de la carte, n'existe t'il pas le moyen d'avoir la même souplesse de recherche qu'avec la recherche intégrée à la toolbox placée dans la carte ? Par souplesse j'entends le fait que avec cet exemple http://api.ign.fr/tech-docs-js/examp...azetteer4.html on ne soit pas obligé de renseigner une adresse mais seulement un lieu si on ne veut pas aller à une adresse. J'ai tenté d'implémenter les deux moteurs de recherche (recherche par lieux et recherche pas adresse hors carte) mais j'ai beaucoup de complications avec la mise en place de recherche par adresse. Je n'arrive pas à la faire fonctionner.

    Dans le cas de la réponse négative quand à ce sujet je souhaiterais savoir comment je puis implémenter la recherche dans la toolsbar pour ce cas :



    Bizarrement, au début je suis arrivé à mettre une toolbox classique que j'ai ensuite retiré et la plus moyen de la remettre.
    De fait, tant et si bien qu'on ne puisse moduler la recherche hors carte comme on le souhaite, quels sont les éléments à ajouter pour avoir une fonction de recherche dans la toolsbar sur le cas présent ?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 71
    Points : 30
    Points
    30
    Par défaut
    J'en reviens à la recherche par base de données. J'ai pu voir avec un informaticien, j'ai donc converti le quickstart.html en quickstart.php. Je vais avoir une requête php à placer entre les balises body sous peu, par contre une question se pose vis à vis du javascript. Pour bien lier ceci et que le zoom sur l'objet se fasse correctement à la recherche que faut-il implémenter dans le js et quelle est la partie à reprendre pour le zoom aux coordonnées ?

    En somme peut on reprendre un élément de cette partie là ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    var tbx=viewer.getMap().getControlsByClass('Geoportal.Control.ToolBox')[0];
    
    	var panel= new Geoportal.Control.Panel({
    	div:OpenLayers.Util.getElement(tbx.id+'_search')
    	});
    
    	var gazetteer= new Geoportal.Control.LocationUtilityService.Geocode(
    	new Geoportal.Layer.OpenLS.Core.LocationUtilityService(
    		'StreetAddress:OPENLS;Geocode',
    	{
    		formatOptions: {
    		}
    	}
    	),{
        	uiOptions:{title: 'gpControlLocationUtilityService.geocode.title'},
    	setZoom: Geoportal.Control.LocationUtilityService.Geocode.setZoomForBDNyme
    	}
    );
    panel.addControls([gazetteer]);
    Ou faut-il implémenter un tout autre code ?

  6. #6
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut Rechercher un nom de lieu ou une adresse
    Bonjour,

    Citation Envoyé par Scarab Aware Voir le message
    En fait avec la recherche placée en dehors de la carte, n'existe t'il pas le moyen d'avoir la même souplesse de recherche qu'avec la recherche intégrée à la toolbox placée dans la carte ? Par souplesse j'entends le fait que avec cet exemple http://api.ign.fr/tech-docs-js/examp...azetteer4.html on ne soit pas obligé de renseigner une adresse mais seulement un lieu si on ne veut pas aller à une adresse. J'ai tenté d'implémenter les deux moteurs de recherche (recherche par lieux et recherche pas adresse hors carte) mais j'ai beaucoup de complications avec la mise en place de recherche par adresse. Je n'arrive pas à la faire fonctionner.
    tout d'abord, les possibilités du moteur de recherche ne dépendent pas de la position du contrôle dans ou en dehors de la carte : on peut faire la même chose qu'il soit à l'intérieur ou à l'extérieur.

    Ensuite, si je comprends bien, vous souhaitez avoir un seul champs de formulaire qui permette de faire indifféremment une recherche par noms de lieux ou par adresse.
    Si c'est le cas, à partir, par exemple, de l'exemple http://api.ign.fr/tech-docs-js/examp...azetteer2.html, il suffit de modifier le champ 'countryCode' de l'objet Geoportal.Control.LocationUtilityService.GeoNames en lui affectant la valeur : 'PositionOfInterest,StreetAddress' (je vous invite à consulter la page suivante pour la signification de ce champs et de ces valeurs pour le moteur de recherche). Cela donne quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      ...
      var gazetteer= new Geoportal.Control.LocationUtilityService.GeoNames( ... ) ;
    
      gazetteer.countryCode= 'PositionOfInterest,StreetAddress' ;
      viewer.getMap().addControls([gazetteer]);
      gazetteer.activate();
      ...

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 71
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    merci beaucoup, voila qui solutionne une bonne partie de mon problème, et répond à plusieurs de mes questions.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 71
    Points : 30
    Points
    30
    Par défaut
    J'en reviens à ce sujet. Donc là sur une recherche par lieu ou adresse ça marche, maintenant j'aimerais savoir s'il est aussi possible, toujours pour ce cas, de faire aussi une recherche par coordonnées ? De là je pourrais probablement résoudre le problème qui se pose quand à la recherche par point d'eau.

    Par ailleurs, je signale pour cet exemple http://api.ign.fr/tech-docs-js/examp...ortalLike.html que la recherche par coordonnées ne semble pas fonctionner.

  9. #9
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    C'est malheureusement un vieux sujet : il s'agit du service de géocodage inverse qui n'est toujours pas opérationnel chez nous. L'API est prête pour le gérer, mais pour l'instant le service ne répond que pour des coordonnées sur l’île de la Réunion.

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 71
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    D'accord, bon eh bien je souhaite bonne chance pour arriver à le faire fonctionner totalement dans un avenir proche

    Sinon, j'ai réalisé un test, qui se révèle fonctionnel mais j'aurais besoin de quelques éclairages. Toujours quand à cette recherche par base de donnée. Donc, j'ai testé de ces deux façons :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" id="pointdeau" name="pointdeau"  value="Rechercher" onclick="javascript:viewer.getMap().setCenter(viewer.viewerOptions.defaultCenter,15)"/>
    Ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	<input type="button" id="pointdeau" name="pointdeau"  value="Rechercher" onclick="javascript:viewer.getMap().setCenterAtLonLat(6.41953,49.402594,15)"/>
    En cliquant sur recherche ça me mène sur le lieu ainsi défini par défaut. St Mandé pour le premier, dans les environs de Thionville pour le second.

    Toutefois dans ce cas on reste à de la projection sphérique, alors que la base de donnée à laquelle on souhaite raccorder est en coordonnées planes. Ainsi j'aimerais savoir s'il y aurait possibilité de passer d'un paramétrage longitude latitude vers du X,Y ?

    De là je pourrais probablement enfin finaliser le raccordement avec l'informaticien.

  11. #11
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    Bonjour,

    il suffit d'appliquer une transfo de coordonnées à vos coordonnées obtenues :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    viewer.getMap().setCenterAtLonLat(new OpenLayers.LonLat(X,Y).transform(
    new OpenLayers.Projection("CODE_PROJECTION"),
    new OpenLayers.Projection("EPSG:4326")
    )) ;
    où :

    X,Y sont vos coordonnées issues de votre BDD
    CODE_PROJECTION : le code EPSG ou IGN de la projection dans laquelle X et Y sont exprimés

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 71
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    merci beaucoup, ça avance. De fait j'ai mis de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="button" id="pointdeau" name="pointdeau"  value="Rechercher" onclick="javascript:viewer.getMap().setCenterAtLonLat('X','Y',15).transform(
    new OpenLayers.Projection('RGF93'),
    new OpenLayers.Projection('CRS84'))"/>
    En faisant comme ceci ou en remplaçant X et Y par des coordonnées ça ne centre que sur Nancy après clic sur rechercher (effet de la géolocalisation ?), mais c'est déjà un début. Il ne me reste plus qu'à voir en liant avec la base de données ce que ça donne, je vous tiens au courant du résultat.

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 71
    Points : 30
    Points
    30
    Par défaut
    Bon...en fait ce n'est pas encore ça. Si je met des coordonnées sous ce format là : 6.41953,49.402594 ça me mène vraiment à l'endroit correspondant au lieu de ne faire qu'un zoom sur Nancy.

    Implémenté de cette façon ça ne fonctionne plus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    onclick="javascript:viewer.getMap().setCenterAtLonLat(new OpenLayers.LonLat(9202840,78699897,15).transform(
    new OpenLayers.Projection('IGNF:LAMB93'),
    new OpenLayers.Projection('EPSG:4326'))
    )"/>
    Ainsi, en mettant sous la forme X,Y les coordonnées sans le OpenLayers.LonLat on tombe toujours sur le même lieu avec la recherche. J'ai du coup cherché d'autres exemples. J'ai essayé avec celui-ci :
    http://www.forumsig.org/showthread.p...ordonn%C3%A9es mais là on n'a que de l'évènement onload qui se produit. Sinon j'ai testé de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    onclick="javascript:viewer.getMap().setCenterAtLonLat('X','Y',15).transform(
    new OpenLayers.ProjFrom('IGNF:LAMB93'),
    new OpenLayers.ProjTo('EPSG:4326')
    Mais ça ne change rien non plus . Est ce qu'il y aurait une autre façon de procéder ?

  14. #14
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    Pouvez vous nous donner plus de détails sur le non-fonctionnement : que se passe-t-il ? quel message d'erreur avez vous dans la console (sous chrome ou firefox+firebug), ... ?

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 71
    Points : 30
    Points
    30
    Par défaut
    Alors ici j'utilise l'API avec Géolocalisation. Pour le zoom j'ai pris 12 comme valeur. Donc ensuite je réalise mon test comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    onclick="javascript:viewer.getMap().setCenterAtLonLat('X','Y',15).transform(
    new OpenLayers.ProjFrom('IGNF:LAMB93'),
    new OpenLayers.ProjTo('EPSG:4326')
    )"
    Le Zoom est à 15 et peu importe les valeurs X et Y ça zoom sur Nancy uniquement. Par contre si je met en Longitude - Latitude là je suis envoyé sur la zone correspondante.

    Et donc en regardant avec Firebug, des deux façons ça me met : "TypeError: viewer.getMap(...).setCenterAtLonLat(...) is undefined"

    Enfin comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    onclick="javascript:viewer.getMap().setCenterAtLonLat(new OpenLayers.LonLat(9202840,78699897,15).transform(
    new OpenLayers.Projection('IGNF:LAMB93'),
    new OpenLayers.Projection('EPSG:4326'))
    )"/>
    Rien ne se passe, et aucune erreur n’apparaît...

  16. #16
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut erreur de syntaxe
    Citation Envoyé par Scarab Aware Voir le message
    Donc ensuite je réalise mon test comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    onclick="javascript:viewer.getMap().setCenterAtLonLat('X','Y',15).transform(
    new OpenLayers.ProjFrom('IGNF:LAMB93'),
    new OpenLayers.ProjTo('EPSG:4326')
    )"
    Le Zoom est à 15 et peu importe les valeurs X et Y ça zoom sur Nancy uniquement.
    Sur ce code là, j'ai deux remarques :
    1. OpenLayers.ProjFrom et OpenLayers.ProjTo n'existent pas.
    2. la methode setCenterAtLonLat() ne retourne rien. Du coup, on ne peut pas lui appliquer la methode transform() derrière.

    Du coup, le code ci-dessus ne peut pas marcher.

    Enfin comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    onclick="javascript:viewer.getMap().setCenterAtLonLat(new OpenLayers.LonLat(9202840,78699897,15).transform(
    new OpenLayers.Projection('IGNF:LAMB93'),
    new OpenLayers.Projection('EPSG:4326'))
    )"/>
    Rien ne se passe, et aucune erreur n’apparaît...
    Ici, le constructeur de l'objet OpenLayers.LonLat ne doit prendre que deux paramètres : le x et le y (et non pas trois). Par contre, la methode setCenterAtLonLat() doit prendre un deuxième paramètre qui est le niveau de zoom (celui qui s'est retrouvé comme troisième paramètre de new OpenLayersLonLat()). J'écrirais donc plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    onclick="javascript:viewer.getMap().setCenterAtLonLat(
    new OpenLayers.LonLat(9202840,78699897).transform(
    new OpenLayers.Projection('IGNF:LAMB93'),
    new OpenLayers.Projection('EPSG:4326')),
    15)"

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 71
    Points : 30
    Points
    30
    Par défaut
    Et là par contre j'ai essayé comme vous énoncez mais du moment que le "new OpenLayers.LonLat" est mis ça ne répond plus. La est tout le problème...

  18. #18
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    Citation Envoyé par Scarab Aware Voir le message
    mais du moment que le "new OpenLayers.LonLat" est mis ça ne répond plus.
    qu'est-ce que vous entendez par "ça ne répond plus" ?
    Est-ce qu'il y a des erreurs qui apparaissent ?

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 71
    Points : 30
    Points
    30
    Par défaut
    Par là je veux dire que le clic sur rechercher ne produit rien alors que sans cela on a un zoom sur Nancy ou sur la zone définie par les coordonnées en Longitude Latitude.
    Et justement il n y a pas d'erreur que ce soit avec firefox ou chrome excepté un "Uncaught SyntaxError: Unexpected string". Et cela concerne la ligne 31 du quickstart.js du répertoire i18n

  20. #20
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    Juste pour être sur : d'où sortent vos coordonnées (9202840,78699897) ?

    car, si j’exécute le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var lonLat= new OpenLayers.LonLat(9202840,78699897).transform( new OpenLayers.Projection('IGNF:LAMB93'), new OpenLayers.Projection('EPSG:4326')) ;
    console.log(lonLat) ;
    j'obtiens dans la console :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lon=-119.04246214686457,lat=-79.5995510361081 { lon=-119.04246214686457, lat=-79.5995510361081, CLASS_NAME="OpenLayers.LonLat"}
    donc, des coordonnées qui ne correspondent pas du tout à la zone de pertinence du lambert 93.

    Par contre, si j'applique le même code aux coordonnées Lambert93 de Nancy (934355,6848175), j'obtiens dans la console :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    lon=6.184746321891918,lat=48.691184997554316 { lon=6.184746321891918, lat=48.691184997554316, CLASS_NAME="OpenLayers.LonLat"}
    et donc des coordonnées lon,lat qui correspondent bien au territoire français sur lesquelles le setCenterAtLonLat ne devrait pas avoir de problèmes à se positionner.


    Pouvez-vous vérifier ce point là ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Filtrer les objets d'une couche WMS par ID
    Par Kivenkantaja dans le forum SIG : Système d'information Géographique
    Réponses: 3
    Dernier message: 05/07/2012, 18h20
  2. PLSQL pour les objets d'une base
    Par SALMHSN dans le forum PL/SQL
    Réponses: 7
    Dernier message: 25/04/2011, 14h50
  3. Réponses: 2
    Dernier message: 20/08/2009, 20h58
  4. utilisation nom de variable pour le nom d'une commandbars
    Par modus57 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/09/2008, 18h11
  5. Réponses: 4
    Dernier message: 25/10/2005, 08h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo