2012-01-26 16 views
1

要素をクリックした後にマップを作成します。私はGoogle Maps v3を使用しています。要素をクリックした後にGoogleマップv3を作成する

私は、ページあたり15件の結果/プロパティを表示するRealtyリスティングページを持っています。 15個のマップを生成する代わりに、1つの要素をクリックすると1つのマップが作成されます。クリックされると、マップ生成プロセスが実行されます。マップcanvas/divは最初は非表示になっています。私はクリック要素とマップ要素の関係は、このようなものであろうと考えていた

:私はカスタムID緯度などのプロパティに関する要素に属性を追加HTML5を使用して

<span id="12-1234" lat="10.101010" lng="-25.252525" class="view-map">View Map</span> 
... other markup ... 
<div id="12-1234-map" class="google-map"></div> 

経度私はアイコンを変更してマップを中央に置くことができます。

私は、検索パラメータに基づいて動的に生成されたXMLファイルからマーカーをロードする機能マップを持っています。

私はaddListenerとaddDomListenerを見てきましたが、運が全くありませんでした。ほとんどの検索では、マーカーに関連する問題が取り上げられます。

私は、jQueryを使用していたことのようなうわさがありました。このような何か:あなたはカップル回以上、あなたがそれに別のクリックイベントをバインドしましたとして、それをクリックし、既にした後の地図を見る前の要素をクリックする必要があるだろうと明らかに

$('.view-map').click(function(){ 
    google.maps.event.addDomListener(this, 'click', initialize); 
    $("#" + this.id + "-map").toggle(); 
}); 

これは完璧ではなかったです。

私は何かが明らかに欠けているように感じる。

答えて

3
function initialize(link) { 
    var mapDiv = $('#' + link.attr('id') + '-map'); 
    mapDiv.toggle(); 

    var options = { 
    zoom: 10, 
    mapTypeId: google.maps.MapTypeId.ROADMAP, 
    center: new google.maps.LatLng(link.attr('lat'), link.attr('lng')) 
    }; 

    var map = new google.maps.Map(mapDiv[0], options); 
} 

$('.view-map').click(function(){ 
    initialize(this); 
}); 
+0

私は近づいています。これにより、正しいDIV上にマップが作成されます。しかし、今は_mapが定義されていないエラーが発生します。これは、私の_createMarker()_関数を参照しています。 'function createMarker(latlng、address){ \t \t var html = '

some HTML stuff
'; \t var infoWindow =新しいgoogle.maps.InfoWindow({content:html}); \t \t \t var marker = new google.maps。マーカー({ \t \t位置:緯度経度、 \t \t地図マップ、 \t \tタイトル:アドレス \t})。 \t google.maps.event.addListener(マーカー、 'クリック'、関数(){ \t \t infoWindow.open(マップ、マーカー); \t})。 \t \tリターンマーカー; } ' – hungerstar

+0

私は自分の誤りを修正しました。私の_createrMarker()_関数の後で、まだ_initialize()_ funcitonの前に 'var map;'を定義していました。なぜそれが問題だったのかは分かりません。可能であれば、なぜ_mapDiv [0] _が_mapDiv_と動作するのかを説明してください。 – hungerstar

+0

私はこのような何かをしていました、_initialize()_関数内のjQueryはありません。 'var mapDiv = document.getElementById(link.id + '-map');'も動作し、_mapDiv [0] _の必要はありません。今は、jQueryオブジェクトであるため、_mapDiv [0] _のみを使用しています。要素オブジェクト、つまり[object HTMLDivElement]が必要です。間違った順序で何かや他の小さなことをしていなければならない。ソリューションskarEありがとう! – hungerstar

0

あなたのビューマップのクリック機能では、地図の初期化メソッドを呼び出し、適切な値を渡します。この初期化関数は、マップdivを表示してからマップを適切に初期化することができます。

醜いとチェックしない例:

var params = { 
    lat : 47.5, 
    lng : -122.5 } 

$('.view-map').click(params, function(){ 
    params.id = this.id //e.g. 1234 
    initialize(params); 
    }); 

function initialize(params){ 
// show the 1234-map div, initialize the map 
} 
+0

私はこれに似た何かを試してみました。私はあなたの例を取り除き、私が何を思いつくのか見てみましょう。助けてくれてありがとう。 – hungerstar

+0

うん、私は前にこのような何かをしていた。私がギャップを置いているブリッジは、initialize()関数にパラメータを渡すことではありません。地図を描画するAPIを教えてくれます。 google.maps.event.addDomListener(window、 'load'、init) ' 適切なdivに追加するinitialize()関数内で同様のことを行うにはどうすればよいですか? – hungerstar

関連する問題