1

専門用語の誤用がありましたらご容赦ください。私はまだプログラミングにかなり慣れていません。Google Maps API 3.12 を使用して住所付きの 600 エントリのメニューを含むマップを作成していますが、これは主に JavaScript の問題です。各住所は (メニューで) クリック可能で、マップがそれぞれのマーカーに移動します。または、マーカーをクリックすると、ユーザーはメニュー内のその場所に移動します。

私はただ一通り書き始めただけですが、これが 20,000 行をはるかに超えるコードを送信することにすぐに気付きました。

初期コードの一部を次に示します。

function initialize() {
var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
var latlng1 = new google.maps.LatLng(41.88267,-87.623758); //etc for all 600 addresses
var marker1 = new google.maps.Marker({
    position: latlng1,
    map: map
    }); //etc for all 600 markers
var contentString1 = '<div>blahblahblah</div>'; //gives content specific to place1.
var infowindow = new google.maps.InfoWindow();
}

以下は、行で保存したい場所です。placeこのコード全体を/ marker/contentString12and3に対して600 回コピー アンド ペーストする代わりに600、これらすべてに対してこの関数を 1 回記述する方法を見つけようとしています。

google.maps.event.addDomListener(document.getElementById("place1"), "click", function() {
    map.setCenter(marker1.getPosition());
    map.setZoom(15);
    infowindow.setContent(contentString1);
    infowindow.open(map, marker1);
    window.location = '#map-canvas';
});

このコードにより、メニューをクリックできるようになり、マップは対応するマーカーにジャンプし、情報ウィンドウもポップアップします。いつも「クリックして、それぞれのコンテンツにplaceX移動する」だけですが、普遍的なものを見つけるのに最も苦労しています。markerXlatlngXinfowindow

次のようなものは機能しますか?私の理論ではplace、特定のplace. placeこれにより、クリックされた特定の追加番号が引き出され(x以下でその番号を呼び出します)、それを以下の関数に適用します。place要素を ID からクラス要素に変更した場合、これは可能になりますか? 私はそれを行う方法さえわかりません。それは、私がすでに持っているコードで別の問題を引き起こすでしょうか?

google.maps.event.addDomListener(document.getElementById("place"), "click", function (x) {
    map.setCenter("marker" + x.getPosition());
    map.setZoom(15);
    infowindow.setContent("contentString" + x);
    infowindow.open(map, "marker" + x);
    window.location = '#map-canvas';
});

私はこれについて何日もバリエーションを試してきましたが、何も機能しません。それが理論、範囲、構文、または上記のすべての問題であるかどうかはわかりません。何か案は?ありがとう。

4

0 に答える 0