Установить переменную в другую переменную по id

Я работаю с Google Maps и пытаюсь создать боковую панель, которая позволяет использовать различные наложения KML. Я поместил слои KML в переменные с идентичным тегом ID кнопки, которую нужно нажать, чтобы активировать их, в надежде вызвать этот идентификатор в качестве переменной, которую затем можно использовать в функции setMap.
Не уверен, возможно ли это на самом деле

В этом скрипте я пытаюсь сделать так, чтобы вы нажимали элемент с тегом ID 'kml1', устанавливали testvar='kml1', а затем могли поместить testvar.setMap(the_Map) вместо kml1.setMap(the_Map), как тествар == кмл1

JQuery

kml1 = new google.maps.KmlLayer("http://www.domain.com/map_overlay1.txt", {
            preserveViewport: true,
        });
        kml2 = new google.maps.KmlLayer("http://www.odomain.com/map_overlay2.txt", {
            preserveViewport: true,
        });

    $(document).ready(function() {
        $('.kml_item').toggle(
                function() {
                    for (i=0; i<50; i++) {
                        testvar = this.id
                        if (testvar == 'kml' + i) {
                            testvar.setMap(the_Map);
                            break;
                        }
                    }
                },
                function() {
                    for (i=0; i<50; i++) {
                        testvar = this.id
                        if (testvar == 'kml' + i) {
                            testvar.setMap(null);
                            break;
                        }
                    }
            );
    })

связанный HTML

<div id="kml1" class="kml_item">KML 1</div>
            <div id="kml2" class="kml_item">KML 2</div>

3 ответа

Решение

Не уверен, что это действительно кошерный ответ на ваш собственный вопрос на этом сайте, но я нашел другой метод, хотя я считаю, что моя первоначальная проблема использования тега ID в качестве переменной неразрешима, как я к ней подходил. Вместо каждого слоя KML в отдельной переменной я собираю их в массив. Предоставление кликабельным элементам div для тега заголовка позволяет функции подсчитывать до тех пор, пока элемент массива не совпадет с номером заголовка для div и не поместит этот элемент из массива на карту.

Массив KML

kml_arr = [
            new google.maps.KmlLayer("http://www.domain.com/map_overlay1.txt", {
            preserveViewport: true,
        }),
            new google.maps.KmlLayer("http://www.domain.com/map_overlay2.txt", {
            preserveViewport: true,
        })
        ]

JQuery

$(document).ready(function() {
        $('.kml_item').toggle(
                function() {
                    $(this).animate({backgroundColor: '#ffffff'}, 200);
                    for (i=0; i<50; i++) {
                        if (i == this.title) {
                            kml_arr[i].setMap(the_Map);
                            break;
                        }
                    }
                },
                function() {
                    $(this).animate({backgroundColor: '#d0d0d0'}, 200);
                    for (i=0; i<50; i++) {
                        if (i == this.title) {
                            kml_arr[i].setMap(null);
                            break;
                        }
                    }
                }
            );
    })

связанный HTML

                <div title="0" id="kml1" class="kml_item">KML 1</div>
            <div title="1" id="kml2" class="kml_item">KML 2</div>

Попробуй .click() функция

   $('#kml1').click(function(){
      new google.maps.KmlLayer("http://www.domain.com/map_overlay1.txt", {
            preserveViewport: true,
        });
    });

Я думаю, что вы можете получить то, что вы ищете, с помощью нескольких настроек.

// These kml objects will be attached to the global window object at
// window.kml1
// or
// window['kml1']
var kml1 = new google.maps.KmlLayer("http://www.domain.com/map_overlay1.txt", {
        preserveViewport: true,
    });
var kml2 = new google.maps.KmlLayer("http://www.odomain.com/map_overlay2.txt", {
        preserveViewport: true,
    });

$(document).ready(function() {
    $('.kml_item').click(function() {
        // Access the various kml objects and set the_Map
        var kml = window[this.id]
        if(kml.getMap()) {
            kml.setMap(null);
        }
        else {
            kml.setMap(the_Map);
        }
    });
});
Другие вопросы по тегам