La fuente predeterminada para la geolocalización en FF se establece en about:config
desde el parámetro geo.wifi.uri al valor de https://www.google.com/loc/json
. Cuando la llamada de geolocalización estándar se realiza en Javascript, por ejemplo, navigator.geolocation.getCurrentPosition (handle_geolocation_query, handle_errors); Firefox consultará https://www.google.com/loc/json
con mi dirección IP (computadora de escritorio) y me devolverá mi ubicación aproximada.API de Geolocalización de Firefox Alternativa
Lo que quiero hacer es configurar una página en mi propio servidor que devuelva una geolocalización específica; Codificaré el valor de latitud, longitud y precisión para devolverlo a mi página que realiza una llamada getCurrentPosition. Esto me permitirá probar el código para un cliente en varias ubicaciones sin tener que ir a esas ubicaciones físicas para realizar pruebas.
Aquí está mi problema: ¿qué formato puedo hacer de mi página para que devuelva una estructura/objeto válido que FF pueda usar?
La página está alojada en Apache y se generará desde PHP.
Para este ejemplo, digamos que mi página de pseudo geolocalización está en http://mysite/json/index.php
.
he probado con el siguiente código PHP:
header('Content-type: application/json');
echo '{"position":'
. '{"coords":'
. '{'
. '"latitude":"80",'
. '"longitude":"-20",'
. '"altitude":"299",'
. '"accuracy":"111",'
. '"altitudeAccuracy":"222",'
. '"heading":"333",'
. '"speed":"44"'
. '}'
. '}'
. '}';
En mi página de llamada tengo el siguiente javascript:
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;
}
}
Con juego geo.wifi.uri a https://www.google.com/loc/json
que volver a mi lat, lon y precisión como se esperaba. Cuando cambio geo.wifi.uri a http://mysite/json
o a http://mysite.json/index.php
no aparece ninguna respuesta aparente, incluida la no ejecución de la sección de error de javascript.
Supongo que la respuesta está en el geolocation-API pero no puedo encontrarle sentido cuando todo lo que realmente quiero es devolver la información con el formato correcto.
Cualquier ayuda sobre esto será apreciada.
TL; DR: ¿qué se necesita para generar una respuesta válida para geo.wifi.uri como alternativa al https://www.google.com/loc/json
?