Est-il un moyen simple d'cases d'activation /désactivation (on/off) couches KML pour Google Maps v3? Je suis venu à travers cesarticles, mais aucun d'eux n'a fonctionné pour moi.
Désolé mon article n'a pas fonctionné pour vous, il est un peu daté.
Voici un exemple complet d'un cas typique de Gmaps bascule en supposant que vous utilisez des fichiers kml.
<html><head><scripttype="text/javascript"src="http://maps.googleapis.com/maps/api/js?sensor=false"></script><scripttype="text/javascript">var map;//lets define some vars to make things easier latervar kml ={
a:{
name:"MPLS/STPL",
url:"https://maps.google.com/maps/ms?authuser=0&vps=5&ie=UTF8&msa=0&output=kml&msid=212971981154994583939.0004b06640255267e038c"},
b:{
name:"Bicycling Tour Routes",
url:"https://maps.google.com/maps/ms?authuser=0&vps=4&ie=UTF8&msa=0&output=kml&msid=212971981154994583939.0004902a1824bbc8c0fe9"}//keep adding more if ye like };//initialize our goofunction initializeMap(){var options ={
center:new google.maps.LatLng(44.9812,-93.2687),
zoom:13,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map =new google.maps.Map(document.getElementById("map_canvas"), options);
createTogglers();};
google.maps.event.addDomListener(window,'load', initializeMap);//the important function... kml[id].xxxxx refers back to the top function toggleKML(checked, id){if(checked){var layer =new google.maps.KmlLayer(kml[id].url,{
preserveViewport:true,
suppressInfoWindows:true});//store kml as obj
kml[id].obj = layer;
kml[id].obj.setMap(map);}else{
kml[id].obj.setMap(null);delete kml[id].obj;}};//create the controls dynamically because it's easier, reallyfunction createTogglers(){var html ="<form><ul>";for(var prop in kml){
html +="<li id=\"selector-"+ prop +"\"><input type='checkbox' id='"+ prop +"'"+" onclick='highlight(this,\"selector-"+ prop +"\"); toggleKML(this.checked, this.id)' \/>"+
kml[prop].name +"<\/li>";}
html +="<li class='control'><a href='#' onclick='removeAll();return false;'>"+"Remove all layers<\/a><\/li>"+"<\/ul><\/form>";
document.getElementById("toggle_box").innerHTML = html;};//easy way to remove all objectsfunction removeAll(){for(var prop in kml){if(kml[prop].obj){
kml[prop].obj.setMap(null);delete kml[prop].obj;}}};//Append Class on Selectfunction highlight(box, listitem){var selected ='selected';var normal ='normal';
document.getElementById(listitem).className =(box.checked ? selected: normal);};function startup(){//for example, this toggles kml b on load and updates the menu selectorvar checkit = document.getElementById('b');
checkit.checked =true;
toggleKML(checkit,'b');
highlight(checkit,'selector1');}</script><styletype="text/css">.selected {font-weight: bold;}</style></head><bodyonload="startup()"><divid="map_canvas"style="width:100%;height:600px;"></div><divid="toggle_box"style="position: absolute;top:100px;right:20px;padding:10px;background:#fff;z-index:5;"></div></body></html>
C'est de la pure js donc, bien sûr, à l'aide de jQuery, vous pouvez faire des choses un peu plus facile. Espérons que cette aide!
a parfaitement fonctionné, mais en cliquant sur la couche n'a pas de pop up table d'attribut.. pourquoi ?? Vous voulez dire que l'infowindow? ensemble suppressInfoWindows: true à false -- j'encourage les gens à lire Google documents, il contient en fait tout ce que vous devez savoir! developers.google.com/maps/documentation/javascript/3.exp/...
Stocker vos couches dans la gamme pour les plus actions (par exemple, le basculement).
Vous pouvez basculer de la couche de par son index sur ce tableau:
toggleLayer( layersArray[index], map );
Ou d'appliquer le basculement de toutes les couches:
for(var index =0; index < layersArray.length;++index){
toggleLayer( layersArray[index], map );}
Que faire si j'ai deux couches? Serait-ce encore du travail? Ou ai-je besoin de créer deux fonctions distinctes? Désolé, je suis un débutant en JavaScript. Vérifier ma mise à jour
Désolé mon article n'a pas fonctionné pour vous, il est un peu daté.
Voici un exemple complet d'un cas typique de Gmaps bascule en supposant que vous utilisez des fichiers kml.
C'est de la pure js donc, bien sûr, à l'aide de jQuery, vous pouvez faire des choses un peu plus facile. Espérons que cette aide!
Vous voulez dire que l'infowindow? ensemble suppressInfoWindows: true à false -- j'encourage les gens à lire Google documents, il contient en fait tout ce que vous devez savoir! developers.google.com/maps/documentation/javascript/3.exp/...
OriginalL'auteur efwjames
Pour le basculement kml couche, vous pouvez essayer cette fonction:
Stocker vos couches dans la gamme pour les plus actions (par exemple, le basculement).
Vous pouvez basculer de la couche de par son index sur ce tableau:
Ou d'appliquer le basculement de toutes les couches:
Vérifier ma mise à jour
OriginalL'auteur Engineer