クライアントから地理位置情報を取得し、Ajax ごとに場所を読み込み、それらをリストに表示したいと考えています。
関数getGeolocation
、loadLocation
およびがありcreateList
ます。
getGeolocation
およびloadLocation
非同期関数であるため、コールバックが必要か、遅延オブジェクトを使用します。インターネットで数時間検索しましたが、これを処理する方法の構文がまだわかりません。
関数内と関数内で呼び出すことができることはわかっていますが、loadLocations
この関数をいくつかの場所で呼び出したいので、オプションではありません。success
createList
afterResponse
var lat = 0;
var long = 0;
var locations;
getGeolocation();
loadLocations();
createList();
$('#map').live("pageshow", function() {
google.maps.event.trigger(map, 'resize');
});
function getGeolocation(){
console.log("getGeolocation");
if (navigator.geolocation) {
// getCurrentPosition ruft die Funktion success auf und übermittelt die Position Werte
// error wird ausgeführt wenn es einen Fehler beim ermitteln der Position gibt
navigator.geolocation.getCurrentPosition(success, error);
} else {
alert("GeoLocation API ist NICHT verfügbar!");
}
}
function success(position) {
console.log("success");
lat = position.coords.latitude;
long = position.coords.longitude;
}
function error(msg) {
console.log(typeof msg == 'string' ? msg : "error");
}
function loadLocations(){
console.log("loadLocations");
return $.ajax({
type: "GET",
url: "http://www.example.at/api/getLocationsByGeodata_JSON",
success: afterResponse,
/*beforeSend: showPreloader,*/
data: {lat : lat, long: long},
dataType: 'json'
});
}
function afterResponse(response_objekt) {
console.log("afterResponse");
console.log(response_objekt['results']);
locations = response_objekt['results'];
}