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 :

Utilisation de KmlLayer.getDefaultViewport [Google Maps]


Sujet :

APIs Google

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 28
    Points : 35
    Points
    35
    Par défaut Utilisation de KmlLayer.getDefaultViewport
    Bonjour à tous/toutes!

    Je me tourne aujourd'hui vers vous dans l'espoir de trouver une solution à mon problème concernant
    l’utilisation de getDefaultViewport lors de l'affichage de fichiers KML.

    J'aimerais pouvoir afficher un MARKER au centre d'un fichier KML (polygones) en utilisant la propriété
    .getDefaultViewport().getCenter(). Malheureusement, lorsque j'essaye d'afficher la valeur de
    kml.getDefaultViewport(), Java me répond "Undefined".

    Voici mon code, qui me permet de correctement afficher plusieurs KML provenant d'un liste:

    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
    22
    23
     
    function initialisation(){
    var centreCarte = new google.maps.LatLng(liste[0][2], liste[0][3]);
    var optionsCarte = {
    			zoom: 7,
    			center: centreCarte,
    			mapTypeId: google.maps.MapTypeId.ROADMAP}							
    var maCarte = new google.maps.Map(document.getElementById("EmplacementDeMaCarte"), optionsCarte);
     
    var i=0,li=liste.length;
    while(i<li){
    var kml = new google.maps.KmlLayer('http://site.fr/kml/'+liste[i][0].toString()+'.kml', {preserveViewport:true});
    kml.setMap(maCarte);
     
    var coor = kml.getDefaultViewport().getCenter();
     
    var marker = new MarkerWithLabel({
    position: new google.maps.LatLng(coor),
    map: maCarte,
    ... //autre options de MarkerWithLabel
    });
    i++;}
    }
    Savez vous donc pourquoi ma variable COOR reste à Undefined? Et comment faire pour lui affecter la valeur que je cherche?

    Afin de faire quelques tests, j'ai ajouter un Listener sur defaultviewport_changed à la fin
    de ma function pour voir ce qu'il retourne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    google.maps.event.addListener(kml, "defaultviewport_changed",
    			function() {
    			alert('Default viewport = ' + kml.getDefaultViewport().getCenter());
    					});
    Il retourne bien les coordonnés que je veux:



    Comment donc récupérer ces valeurs? Désolé si ma question vous paraît bête^^. En tout cas merci d'avance pour vos conseils .

    Cz

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 089
    Points : 44 660
    Points
    44 660
    Par défaut
    Bonjour,
    Malheureusement, lorsque j'essaye d'afficher la valeur de
    kml.getDefaultViewport(), Java me répond "Undefined".
    javascript.

    Il te faut surement attendre que le fichier KML et sa représentation soit effective, donc autant créer le marker à ce moment là.

    Juste une petite remarque, pourquoi ne pas faire directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var kml = new google.maps.KmlLayer(
      'http://site.fr/kml/' + liste[i][0].toString() + '.kml',
      {
        'preserveViewport': true,
        'map': maCarte
      });

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 28
    Points : 35
    Points
    35
    Par défaut
    Salut,

    merci pour tes infos, du coup j'ai modifié le code à la maison .

    Par contre je ne vois toujours pas ou récupérer la variable COOR que je souhaite,
    mon script se terminant juste après l'event Listener:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    google.maps.event.addListener(kml, "defaultviewport_changed",
    			function() {
    			alert('Default viewport = ' + kml.getDefaultViewport().getCenter());
    					});
    	}
    	google.maps.event.addDomListener(window, 'load', initialisation);
     
    	</script>
    </head>
    Saurais tu m'aiguiller encore d'avantage?^^

    Cz

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 089
    Points : 44 660
    Points
    44 660
    Par défaut
    il te faut récupérer les données une fois le KML chargé, sur l'événement defaultviewport_changed ou encore status_changed.

    Cela pourait donner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    while (i < li) {
      var oKml = new google.maps.KmlLayer('http://site.fr/kml/' + liste[i][0].toString() + '.kml', {
        'preserveViewport': true,
        'map': maCarte
      });
      google.maps.event.addListener( oKml, "defaultviewport_changed", function () {
        var oMarker = new google.maps.Marker({
          'position': this.getDefaultViewport().getCenter(),
          'map': this.getMap()
        });
      });
      i++;
    }
    on utilise le mot clé this à l'intérieur de la fonction anonyme pour des raisons expliquées dans la FAQ

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 28
    Points : 35
    Points
    35
    Par défaut
    Nickel, merci à toi!!

    Cela me permet donc d'afficher au centre des KML chargés un MARKER contenant du texte uniquement
    (l'image noicon.png ne mesure que 1px*1px), c'est exactement l'idée.

    Je ne sais pas si c'est la bonne solution, mais cela fonctionne parfaitement^^.

    Voici le code:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    function initialisation(){
            //affectation du résultat de la requète SQL et création des variables
    	var liste = [<?php echo $liste;?>];
    	var centreCarte = new google.maps.LatLng(liste[0][2], liste[0][3]);
    	var optionsCarte = {
    		zoom: 7,
    		center: centreCarte,
    		mapTypeId: google.maps.MapTypeId.ROADMAP}
     
    	var maCarte = new google.maps.Map(document.getElementById("EmplacementDeMaCarte"), optionsCarte);
     
    	//boucle permettant l'affichage des fichiers KML et la création des MARKER
    	//en fonction de la liste obtenue lors de la requète SQL
    	var i=0,li=liste.length;
    	while(i<li){
    		var kml = new google.maps.KmlLayer('http://site.fr/kml/'+liste[i][0].toString()+'.kml',	{
        			'preserveViewport': true,
        			'map': maCarte,
        			'valeuri': i
      		});
    		google.maps.event.addListener(kml, "defaultviewport_changed", 
    			function() {
    				var marker = new MarkerWithLabel({
              				'position': this.getDefaultViewport().getCenter(),
              				'map': this.getMap(),
           					'draggable': true,
           					'raiseOnDrag': false,
           					'icon': 'http://site.fr/icon/noicon.png',
           					'labelContent': liste[this.valeuri][1],
           					'labelAnchor': new google.maps.Point(27, 12),
           					'labelClass': "labels",
           					'labelStyle': {opacity: 1}	
    				});
    			});
     		i++;}
    	}
    A bientôt sur le Fofo!!

    Cz

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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