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

JavaScript Discussion :

Cartographier la longitude et la latitude d une ville


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de labarre2002
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 244
    Par défaut Cartographier la longitude et la latitude d une ville
    BOnsoir

    je realise une page web qui comporte une image puis une zone de selection

    Nom : image.png
Affichages : 271
Taille : 229,6 Ko



    quand je clique dans la zone de droite sur une ville

    sur la carte il doit s 'afficher un cercle sur une ville précise sur l' image de gauche.
    le soucis est que c ' est une image en jpg pas un service de géolocalisation ou une map google.
    la consigne est de le réaliser en js pure?

    Pourrais-je avoir des pistes SVP ?

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Une piste:
    le coin en haut à gauche de ton image a pour coordonnées 0,0
    si tu connais ses coordonnées géographiques absolues en lat. et long. et le différentiel d'un pixel il ne te reste plus qu'a faire des additions ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 489
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 489
    Par défaut
    @SpaceFrog, c'est plus complique que ca, ca depend de la projection de la carte.
    de plus, il faut connaitre les bounds (les coins) de l'image qu'il affiche.

    Code javascript : 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    const initialResolution = 156543.03392804062;
    const originalShift = 2 * Math.PI * 6378137 / 2;
    // converts Lat,Lon(Pixels) to Lat,Lon(Meters)
    function convertPixelToMeter(pixel, zoom) { // pixel est sous la forme {lat:number,lon:number} et zoom:number
        const resolution = initialResolution / Math.pow(2, zoom);
        return {
            lon: pixel.lon * resolution - originalShift,
            lat: pixel.lat * resolution - originalShift
        };
    }
     
    // converts Lat,Lon(Meters) to Lat,Lon(Degree)
    function convertMeterToDeg(meter) { // meter est sous la forme {lat:number,lon:number}
        let lon = (meter.lon / originalShift) * 180;
        let lat = (meter.lat / originalShift) * 180;
        lat = 180 / Math.PI * (2 * Math.atan(Math.exp(lat * Math.PI / 180)) - Math.PI / 2);
        return {
            lon: lon,
            lat: lat
        };
    }
     
    // si besoin, dans l'autre sens :
     
    // converts Lat,Lon(Deg) to Lat,Lon(Meters)
    function convertLatLonToMeters(latlon) { // latlon est sous la forme {lat:number,lon:number}
        let lon = latlon.lon * originalShift / 180;
        let lat = Math.log(Math.tan((90 + latlon.lat) * Math.PI / 360)) / (Math.PI / 180);
        lat = lat * originalShift / 180;
        return {lon: lon, lat: lat};
    }
     
    // converts Lat,Lon(Meters) to Lat,Lon(Pixels)
    function convertMetersToPixel(meters) { // meters est sous la forme {lat:number,lon:number}
        const resolution = initialResolution / 2 ** map.getZoom();//zoom actuel de la carte
        return {
            lon:(meters.lon + originalShift) / resolution,
            lat:(meters.lat + originalShift) / resolution
        };
    }

    tu pourras trouver d'autres explications sur ce site https://www.maptiler.com/google-maps...nds-projection

    => en bas de la page, il y a plein de function (c'est en python, mais c'est facilement convertible en JS)
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  4. #4
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 184
    Par défaut
    Bonjour,

    J'ai plusieurs questions :

    Pourquoi ne pas travailler avec mapbox ou leaflet ?
    Comment récupères-tu ta donnée géographique ? A ce moment là, tu formes un geojson que tu appelles via une requête AJAX ou un addSource/addLayer (mapbox/maplibre), ta donnée est remontée dans ta colonne de droite avec un simple click sur l'entité.

    A+

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Ha en effet si y'a du zoom et du crop ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    Citation Envoyé par labarre2002
    le soucis est que c ' est une image en jpg pas un service de géolocalisation ou une map google.
    donc ce n'est pas déconnant que de faire une simple règle de trois une fois les limites, lat/lng, de l'image connues.

  7. #7
    Membre éclairé Avatar de labarre2002
    Homme Profil pro
    Inscrit en
    Avril 2008
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 244
    Par défaut
    Bonsoir et merci pour vos réponses

    @doksuri

    ton code est réalisé par toi ou trouvé sur un site ?
    j essaie de le comprendre

  8. #8
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 489
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 489
    Par défaut
    Citation Envoyé par labarre2002 Voir le message
    @doksuri

    ton code est réalisé par toi ou trouvé sur un site ?
    j essaie de le comprendre
    realise par moi, "traduis" depuis le code du site maptiler.com (cite plus haut)
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

Discussions similaires

  1. Obtenir la longitude et la latitude depuis une adresse
    Par infoworld2013 dans le forum Android
    Réponses: 10
    Dernier message: 18/09/2013, 22h03
  2. Réponses: 4
    Dernier message: 12/12/2010, 03h31
  3. comment obtenir la longitude et la latitude d'une ville en java
    Par rwikus09 dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 10/11/2010, 16h14
  4. Latitude / longitude la plus proche dans une BD
    Par _cheval_ dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 02/09/2010, 00h46
  5. Réponses: 5
    Dernier message: 26/12/2007, 10h51

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