1

それが私の最初の質問です。私は個人的にこのウェブサイトが素晴らしいと思い、何度も私を助けてくれました:)

今、私は解決されていない質問があります:P

GoogleマップAPIを使用してウェブサイトを開発しています。将来的にはマーカーが多すぎると予想されるので、2つの解決方法を考えました。

  1. 誰かが地図をクリックするたびにイベントを追加し、PHPファイルを介して表示されるマーカーを更新します(Javascriptからファイルへの非同期呼び出し)
  2. ファイルのクラスタリングを追加します(この手順に従ってhttp://www.svennerberg.com/2009/01/handling-large-amounts-of-markers-in-google-maps/

私はそれらの両方をやろうとしました、そして両方で私は問題を抱えています

  1. マップ上のマーカーを更新するJavascriptからPHPファイルを呼び出す方法がわかりません
  2. マーカークラスターを使用すると正常に動作しますが、単一のマーカーを押すとHTMLウィンドウを開くことができません

      for(var i = 0; i < 50; i += 0.1) {
           var marker = new GMarker(new GLatLng(59.0 + i, 13.80 + i));
           markers.push(marker);
        }
    

これは、マーカーを配列にプッシュするために使用するコードであるため、イベントを追加することはできません。最後のイベントにのみ適用できます。

何か案が?

前もって感謝します!!!

4

1 に答える 1

0

このようなものを試して、クリックしたときに個々のマーカーのコンテンツを取得してください。マーカーをクラスターに追加するだけで、問題はありません。

function load_content(marker, id){
    $.ajax({
        url: '/map/getMarkerWindow/' + id,
        success: function(data){
            infowindow.setContent(data);
            infowindow.open(map, marker);
        }
    });
}

for(var i = 0; i < 50; i += 0.1) {
       var marker = new GMarker(new GLatLng(59.0 + i, 13.80 + i));

        marker = new google.maps.Marker({
            position: new google.maps.LatLng(59.0 + i, 13.80 + i),
            clickable: true,
            id:i
        });

        google.maps.event.addListener(marker, "click", function() {
            infowindow.close();
            load_content(this, this.id);
        });

       markers.push(marker);
    }
于 2012-07-11T07:20:35.267 に答える