2011-08-17 12 views
4

私はjQueryモバイルを使用しており、いくつかの地図を表示する必要があります。 私は特定のリンクをクリックするたびにマップを作成する関数を使用していますが、最初のマップの生成後に他のマップが間違って表示されます。ここでモバイルで地図が正しく表示されない(JQueryモバイルを使用)

たとえば、 最初のマップ:

First Map

他のマップ:

Second Map

私はこのような機能を使用します。

function buildMap(div){ 

    var coord = new google.maps.LatLng(lat, lng); 

    var options = { 
     zoom: 13, 
     scrollwheel: false, 
     scaleControl: true, 
     mapTypeControl: false, 
     center: coord, 
     mapTypeId: google.maps.MapTypeId.HYBRID 
    }; 

    var map = new google.maps.Map(div, options); 

    return map; 
} 

はあなたが助けることができますm e?

ありがとうございました!

+0

関連します。http:// jqueryの-UI-マップ。 googlecode.com/svn/trunk/demos/jquery-mobile-example.html –

答えて

3

解決される問題、あなたは "pageshowの" イベント(jQueryのモバイルのイベント)上のマップを作成する必要があります。

$('#map_page').live('pageshow',function(event, ui){ 
    buildResultMap('#map_canvas'); 
}); 
+0

素晴らしい解決策、私は実際に私のニーズに合わせて修正しましたこれは次のように動作します: '$(document).live( 'pageshow'、function(event、ui){ initialize_map_with_properties(); }); – DemitryT

1

解決策は、resizeイベントをトリガーするか、Ajaxを使用しないことです。 Phillは、Ajaxを使用するjQuery Mobile Google maps plugin($( '#map_canvas')。gmap( 'refresh'); on pageloadを使用してどのように処理されたかの例をあなたに導いてくれました。 。グーグルマップ構文)

+0

いいえ、何も... 私は関数を書き直そうとしましたが、私はこの "google.maps.event.trigger(map、 'resize' ); "何も起こらない。 しかし、私はこの問題がAndroidデバイス/ Chrome/Safariでのみ発生していることに気付きました.iphone/ipadではすべて正常に動作します。また、地図の読み込み後、ブラウザーやアンドロイドデバイス(ピンチズーム付き)でページをズームすると、マップ自体が修正されることに気付きました。 –

+0

pageshowでサイズを変更すると機能するはずです。しかし、pageshow上のマップを作成することも同様に機能します。 – johansalllarsson

+0

はい、今私はpageshow上に地図を作成し、それも同様に動作します...ありがとう!! –

関連する問題