2011-05-04 17 views
5

FF'de konum belirleme için varsayılan kaynak about:config parametresinden geo.wifi.uri parametresinden https://www.google.com/loc/json değerine ayarlanır. Standart geolocation çağrısı, Javascript'te yapıldığı zaman, örneğin, navigator.geolocation.getCurrentPosition (handle_geolocation_query, handle_errors); Firefox, IP adresimle (masaüstü) https://www.google.com/loc/json'u sorgulayacak ve yaklaşık konumumu geri getirecektir.Firefox Coğrafi Konum API'si Alternatif

Yapmak istediğim, kendi sunucumda belirli bir konum belirten sayfa döndüren bir sayfa oluşturmaktır; Sayfamıza getCurrentPosition çağrısı yapan geri döndürmek için lat, lon ve doğruluk değerlerinde kod yazacağım. Bu, test için fiziksel konumlara gitmeye gerek kalmadan çeşitli konumlardaki bir müşterinin kodunu test etmeme izin verecektir.

İşte benim sorunum: Sayfamı, FF'nin kullanabileceği geçerli bir yapı/nesne döndürecek biçimde nasıl bir biçim oluşturabilirim?

Bu sayfa Apache'de barındırılmaktadır ve PHP'den üretilecektir.

Bu örnekte, sözde coğrafi konum sayfamın http://mysite/json/index.php adresinde olduğunu varsayalım. Aşağıdaki javascript var satıyorum sayfada

header('Content-type: application/json'); 
echo '{"position":' 
. '{"coords":' 
.  '{' 
.  '"latitude":"80",' 
.  '"longitude":"-20",' 
.  '"altitude":"299",' 
.  '"accuracy":"111",' 
.  '"altitudeAccuracy":"222",' 
.  '"heading":"333",' 
.  '"speed":"44"' 
.  '}' 
. '}' 
. '}'; 

:

Ben şu PHP kodu ile denedim https://www.google.com/loc/json için

function initiate_geolocation() { 
navigator.geolocation.getCurrentPosition(handle_geolocation_query,handle_errors); 
} 

function handle_geolocation_query(position){ 
var foo = 'Lat: ' + position.coords.latitude + "\n" 
     + 'Lon: ' + position.coords.longitude + "\n" 
     + 'Alt: ' + position.coords.altitude + "\n" 
     + 'Acc: ' + position.coords.accuracy + "\n" 
     + 'AAc: ' + position.coords.altitudeAccuracy + "\n" 
     ; 
alert(foo); 
} 

function handle_errors(error) { 
switch(error.code) { 
    case error.PERMISSION_DENIED: alert("user did not share geolocation data"); 
    break; 

    case error.POSITION_UNAVAILABLE: alert("could not detect current position"); 
    break; 

    case error.TIMEOUT: alert("retrieving position timed out"); 
    break; 

    default: alert("unknown error"); 
    break; 
} 
} 

geo.wifi.uri seti ile alıyorum geri benim Lat, lon ve doğruluk beklendiği gibi. Geo.wifi.uri'yi http://mysite/json veya http://mysite.json/index.php olarak değiştirdiğimde javascript'in hata bölümünün yürütülmesi de dahil olmak üzere hiçbir görünür yanıt alamıyorum.

Yanıtın geolocation-API içinde olduğunu varsayalım, ancak gerçekten istediğim şey düzgün biçimde biçimlendirilmiş bilgiler döndürmek istediğimde bunu anlamıyorum.

Bu konuda herhangi bir yardım mutluluk duyacaktır.

TL; DR: https://www.google.com/loc/json ürününe alternatif olarak geo.wifi.uri için geçerli bir yanıt üretmek için ne gerekir?

cevap

0

İlginç. Biraz coğrafi konum çalışması yaptım ve bu küçük detayın farkında değildim. coğrafi konum sağlayıcı ve PHP yardım birazcık kaynağında bakıyorum, Google'ın tepki olarak bu olsun:

{"location":{ 
    "latitude":<latitude value>, 
    "longitude":<longitude value>, 
    "address":{ 
    "country":"United States", 
    "country_code":"US", 
    "region":"<state>", 
    "city":"<city>", 
    "street":"<streetname>", 
    "street_number":"<street number>", 
    "postal_code":"<zip code>" 
    }, 
    "accuracy":30.0} , 
"access_token":"<long access token string>"} 

cevabınız böyle bakmak ve ne olduğunu görün yapmayı deneyin. "Ağ Konum Sağlayıcısı Protokolü" bölümü, hem istek hem de yanıt biçimini içerir.

İlgili konular