モバイル デバイス用の店舗検索アプリを作成しています。DB クエリが実行され、距離、lan、lat 値などが取得され、ページに最も近い店舗が表示されます。
次に、ユーザーは「地図で見る」をクリックして、Google マップで店舗と現在の場所を表示できます。ajax() 成功コールバックからのコードの主要部分は次のとおりです。
success: function(result){
var rowCount = result.name.length;
if(rowCount <= 0){
$('span.locatorResults').html("There were no stores found within your specified radius.");
}else{
$( '#storeLocatorMapDisplay' ).live( 'pageshow',function(event){
initializeMapAll(); //This initialise SHOULD be called while the map_canvas div is in the DOM. This is why we have to do hacky workaround of resizing etc..
});
$('span.locatorResults').html("There are " + rowCount + " results within a " + result.radius + " mile radius of your current location:<br /><br />");
for (var i = 0; i < rowCount; i++) {
var storelatlng = new google.maps.LatLng(
parseFloat(result.storeLat[i]),
parseFloat(result.storeLon[i])
);
$( '#storeLocatorMapDisplay' ).live( 'pageshow',function(event){
createMarkerAll(storelatlng, result.name[i], result.address[i]);
});
}
$( '#storeLocatorMapDisplay' ).live( 'pageshow',function(event){
createMarkerCurrentLocation(currentlatlng);
});
}
}
私の問題は、map_canvas div が DOM にロードされる前にマップが初期化されていたため、マップ領域の周りにたくさんの灰色のパディングが表示されていたことです。
そこで、地図ページが読み込まれたときに地図とマーカーを初期化することにしましたが、これには多くの .live('pageshow') イベントが必要です。
私の質問は...マーカーを作成する前、およびマップキャンバスがDOMにロードされる前に、マップを初期化する簡単な方法はありますか??? マーカーは(私が知る限り)ajaxリクエストからの成功コールバックで生成される必要があることに注意してください。
御時間ありがとうございます :)