web-dev-qa-db-ja.com

マップの生成後にgmapマーカーにアクセスするにはどうすればよいですか?

Googleマップマーカーに問題があり、解決する方法が見つかりません。

特定のノードを表示する GMap モジュールで生成されたマップページビューがあります。また、マップ内に表示される同じノードのいくつかを、フォーマットされていないリストで表示するビューブロックもあります。私が必要なのは、リスト上のノードをマップ内のそれぞれのマーカーに関連付けることです(そのため、リストにカーソルを合わせると、マーカーアイコンが変更されます)。

(明らかに)マーカー座標と一致するノードの正確な座標を取得しているため、ノードをマーカーに関連付けることができます。私の問題は、マップ上の既存のマーカーのリストを取得する方法がわからないことです。

私が読んだものから、マーカーが生成されたときに配列内のマーカーをプッシュする必要があるので、後で配列内の要素を使用してマーカーにアクセスできますが、gmapがマーカーを生成する場所を見つけることができませんでした。私はグローバル配列を作成し、_gmap_marker.js_内のマーカーをプッシュしようとしました:

_obj.bind('addmarker', function (marker) {
  // ... //
    mymarker.Push(marker.marker);
}
_

でも私はどんな結果も見ることができます。 _countmarkers += 1;_などで生成されたマーカーをカウントしようとしましたが、出力も0です。

誰か手がかりがあり、これを達成できますか?任意のアドバイスをいただければ幸いです。

編集:わかりました、私はこの問題を解決しました。私がしたことは問題なく、問題はプロセスのタイミングにありました。私は呼びました:

_mymarkers.forEach(function(marker) {
        //funciona OK
        alert(marker.getPosition().lat() + ' - ' + marker.getPosition().lng());
    });
_

setTimeout(function(){});内で10ミリ秒の遅延。遅延を5000ミリ秒に増やすと、すべてのマーカーに十分な時間が作成され、マーカー配列に最終的にアクセスできます。

これは、マッピングモジュールの Comparison からの引用です。

GMapはレガシーモジュールと見なされます。

IP Geolocation Views&Maps モジュールを見たいと思うかもしれません。プロジェクトページからの部分的な引用:

その名前が示唆していることにかかわらず、IP Geolocation Views&Maps(IPGV&M)は何よりもまずマッピングエンジンです。

このモジュールにより、選択したマップレンダラーを使用してビューベースのマッピングソリューションを非常に簡単に作成できます(Google OpenLayersまたはLeaflet)選択した任意の場所のストレージモジュール、たとえば:

enter image description here

これにより、IPGV&Mなしでは組み合わせることができないモジュールと機能セットを組み合わせることができます。

GoogleやBing、Mapboxでの美しいアニメーション マーカーのクラスタリングのように... さまざまな マッププロバイダーのいずれか

しかし、より重要なことに、IPGV&Mには、他の場所では便利にパッケージ化されていない機能がいくつか追加されています。

これらには、フィールド値または範囲に基づく マーカーの区別 (2番目のスクリーンショット)、フォントアイコンの有無にかかわらず、さまざまな中央揃えオプションがあり、現在の訪問者の場所を重ね合わせて、複数のコンテンツタイプを同じマップ、全画面ボタンとミニマップインセット(下部のスクリーンショット)、ポリゴンサポート(ジオフィールド)、マーカータグとツールヒント、およびマーカーがホバーされたときのページ上の関連コンテンツのクロスハイライト(およびその逆)に表示されます。

enter image description here

その(印象的な)プロジェクトページにアクセスして、さらに詳しい情報を入手してください(ここにすべてを引用するのは長すぎます)。そのプロジェクトページには、さまざまなスクリーンショットも含まれています。

1
Pierre.Vriens