Google maps api 3 Google Maps API V3中的交互式图例,带有两个或更多KML层

Google maps api 3 Google Maps API V3中的交互式图例,带有两个或更多KML层,google-maps-api-3,gis,kml,Google Maps Api 3,Gis,Kml,我对JavaScript和Google Maps API(基本上是web GIS的整个世界)相当陌生,我正在努力为几个KML层(在本例中,只有两个)或类似的东西创建交互式图例 但是对于KML层 这是我的密码: <script> var tocka = new google.maps.LatLng(46.150346, 15.863571); function initialize() { var neven = { center: tocka,

我对JavaScript和Google Maps API(基本上是web GIS的整个世界)相当陌生,我正在努力为几个KML层(在本例中,只有两个)或类似的东西创建交互式图例 但是对于KML层

这是我的密码:

<script>
  var tocka = new google.maps.LatLng(46.150346, 15.863571);

  function initialize() {
    var neven = {
      center: tocka,
      zoom: 15,
      mapTypeId: google.maps.MapTypeId.HYBRID
    };
    var map = new google.maps.Map(document.getElementById("googleMap"), neven);


    var ctaLayer = new google.maps.KmlLayer({
      url: 'https://dl.dropboxusercontent.com/u/126827789/kuce.kmz'

    });
    ctaLayer.setMap(map);

    var ctaLayer = new google.maps.KmlLayer({
      url: 'https://dl.dropboxusercontent.com/u/126827789/neven.kmz'
    });
    ctaLayer.setMap(map);
  }

  google.maps.event.addDomListener(window, 'load', initialize);
</script>

var-tocka=newgoogle.maps.LatLng(46.150346,15.863571);
函数初始化(){
var neven={
中心:托卡,
缩放:15,
mapTypeId:google.maps.mapTypeId.HYBRID
};
var map=new google.maps.map(document.getElementById(“谷歌地图”),neven);
var ctaLayer=new google.maps.KmlLayer({
网址:'https://dl.dropboxusercontent.com/u/126827789/kuce.kmz'
});
ctaLayer.setMap(map);
var ctaLayer=new google.maps.KmlLayer({
网址:'https://dl.dropboxusercontent.com/u/126827789/neven.kmz'
});
ctaLayer.setMap(map);
}
google.maps.event.addDomListener(窗口“加载”,初始化);
所以。。如果可能的话,我想添加一些复选框在这两个kml文件之间切换

欢迎提供任何帮助和建议。 提前谢谢大家,,
Neven.

因此,您并不是真正要求提供有关地图内容的图例,只是一个切换选项。我从另一个问题()中得到了这个答案,但我把它清理干净了,因为它最初对我不起作用。它现在运行良好。我有一个:

// Define the kml layers 
var kml = {
    a: {
        name: "Elevation Contours",
        url:'https://website.com/id/LimaContours200.kml'},
    b: {
        name: "Districts",
        url: 'https://https://website.com/id/LimaDistricts.kml'},
c:{
       name: "CAPECO Zones",
   url: 'https://website.com/id/ZonasCapeco.kml'}}

function initialize(){
    var mapOptions ={
    zoom: 12,
    center: new google.maps.LatLng(-12.0456072,-76.9991801),
    mapTypeId: google.maps.MapTypeId.SATELLITE,};
    //Display the map
    map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
    createTogglers();
    removeAll();
    startup();};

// 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, really
function 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 objects
function removeAll() {
    for (var prop in kml) {
        if (kml[prop].obj) {
            kml[prop].obj.setMap(null);
            delete kml[prop].obj;}}};

// Append Class on Select
function 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 selector
var checkit = document.getElementById('b');
    checkit.checked = true;
toggleKML(checkit, 'b');
highlight(checkit, 'selector-b');}
//定义kml层
var kml={
a:{
名称:“高程等高线”,
网址:'https://website.com/id/LimaContours200.kml'},
b:{
名称:"地区",,
网址:'https://https://website.com/id/LimaDistricts.kml'},
c:{
名称:“CAPECO区”,
网址:'https://website.com/id/ZonasCapeco.kml'}}
函数初始化(){
var映射选项={
缩放:12,
中心:新google.maps.LatLng(-12.0456072,-76.9991801),
mapTypeId:google.maps.mapTypeId.SATELLITE,};
//显示地图
map=new google.maps.map(document.getElementById(“地图画布”),mapOptions);
createTogglers();
removeAll();
启动();};
//重要的功能。。。kml[id].xxxxx返回到顶部
功能切换KML(选中,id){
如果(选中){
var layer=new google.maps.KmlLayer(kml[id].url{
对,,
suppressInfoWindows:true});
//将kml存储为obj
kml[id].obj=图层;
kml[id].obj.setMap(map);}
否则{
kml[id].obj.setMap(null);
删除kml[id].obj;};
//动态创建控件,因为这样更容易,真的
函数createTogglers(){
var html=“
    ”; 用于(以kml为单位的var prop){ html+=“
  • ”+ kml[prop].name+“”;} html+=“
  • ”+ “删除所有层”+“”; document.getElementById(“toggle_box”).innerHTML=html;}; //移除所有对象的简单方法 函数removeAll(){ 用于(以kml为单位的var prop){ 如果(kml[prop].obj){ kml[prop].obj.setMap(null); 删除kml[prop].obj;}}; //在Select上追加类 功能突出显示(框,列表项){ var selected=‘selected’; var normal=‘normal’; document.getElementById(listitem).className=(box.checked?selected:normal);}; 函数启动(){ //例如,这会在加载时切换kml b并更新菜单选择器 var checkit=document.getElementById('b'); checkit.checked=true; 切换KML(选中“b”); 突出显示(选中“选择器-b”);}
因此,您并不是真正要求提供有关地图内容的图例,只是一个切换选项。我从另一个问题()中得到了这个答案,但我把它清理干净了,因为它最初对我不起作用。它现在运行良好。我有一个:

// Define the kml layers 
var kml = {
    a: {
        name: "Elevation Contours",
        url:'https://website.com/id/LimaContours200.kml'},
    b: {
        name: "Districts",
        url: 'https://https://website.com/id/LimaDistricts.kml'},
c:{
       name: "CAPECO Zones",
   url: 'https://website.com/id/ZonasCapeco.kml'}}

function initialize(){
    var mapOptions ={
    zoom: 12,
    center: new google.maps.LatLng(-12.0456072,-76.9991801),
    mapTypeId: google.maps.MapTypeId.SATELLITE,};
    //Display the map
    map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
    createTogglers();
    removeAll();
    startup();};

// 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, really
function 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 objects
function removeAll() {
    for (var prop in kml) {
        if (kml[prop].obj) {
            kml[prop].obj.setMap(null);
            delete kml[prop].obj;}}};

// Append Class on Select
function 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 selector
var checkit = document.getElementById('b');
    checkit.checked = true;
toggleKML(checkit, 'b');
highlight(checkit, 'selector-b');}
//定义kml层
var kml={
a:{
名称:“高程等高线”,
网址:'https://website.com/id/LimaContours200.kml'},
b:{
名称:"地区",,
网址:'https://https://website.com/id/LimaDistricts.kml'},
c:{
名称:“CAPECO区”,
网址:'https://website.com/id/ZonasCapeco.kml'}}
函数初始化(){
var映射选项={
缩放:12,
中心:新google.maps.LatLng(-12.0456072,-76.9991801),
mapTypeId:google.maps.mapTypeId.SATELLITE,};
//显示地图
map=new google.maps.map(document.getElementById(“地图画布”),mapOptions);
createTogglers();
removeAll();
启动();};
//重要的功能。。。kml[id].xxxxx返回到顶部
功能切换KML(选中,id){
如果(选中){
var layer=new google.maps.KmlLayer(kml[id].url{
对,,
suppressInfoWindows:true});
//将kml存储为obj
kml[id].obj=图层;
kml[id].obj.setMap(map);}
否则{
kml[id].obj.setMap(null);
删除kml[id].obj;};
//动态创建控件,因为这样更容易,真的
函数createTogglers(){
var html=“
    ”; 用于(以kml为单位的var prop){ html+=“
  • ”+ kml[prop].name+“”;} html+=“
  • ”+ “删除所有层”+“”; document.getElementById(“toggle_box”).innerHTML=html;}; //移除所有对象的简单方法 函数removeAll(){ 用于(以kml为单位的var prop){ 如果(kml[prop].obj){ kml[prop].obj.setMap(null); 删除kml[prop].obj;}}; //在Select上追加类 功能突出显示(框,列表项){ var selected=‘selected’; var normal=‘normal’; document.getElementById(listitem).className=(box.checked?selected:normal);}; 函数启动(){ //例如,这会在加载时切换kml b并更新菜单选择器 var checkit=document.getElementById('b'); checkit.checked=true; 切换KML(选中“b”); 突出显示(选中“选择器-b”);}