0

横にサイドバー div があるマップがあります。マップ上の各マーカーに対応するハイパーリンクがサイドバーにあり、クリックするとそのマーカーの情報ボックスがポップアップするようにしようとしています。

function linkClick(){
   google.maps.event.trigger(gmarkers[cpid], "click");
}

content += '<a href="javascript:linkClick(' + cpid + ')">'+tmpName+"</a><br>";
$("#cplist").html(content);

cpid は、マップ上のすべてのポイントの一意の ID であり、マーカーの残りの情報とともにデータベースに保存される値です。

マップ上にマーカーがあり、サイド バーにリンクがありますが、2 つを接続する方法がわかりません。これを達成するために「linkClick」関数を作成しましたが、エラーが発生します:

ReferenceError: Can't find variable: linkClick

現在、上記のコードはすべて、マップ上にマーカーをプロットするループ内にあります。十分な詳細/コードが含まれていると思います。

これは私が達成したいことの例ですhttp://www.geocodezip.com/v3_MW_example_categories.html

4

3 に答える 3

2

アプローチを変更することをお勧めします。イベントをプッシュしようとするのではなく、click直接 に移動してInfoWindowを呼び出してopenください。コードのどこかに、 ;clickを開く各マーカーのイベント リスナーがあります。そのため、リンクに関連付けられた関数が呼び出されたときに、マーカー イベント ハンドラーと同じように、インスタンスInfoWindowへの参照を保持して開きます。InfoWindowclickonlick

または、一般的な戦略に従い、単一のグローバルな で作業している場合はInfoWindow、 を受け入れ、cpid必要なコンテンツを に配置しInfoWindow、正しい を設定してpositionから を呼び出す関数を記述しますInfoWindow.open( map )

したがって、これがイベント リスナー コードの場合:

google.maps.event.addListener(marker, 'click', function () {
    infowindow.setContent(tmpName+" is "+tmpDist+"km away from you."); 
    infowindow.open(map, this);
});

新しい関数を追加します。

function openInfoWindow( cpidAndWhateverElseParam ) {
    infowindow.setContent(tmpName+" is "+tmpDist+"km away from you."); 
    infowindow.open(map, this);
}

リンクコードを次のように変更します。

content += '<a href="javascript:openInfoWindow(' + cpidAndWhateverElseParam +
    ')">'+tmpName+"</a><br>";
于 2012-05-07T16:26:42.357 に答える
0

変数を渡していない関数については、それが ReferenceError: Can't find variable: linkClick を与えている理由です

function linkClick(cpid){
   google.maps.event.trigger(gmarkers[cpid], "click");
}

content += <a onClick=linkClick(' + cpid + ')">'+tmpName+"</a><br>";
$("#cplist").html(content);
于 2012-05-07T15:34:39.733 に答える
0

私は一度似たようなものを作りましたが、要素を使用する代わりにaボタンを使用し、イベントで純粋なjavascriptのようOnClickに、イベントハンドラーを配置して動作するので、あなたの場合、このようなイベントを処理しようとしました

<a onClick=linkClick(' + cpid + ')">'+tmpName+"</a>
于 2012-05-07T15:30:03.517 に答える