JavaScript - Geolocalización: No detecta la dirección en navegador Safari

   
Vista:
Imágen de perfil de David

Geolocalización: No detecta la dirección en navegador Safari

Publicado por David (13 intervenciones) el 30/10/2014 20:07:37
Hola a todos,

Estoy implementando la geolocalización (mediante API google) y funciona bien excepto con el navegador Safari. Me lanza un mensaje de "No se han podido obtener las coordenadas".

Aquí os dejo el código: https://bpaste.net/show/c4d28c3664d1

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de txema

Geolocalización: No detecta la dirección en navegador Safari

Publicado por txema (18 intervenciones) el 31/10/2014 08:12:21
Hola David:

Acabo de hacer las pruebas en Safari 5.1.7 y funciona bien.

No obstante, te recomiendo que amplíes el código de errores para ver cuál es el error concreto
1
2
3
4
5
6
7
8
9
10
11
12
13
function errorFunction(error) {
    if (error.core == error.PERMISSION_DENIED) {
        alert('El usuario no ha concedido los privilegios de geolocalización');
    } else if (error.core == error.POSITION_UNAVAILABLE) {
        alert('Posicion no disponible');
    } else if (error.core == error.TIMEOUT) {
        alert('Demasiado tiempo intentando obtener la localización del usuario.');
    } else if (error.core == error.UNKNOWN) {
        alert('Error desconocido');
    } else {
        alert('Error insesperado');
    }
}

Por otra parte, es conveniente que en la función de búsqueda de geolocalización se inserte el código para buscar la mejor opción de localización y permitir un tiempo adecuado:
- Cambiar
1
2
3
if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(successFunction, errorFunction, PositionOptions);
}
- Y añadir la función
1
2
3
4
5
var PositionOptions = {
  timeout: 5000,
  maximumAge: 60000,
  enableHighAccuracy: true
};

En algunos casos me he visto obligado a ampliar el tiempo de timeout (recuerda que son milisegundos)

Nos comentas, y si persiste el error, qué error te muestra.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de David

Geolocalización: No detecta la dirección en navegador Safari

Publicado por David (13 intervenciones) el 31/10/2014 10:52:30
Gracias por tu respuesta e intereés !!

He mirado un momento pero parece que no hace nada.. umm.. Quizá lo implemento mal..

También me han comentado que safari para windows ya es antiguo y Apple no ofrece actualizaciones. En Mac va bien. umm.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de txema

Geolocalización: No detecta la dirección en navegador Safari

Publicado por txema (18 intervenciones) el 31/10/2014 11:56:20
Debería dar una respuesta (tal vez la más imprecisa y que correspondería a tus sospechas: UNKNOWN 'Error desconocido') Si el error es TIMEOUT 'Demasiado tiempo intentando obtener la localización del usuario.' modifica timeout: 5000, por timeout: 10000,

Mira de bajar Safari desde http://support.apple.com/kb/dl1531?viewlocale=es_ES

Es cierto que Opera y Safari tienden a dar problemas, principalmente en el tiempo de espera tratando de buscar la mejor geolocalización..

Te paso la implementación del código con mis sugerencias de cambio de código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<!DOCTYPE html>
<html lang="es-ES">
  <head>
    <meta charset="utf-8" />
    <title>Geolocation</title>
    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
	<script>
var geocoder = new google.maps.Geocoder();
 
var PositionOptions = {
    timeout: 5000,
    maximumAge: 60000,
    enableHighAccuracy: true
};
 
if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(successFunction, errorFunction, PositionOptions);
} else {
    alert("Tu navegador no soporta Geolocalizacion!");
}
 
function successFunction(position) {
    var lat = position.coords.latitude;
    var lng = position.coords.longitude;
    codeLatLong(lat, lng);
}
 
function errorFunction(error) {
    var appErrMessage = null;
    if (error.core == error.PERMISSION_DENIED) {
        alert('El usuario no ha concedido los privilegios de geolocalización');
    } else if (error.core == error.POSITION_UNAVAILABLE) {
        alert('Posicion no disponible');
    } else if (error.core == error.TIMEOUT) {
        alert('Demasiado tiempo intentando obtener la localización del usuario.');
    } else if (error.core == error.UNKNOWN) {
        alert('Error desconocido');
    } else {
        alert('Error insesperado');
    }
}
 
function codeLatLong(lat, lng) {
    latlng = new google.maps.LatLng(lat, lng);
    geocoder.geocode({
        'latLng': latlng
    }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            alert(results[0].formatted_address);
        } else {
            alert("ERROR");
        }
    });
}
    </script>
  </head>
  <body>
 
  </body>
</html>

(He respetado tu código inicial con mínimos toques)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de David

Geolocalización: No detecta la dirección en navegador Safari

Publicado por David (13 intervenciones) el 01/11/2014 10:06:24
HOla denouevo,

Mil gracias por tu comentario.

Me aparece el mensaje de "Error desconocido"

;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de txema

Geolocalización: No detecta la dirección en navegador Safari

Publicado por txema (18 intervenciones) el 01/11/2014 11:03:35
Bien David: tienes una respuesta lo cual es mucho.

El código de geolocalización entra pero no responde a new google.maps.Geocoder() de Google Maps (el que nos lo traduce a la dirección concreta).

Ello puede ser a que al mismo Google Maps no le gusta que utilicen sus códigos sin sus mapas, o a que nuestra geolocalización no tiene una dirección conocida (si estamos en la mitad del Atlántico ... o ...). Cabría entender que algunos navegadores obvian nuestra petición a Google Maps y otros sencillamente nos impiden acceder a sus resultados porque se bloquea en nuestra solicitud geocoder.

Así que te propongo que probemos el código de geolocalización puro prescindiendo de Google.

Prueba http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_geolocation para ver si te da las coordenadas.

Si el resultado es positivo, tendríamos que hacer que nos lo represente en un mapa para que nos dé la dirección si Google Maps la tiene registrada.

Coméntanoslo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de David

Geolocalización: No detecta la dirección en navegador Safari

Publicado por David (13 intervenciones) el 03/11/2014 09:31:31
Funciona bien!

Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar