0

サイトで作業している Google マップがあります。マップには次のものが含まれます。

3 種類のマップ ピン ピン同士が近すぎると、ピンもクラスター化されます。

どのように今まで問題にぶつかったか: 私は、問題である各マーカー グループの可視性を切り替える機能を提供することを任されました.. マーカーがクラスター化されておらず、次のコードが正常に機能する場合、これは簡単です:

    onOff = (onOff == 1) ? sawdays.accordion.map : null;


    var mapArray;
    switch( type ){
        case 'bandb': mapArray = sawdays.accordion.bandbMarkers;
        break;

        case 'hotel': mapArray = sawdays.accordion.hotelMarkers;
        break;

        case 'inn': mapArray = sawdays.accordion.innMarkers;
        break;

        case 'pub': mapArray = sawdays.accordion.pubMarkers;
        break;
    }

    if ( mapArray.length > 0 ) {
        for (i in mapArray)
            mapArray[i].setMap(onOff);
        }
    }

ただし、問題は、クラスター内のピンが切り替えられないことです。ホテルのピンをオフにしてクラスターをクリックすると、ホテルの地図のピンがまだ残っています...

クラスターに関する次の参照を見つけました: http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/docs/reference.htmlしかし、私が求めているものを達成する方法がわかりません。

ここで壁にぶつかったと思います。クラスタの機能を維持しながらトグルの機能を追加する最善の方法は、マップを再描画することです (これはサイトhttp://www.sawdays.co.ukです)。 /special-places/content/search/?map#maptypeid=roadmap&zoom=9&lng=-3.36493113281245&lat=54.874929190748624 )。マップのデータはページの読み込み時に ajax されるため、マップを再構成するためにすべてのデータがクライアント マシンに既に存在します...

質問: クラスター内外の両方からマップ ピンの表示を切り替えることは可能ですか?

4

1 に答える 1

0

MarkerClustererは、クラスター化するマーカーの可視性を制御します(したがって、マーカーを個別に制御することはできません)

私のおすすめ:

  1. カテゴリごとに異なる配列を保持する
  2. カテゴリを「非表示」にするには、それらのマーカーをMarkerClustererから削除するか、MarkerClustererをクリアして、表示されているカテゴリの配列を追加するだけです。
  3. カテゴリを「表示」するには、これらのマーカーをMarkerClustererに追加するか、MarkerClustererをクリアして、表示されているカテゴリの配列を追加します。
  4. クラスター化されていないマーカーを非表示/表示します(実際には、1、2、および3を正しく実行した場合、これはおそらく必要ありません)
于 2012-10-06T13:09:45.913 に答える