0
我正在使用Google Maps API與rails 5.0.4。在AJAX請求完成之前Google地圖加載完成
我希望地圖以用戶位置爲中心,並用座標填充緯度,經度字段。目前,lat,lng字段填充正確,但在異步調用完成之前加載地圖,導致地圖位置與座標不匹配。它在刷新後會自行修復,但在第一次加載時,異步是一個問題。我試圖用一個承諾來設置它,但無法實現它。
完成此操作的最佳方法是什麼?
$(document).ready(function(){
function getUserCoordinates() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(setCoords);
};
};
function setCoords(position) {
lat = position.coords.latitude;
lng = position.coords.longitude;
updateUserLat(lat);
updateUserLng(lng);
document.getElementById("latitude").value = lat.toFixed(6);
document.getElementById("longitude").value = lng.toFixed(6);
};
function updateUserLat(lat) {
$.ajax({
type: 'PATCH',
url: '/users/:id',
data: {'user[latitude]': lat}
});
};
function updateUserLng(lng) {
$.ajax({
type: 'PATCH',
url: '/users/:id',
data: {'user[longitude]': lng}
});
};
getUserCoordinates();
function initMap(){
initialize();
};
});
謝謝馬克。我將initMap移動到包裝器之外,現在直接調用它。但是,我設置地圖的方式是使用從用戶模型中讀取的中心座標進行初始化。所以我想要完成AJAX請求,確保在地圖加載之前更新用戶模型。 目前,在更新模型之前,地圖仍然會加載。 – Jason