1

Google Maps V3マップと「フィルター」ボタンのある HTML フォームを含むページがあります。

また、各マーカーのインフォボックス内で HTML として解析する、各マーカーに関する情報を含む複雑な構造を持つ 1 つの大きな XML ファイルもあります。

XML ファイルからマーカーを読み取って生成し、マップ上にプロットすることはできますが、マップ上でマーカーをフィルター処理することに頭を悩ませることはできません。

「フィルター」ボタンを押した後、ページ上の HTML フォームで指定されたフィルター基準を満たすマップ上のマーカーをフィルター処理する最もクリーンな方法は何ですか?

私のフォームには、これまでのところ 1 つのリストボックスがあります。

Company- 選択した会社名に基づいて、地図上にすべての支店を表示する必要があります。XML ファイルには、すべての情報 (支店の住所、緯度、経度、電話番号、所属する会社) が含まれています。

XML 構造:

<markers>
    <marker>
        <company name="ComapnyName">
            <branches>
                <branch>
                    <address>BranchAddress</address>
                    <phone>BranchAddress</phone>
                    <products>
                        <product>
                            <name>ProductName</name>
                            <url>ProductURL</url>
                        </product>
                        <product />
                        <product />
                        ...
                    </products>
                </branch>
                <branch />
                <branch />
                ...
            </branches>
        </company>
    </marker>
    <marker />
    <marker />
    ...
</markers>
4

1 に答える 1

3

説明したフィルタリングを実現する簡単な方法は、マーカーを に配置し、フィルター設定が変更されArrayたときに をトラバースしてから、マーカーをオフにすることです。Array

Marker.setMap( null );

またはオン:

Marker.setMap( map );

フィルターをトグルとして扱う場合、フィルター設定を追跡するためにいくつかの状態変数をクレートして、次のようなコードを記述できるようにすることをお勧めします。

var filterOptionAbcIsOn = false;
function toggleFilters() {
    if ( filterOptionAbcIsOn ) {
        // loop across the Array and turn the markers off
        filterOptionAbcIsOn = false;
    }
    else {
        // loop across the Array and turn the associated markers on
        filterOptionAbcIsOn = true;
    }
}
于 2012-05-08T16:25:19.480 に答える