0

私は Google マップを使用しており、さまざまな KML オーバーレイを有効にするサイドバーを作成しようとしています。KML レイヤーを、ボタンの ID タグと同じ変数に入れ、ボタンを押してアクティブにします。その ID を変数として呼び出し、setMap 関数で使用できるようにします。
これが実際に可能かどうかはわかりません

。このスクリプトでは、ID タグ 'kml1' の要素を押し、testvar='kml1' を設定し、testvar.setMap(the_Map) を代わりに配置できるようにしようとしています。 kml1.setMap(the_Map), as testvar==kml1

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>
4

3 に答える 3

0

.click()関数を試す

   $('#kml1').click(function(){
      new google.maps.KmlLayer("http://www.domain.com/map_overlay1.txt", {
            preserveViewport: true,
        });
    });
于 2012-09-14T22:42:05.453 に答える
0

ちょっとした工夫で目的を達成できると思います。

// 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);
        }
    });
});
于 2012-09-14T22:43:48.793 に答える
0

このサイトであなた自身の質問に答えるのが本当に正しいかどうかはわかりませんが、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>
于 2012-09-15T00:02:47.603 に答える