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

APIs Google Discussion :

[Google Earth] fly to bounds


Sujet :

APIs Google

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Points : 47
    Points
    47
    Par défaut [Google Earth] fly to bounds
    Bonjour à tous.

    Je développe actuellement une application web centré sur une carte interactive.
    Cette carte doit être google Earth ou google map si le plugin n'est pas installé.

    Je doit ensuite réaliser plusieurs actions sur la carte chargée comme : afficher / masquer des points en fonction des filtres activés, ou déplacer la caméra sur une zone précise.

    L'idéale pour moi est d'avoir des fonctions qui vont fonctionner quelque soit la carte qui a été chargé.

    Et là j'ai un problème avec l'affichage d'une zone.
    J'entant par zone, un territoire, plus ou moins grand, qui doit être entièrement visible lors que la caméra vole dessus. Exemple : Ile de france ou Les Etats Unis. Evidemment on à pas même niveau de zoome entre les deux...

    L'idée serais d'utiliser les bounds.
    Un bounds dans google map c'est un rectangle définit par deux points géographique : Sud-West et Nord-Est.
    google map a une fonction qui permet de déplacer la carte sur le bounds.

    Je ne trouve pas d'équivalent avec google earth...

    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
    20
    21
     
    var googleEarth;//Ma carte google earth
    var googleMap; //Ma carte google map
    /**
     * Déplace la caméra vers la zone sélectionnée.
     * @param float lat1 Latitude  du point Sud-West 
     * @param float lng1 Longitude du point Sud-West 
     * @param float lat2 Latitude  du point Nord-Est
     * @param float lng2 Longitude du point Nord-Est
     */
    function flyToBounds(lat1,lng1,lat2,lng2){
        if(googleEarth){
            // ... I need help
        }
        if(googleMap){
            maz_googleMap.fitBounds(new google.maps.LatLngBounds(
                new google.maps.LatLng(lat1,lng1),//sw
                new google.maps.LatLng(lat2,lng2)//ne
            ));
        }
    }
    Voila, Si vous avez une idée de comment faire ça.
    Merci

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 070
    Points : 44 677
    Points
    44 677

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Points : 47
    Points
    47
    Par défaut
    Bonjour NoSmoking,

    J'ai déjà examiné cet exemple (fort impressionnant), mais je n'y ai pas trouvé de solution pour mon problème.

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Points : 47
    Points
    47
    Par défaut earth-api-utility-library
    J'ai trouvé cette solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        if(maz_googleEarth){
            /* http://code.google.com/p/earth-api-utility-library/source/browse/trunk/extensions/examples/bounds-view.html?r=47 */
            gex = new GEarthExtensions(maz_googleEarth);
            gex.util.flyToObject(gex.dom.addFolder([
                gex.dom.buildPointPlacemark([lat1,lng1]),
                gex.dom.buildPointPlacemark([lat2,lng2])
            ]));
        }
    2 problèmes : cela me rajoute deux petits markers parasites et ça fait appel à une librairies externe (j'aurais préféré trouver une solution en natif)

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Points : 47
    Points
    47
    Par défaut
    Je vais pour le moment utiliser cette solution en attendant de trouver mieux....

    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
    function flyToBounds(lat1,lng1,lat2,lng2){
            if(ge){
                //http://code.google.com/p/earth-api-utility-library/source/browse/trunk/extensions/examples/bounds-view.html?r=47
                gex = new GEarthExtensions(ge);
                var p1 = gex.dom.buildPointPlacemark([lat1,lng1]);
                var p2 = gex.dom.buildPointPlacemark([lat2,lng2]);
                gex.util.flyToObject(gex.dom.addFolder([p1,p2]));
                p1.setVisibility(false);//C'est moche car je suis ici obligé de créer deux points pour faire un flyToObject()
                p2.setVisibility(false);//et je doit ensuite rendre les deux points invisible...
            }
            if(map){
                map.fitBounds(new google.maps.LatLngBounds(
                    new google.maps.LatLng(lat1,lng1),//sw
                    new google.maps.LatLng(lat2,lng2)//ne
                ));
            }
        }
    Si quelqu’un a une vrai solution je suis preneur

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2012
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 97
    Points : 47
    Points
    47
    Par défaut Je suis de retour !!

    Arf.. ça ne marche pas pas sous IE....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var p1 = gex.dom.buildPointPlacemark([lat1,lng1]);
    SCRIPT5009: « object » est indéfini
    cartographie, Ligne 1 Caractère 1
    L'erreur étant généré dans le fichier extensions-0.21.js à la ligne 6525
    (http://code.google.com/p/earth-api-u...nsions.js#6525)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return window['eval']('object.' + method + '(' + reprArgs.join(',') + ')');
    Je ne comprend pas car l'exemple suivant fonctionne très bien sous IE alors que mon code est très similaire.
    http://earth-api-utility-library.goo...unds-view.html

Discussions similaires

  1. Piloter Google Earth
    Par cquadjul dans le forum C++Builder
    Réponses: 7
    Dernier message: 03/05/2006, 10h03
  2. google earth téléchargement de la map entière
    Par sony351 dans le forum Autres Logiciels
    Réponses: 10
    Dernier message: 23/03/2006, 10h27
  3. [Google Earth] Google Earth en ligne
    Par Furius dans le forum Autres Logiciels
    Réponses: 11
    Dernier message: 13/11/2005, 20h28
  4. [Google Earth] Erreur avec Google Earth
    Par Furius dans le forum Autres Logiciels
    Réponses: 13
    Dernier message: 09/11/2005, 20h16
  5. google earth
    Par blue dans le forum Autres Logiciels
    Réponses: 12
    Dernier message: 16/08/2005, 08h54

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