Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Sun 22 May 2016 18:13

asma_kadjoudj
Juste Inscrit !
Date d'inscription: 22 May 2016
Messages: 8

kml_layer

Je mets en place une carte google maps et Je souhaiterais afficher des cases à cocher pour appeler chaque couche kml (il y en aura une dizaine) ou séparemment ou toutes à la fois.
J'ai essayé plusieurs solutions sans y parvenir.
merci

Hors ligne

 

#2 Mon 23 May 2016 12:15

demo972
Participant occasionnel
Date d'inscription: 1 Mar 2012
Messages: 18

Re: kml_layer

Bonjour,

As tu un exemple de ce que tu as déjà produit ?

A bientôt !

Hors ligne

 

#3 Mon 23 May 2016 16:06

asma_kadjoudj
Juste Inscrit !
Date d'inscription: 22 May 2016
Messages: 8

Re: kml_layer

code html et code javascript

Hors ligne

 

#4 Mon 23 May 2016 16:56

demo972
Participant occasionnel
Date d'inscription: 1 Mar 2012
Messages: 18

Re: kml_layer

Oui bon c'est pas exactement ce que je te demandais smile

Mais pour cette fois on va faire comme ci... ^^

Donc concernant ton problème, si je l'ai bien compris  il faut que tu alternes entre layer.setMap(map) et layer.setMap(null) pour afficher ou non ton layer kml.
La doc de google map le dit clairement : https://developers.google.com/maps/docu … sOverview.

Pour cela le moins compliqué serait que tu fasses tes inputs type='checkbox' et qu'ensuite tu fasses un écouteur d'évent  change, et quand l'input est checked (true).
La encore une petite recherche sur google et tu trouves des exemples qui peuvent t'aider : https://www.google.fr/webhp?sourceid=ch … 20switcher

Ensuite je te fournis un bout de code que j'ai tapé pour t'aider (largement améliorable ! mais qui te servira de base):
http://jsfiddle.net/luda973/T78Hd/31/

ps : Tu pourras améliorer le faite de ne pas ajouter autant de variable qu'il y a de layer, mais aussi de mieux gérer la logique des les événements afin de ne pas générer d’erreurs.
ps 2: google est ton ami smile

En espérant avoir pu cerner tes attentes... Si ce n'est pas le cas n'hésites pas à montrer un bout de code que tu as fait pour nous aiguiller.

A plus.

Hors ligne

 

#5 Mon 23 May 2016 17:40

asma_kadjoudj
Juste Inscrit !
Date d'inscription: 22 May 2016
Messages: 8

Re: kml_layer

salut demo972
J'ai envoyé le fichier html.
Merci pour votre aide

Code:

<!DOCTYPE html>
<html>
<head>
<title>*********</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <style type="text/css">
html { height: 100%;
} body {
height: 100%; margin: 0px; padding: 0px;
} #map {
height: 100%; }
</style>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false" ></script> <script type="text/javascript">
function initialize() {
var latlng = new google.maps.LatLng(45.281071, 8.393555); 
var myOptions = {
zoom: 5,
center: latlng,
mapTypeId: google.maps.MapTypeId.TERRAIN, 
navigationControl: true, mapTypeControl: true, 
scaleControl: true,
scaleControlOptions: {
position: google.maps.ControlPosition.BOTTOM.LEFT,
style: google.maps.ScaleControlStyle.DEFAULT }
};
 
var map = new google.maps.Map(
document.getElementById("map"), myOptions);
 
var kmllayer1 = new google.maps.KmlLayer('chemin_de_mon_fichier_kml1', {preserveViewport:true});
    kmllayer1.setMap(map);
    google.maps.event.addListener(kmllayer1, 'click', function(){
    map.setZoom(14);});
    center: latlng
    tag:'chk1'    
 
var kmllayer2 = new google.maps.KmlLayer('chemin_de_mon_fichier_kml2', {preserveViewport:true});
    kmllayer2.setMap(map);
    google.maps.event.addListener(kmllayer2, 'click', function(){
    map.setZoom(14);
    center: latlng
    tag:'chk2'
});
}
 
 
 
function detectBrowser() {
var useragent = navigator.userAgent;
var mapdiv = document.getElementById("map");
if (useragent.indexOf('iPhone') != -1 || useragent.indexOf('Android') != -1)
{
mapdiv.style.width = '100%'; myOptions = {
navigationControlOptions : {
style : google.maps.NavigationControlStyle.ANDROID
},
mapTypeControlOptions : {
style : google.maps.MapTypeControlStyle.DROPDOWN_MENU }
};
map.setOptions(myOptions); } else {
mapdiv.style.width = '100%'; }
}
 
 
</script>
</head>
 
<body onload="initialize()">
<div id="map" style="width: 622px; height: 500px;"></div>
<div><p><label><input type="checkbox" id="mon_ficher.kml1" onclick="toggleFile(this.id)" />
kml1</label></p>
<p><label><input type="checkbox" id="mon_ficher.kml2" onclick="toggleFile(this.id)" />
kml2</label></p></div>
 
<!-- Include Javascript -->
<script type="text/javascript" >
    function toggleFile(file) {
        var objCheckbox = document.getElementById(file);
        if (objCheckbox.checked) {
            readKml(file);
        }
        else {
            ge.getFeatures().removeChild(currentKml[file]);
            currentKml[file] = null;
        }
    }

    function readKml(file) {
        var kmlFolder = "chemin_de_mon_dossier_ou_se_trouvent_les_fichiers_kml"; // To set
        var kmlUrl = kmlFolder + file;
        google.earth.fetchKml(ge, kmlUrl, function (kml) {
            if (!kml) {
                alert("Erreur : Lecture du fichier KML impossible !");
                return;
            }
            ge.getFeatures().appendChild(kml);
            currentKml[file] = kml;
            if (kml.getAbstractView()) {
                ge.getView().setAbstractView(kml.getAbstractView());
            }
        });
    }
    var currentKml = {
        "mon_ficheir_kml1": null, // To set
    }
    var currentKml = {
        "mon_ficheir_kml2": null, // To set
    }



</script> 
</body>
</html>

Dernière modification par asma_kadjoudj (Mon 23 May 2016 17:42)

Hors ligne

 

#6 Mon 23 May 2016 18:32

asma_kadjoudj
Juste Inscrit !
Date d'inscription: 22 May 2016
Messages: 8

Re: kml_layer

Comment éliminer cette erreur,"Oops! Something went wrong.
This page didn't load Google Maps correctly. See the JavaScript console for technical details"quand excuter cette programme

Code:

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0">
    <meta charset="utf-8">
    <title>KML Layers</title>
    <style>
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
      #map {
        height: 100%;
      }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>

        function initMap() {
            var map = new google.maps.Map(document.getElementById('map'), {
                zoom: 11,
                center: { lat: 41.876, lng: -87.624 }
            });

            var ctaLayer = new google.maps.KmlLayer({
                url: 'http://googlemaps.github.io/js-v2-samples/ggeoxml/cta.kml',
                map: map
            });
        }

    </script>
    <script async defer
        src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCf14TyeRinOafY73cl7rwovGG_3imhm-U&signed_in=true&callback=initMap">
    </script>
  </body>
</html>

Hors ligne

 

#7 Mon 23 May 2016 21:29

demo972
Participant occasionnel
Date d'inscription: 1 Mar 2012
Messages: 18

Re: kml_layer

Bonsoir,

Je ne connais pas très bien google maps. Mais cette erreur, quand tu regarde dans ta console javascript te dit que tu n'as pas activé google maps javascript api.

liens : https://developers.google.com/maps/docu … errorcodes

Il faut donc faire les démarches ici  : https://developers.google.com/maps/docu … -key?hl=fr

Tu clics sur  Google Developers Console (etape 1) une fois redirigé tu cherches google maps javascript. Ensuite tu suis les démarches.

Puis une fois que tu as ta clef tu remplaces juste cette portion de code par ta nouvelle clef "https://maps.googleapis.com/maps/api/js?key=AIzaSyCf14TyeRinOafY73cl7rwovGG_3imhm-U&signed_in=true&callback=initMap";

Et l'erreur devrait disparaître.

Hors ligne

 

Pied de page des forums

Powered by FluxBB