Foros del Web » Programando para Internet » Javascript »

Sacar mi posicion desde celular utilizando GPS desde javascript

Estas en el tema de Sacar mi posicion desde celular utilizando GPS desde javascript en el foro de Javascript en Foros del Web. Buen dia; Bueno mi problema es que estoy haciendo una aplicacion de geolocalizacion y quiero sacar la posicion mas exacta en la que me encuentro ...
  #1 (permalink)  
Antiguo 09/07/2014, 22:55
 
Fecha de Ingreso: julio-2014
Mensajes: 2
Antigüedad: 9 años, 9 meses
Puntos: 0
Sacar mi posicion desde celular utilizando GPS desde javascript

Buen dia;
Bueno mi problema es que estoy haciendo una aplicacion de geolocalizacion y quiero sacar la posicion mas exacta en la que me encuentro cuando abro la pagina desde mi celular. Cuando el celular esta conectado por wifi a una red la posicion es muy cercana, pero mi problema radica cuando estoy utilizando mis datos del celular para ingresar a la pagina, la posicion que me da es muy lejana a la que realmente estoy.
Utilizo el siguiente codijo javascript basandome de la geolocalizacion html5
Código:
function localizacion_coordenadas() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(datos_localizacion_coordenadas,error,{ maximumAge: 100, timeout: 6000, enableHighAccuracy: true});
	} else {
	alert('Tu navegador no soporta geolocalizacion.');
	}
}

function datos_localizacion_coordenadas(pos) {

	var latitud = pos.coords.latitude;
	var longitud = pos.coords.longitude;
	var precision = pos.coords.accuracy;
	
}
Agradeceria mucho si me comentarar si existe otra forma de saber las coordenadas de mi posicion mas presisas, o en su caso saber como utilizar la accuracy(precision) que me da la funcion para calcular mas exacta mi posicion

saludos
  #2 (permalink)  
Antiguo 10/07/2014, 05:30
Avatar de javioreto  
Fecha de Ingreso: enero-2005
Ubicación: C:\España\Bilbao
Mensajes: 1.212
Antigüedad: 19 años, 2 meses
Puntos: 15
Respuesta: Sacar mi posicion desde celular utilizando GPS desde javascript

Buenas,

Te pongo el script que yo utilizo, por lo general suele ser muy preciso:

Código Javascript:
Ver original
  1. <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
  2.  
  3.     <script type="text/javascript">
  4.         var map;
  5.         var latitud;
  6.         var longitud;
  7.         var precision;
  8.        
  9.         $(document).ready(function() {
  10.             localizame();            
  11.         });
  12.        
  13.         function localizame() {
  14.             if (navigator.geolocation) {
  15.                 navigator.geolocation.getCurrentPosition(coordenadas, errores);
  16.             }else{
  17.                 alert('Oops! Tu navegador no soporta geolocalización. Bájate Chrome, que es gratis!');
  18.             }
  19.         }
  20.        
  21.         function coordenadas(position) {
  22.             latitud = position.coords.latitude;
  23.             longitud = position.coords.longitude;
  24.             precision = position.coords.accuracy;  
  25.             cargarMapa();
  26.             document.getElementById('precision').innerHTML="Datos con una precisión de " + precision/1000 + " km, " + precision + " metros";
  27.         }
  28.        
  29.         function errores(err) {
  30.             if (err.code == 0) {
  31.               alert("Oops! Algo ha salido mal");
  32.             }
  33.             if (err.code == 1) {
  34.               alert("Oops! No has aceptado compartir tu posición");
  35.             }
  36.             if (err.code == 2) {
  37.               alert("Oops! No se puede obtener la posición actual");
  38.             }
  39.             if (err.code == 3) {
  40.               alert("Oops! Hemos superado el tiempo de espera");
  41.             }
  42.         }
  43.          
  44.         function cargarMapa() {
  45.             var latlon = new google.maps.LatLng(latitud,longitud);
  46.             var myOptions = {
  47.                 zoom: 17,
  48.                 center: latlon,
  49.                 mapTypeId: google.maps.MapTypeId.ROADMAP
  50.             };
  51.             map = new google.maps.Map($("#map_canvas").get(0), myOptions);
  52.               var image =  'images/icon.png';
  53.             var coorMarcador = new google.maps.LatLng(latitud,longitud);
  54.            
  55.             var punto0 = new google.maps.LatLng(42.3529376, -3.687936000000036); var punto1 = new google.maps.LatLng(40.4167754, -3.7037901999999576); var punto2 = new google.maps.LatLng(40.4167754, -3.7037901999999576); var punto3 = new google.maps.LatLng(40.4167754, -3.7037901999999576); var punto4 = new google.maps.LatLng(42.3439925, -3.6969060000000127); var punto5 = new google.maps.LatLng(42.3471931, -3.680168600000002); var punto6 = new google.maps.LatLng(42.3439925, -3.6969060000000127); var punto7 = new google.maps.LatLng(42.33417499999999, -3.702421299999969); var punto8 = new google.maps.LatLng(42.341679, -3.7272963000000345); var punto9 = new google.maps.LatLng(42.34037499999999, -3.703696799999989); var punto10 = new google.maps.LatLng(42.46394009999999, -2.442012699999964); var punto11 = new google.maps.LatLng(40.4167754, -3.7037901999999576); var punto12 = new google.maps.LatLng(40.4167754, -3.7037901999999576); var locationArray = [coorMarcador,punto0,punto1,punto2,punto3,punto4,punto5,punto6,punto7,punto8,punto9,punto10,punto11,punto12]; var locationNameArray = ['Mi posicion','francisco de vitoria, s/n burgos','Burgos, guzmán de alfarache','universidad de burgos, burgos','guzman de alfarache burgos','guzman de alfarache burgos','calle vitoria burgos','plaza infanta doña elena, 1 ','bonifacio zamora, 5 burgos','calle rollo, burgos','plaza del rey san fernando, 1 burgos','calvo sotelo,22 logroño','calle vitoria 23','calle torija 23']; var locationLat = [0,42.3529376,40.4167754,40.4167754,40.4167754,42.3439925,42.3471931,42.3439925,42.33417499999999,42.341679,42.34037499999999,42.46394009999999,40.4167754,40.4167754]; var locationLong = [0,-3.687936000000036,-3.7037901999999576,-3.7037901999999576,-3.7037901999999576,-3.6969060000000127,-3.680168600000002,-3.6969060000000127,-3.702421299999969,-3.7272963000000345,-3.703696799999989,-2.442012699999964,-3.7037901999999576,-3.7037901999999576];          
  56.              var coord,cont=0;
  57.   for (coord in locationArray) {
  58.  
  59.    if (cont==0){
  60.        new google.maps.Marker({
  61.       position: locationArray[coord],
  62.       map: map,
  63.       draggable:false,
  64.     animation: google.maps.Animation.DROP,
  65.       title: locationNameArray[coord]
  66.     });  
  67.  
  68.    }else{
  69.        var dif1=Math.abs(latitud-locationLat[cont]);
  70.    var dif2=Math.abs(longitud-locationLong[cont]);
  71.  
  72.       if(dif1<0.3 && dif2<0.3){
  73.  
  74.        new google.maps.Marker({
  75.       position: locationArray[coord],
  76.       map: map,
  77.       icon: image,
  78.       draggable:false,
  79.     animation: google.maps.Animation.DROP,
  80.       title: locationNameArray[coord]
  81.     });  
  82.  
  83. }
  84.    }
  85.      
  86.    
  87.     cont++;
  88.   }
  89.            
  90.    
  91.            
  92.         }
  93.     </script>

En function cargar_mapa() como verás hay posiciones que muestro en el mapa obtenidas desde mi base de datos. Solo debes fijarte en la parte donde muestro mi propia ubicación.

Espero que te sea de ayuda!
  #3 (permalink)  
Antiguo 10/07/2014, 11:25
 
Fecha de Ingreso: julio-2014
Mensajes: 2
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Sacar mi posicion desde celular utilizando GPS desde javascript

De antemano muchas gracias por el tiempo y respuesta.

Revisando el codigo lo que se pretende es sacar de una ruta las coordenadas y de ahy a buscar la posicion mas cercana en cuestion a distancia y ahy creas la marka.

Ok me parece buena idea voy utilizarl y hacer pruebas

De ante mano muchas gracias y que sigas teniendo buen dia
  #4 (permalink)  
Antiguo 10/07/2014, 18:19
txemaarbulo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Sacar mi posicion desde celular utilizando GPS desde javascript

Hola Jaime_Vicencio:

El código que presentas inicialmente es correcto si bien quisiera hacerte alguna matización:

- enableHighAccuracy: true es la etiqueta que buscará el mejor recurso de ubicación. Hemos de entender que el smartphone (móvil o celular) tiene habilitado el GPS: si no la tuviere, dará la posición por triangulación, antena, ...

- Los tiempos que das son extremadamente cortos ({ maximumAge: 100, timeout: 6000, enableHighAccuracy: true}): Ten en cuenta que son milisegundos (0,1 segundo y 6 segundos).
Lo normal sería { maximumAge: 5000, timeout: 60000, enableHighAccuracy: true} e incluso maximumAge: 10000, ya la primera medición puede llevar más tiempo. Las actualizaciones son comparadas con el satélite a partir de la primera medición (es decir que las mediciones sucesivas son más rápidas).

- No todos los modelos vs. sistemas operativos trabajan igual (Android, iOS, BlackBerry, WindowsPhone etc).

- Siempre es bueno definir los errores ya que éllos nos identificarán el problema.

Sería añadir:
Código Javascript:
Ver original
  1. function error(error) {
  2.     var appErrMessage = null;
  3.     if (error.core == error.PERMISSION_DENIED) {
  4.         alert ('El usuario no ha concedido los privilegios de geolocalización');
  5.     } else if (error.core == error.POSITION_UNAVAILABLE) {
  6.         alert ('Posicion no disponible');
  7.     } else if (error.core == error.TIMEOUT) {
  8.         alert ('Demasiado tiempo intentando obtener la localización del usuario.');
  9.     } else if (error.core == error.UNKNOWN) {
  10.         alert ('Error desconocido');
  11.     } else {
  12.         alert ('Error insesperado');
  13.     }
  14. }

Espero que te sea útil

Etiquetas: celular, funcion, gps, html, posicion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:32.