{"id":8899,"date":"2016-05-13T00:05:46","date_gmt":"2016-05-12T22:05:46","guid":{"rendered":"http:\/\/www.palentino.es\/blog\/?p=8899"},"modified":"2016-05-13T00:09:55","modified_gmt":"2016-05-12T22:09:55","slug":"geolocalizacion-usando-html5-al-detalle","status":"publish","type":"post","link":"https:\/\/www.palentino.es\/blog\/geolocalizacion-usando-html5-al-detalle\/","title":{"rendered":"Geolocalizaci\u00f3n usando HTML5 al detalle."},"content":{"rendered":"<p>HTML5 ofrece una API muy potente de geolocalizaci\u00f3n. Esta API permite a los desarrolladores determinar la posici\u00f3n f\u00edsica del usuario que se encuentra navegando. Anteriormente se realizaba capturando la IP y almacenando los datos en una base de datos, para posteriormente realizar una consulta. Esto se realizaba generalmente mediante programaci\u00f3n con alg\u00fan lenguaje del lado servidor como pueden ser PHP, JSP, ASP.<\/p>\n<p>Con la anterior t\u00e9cnica se puede obtener la direcci\u00f3n\u00a0 IP del usuario gracias a que las direcciones IP est\u00e1n agrupadas de modo que se sabe que cada IP pertenece a un determinado lugar del planeta. De esta forma podr\u00edamos de obtener del usuario el pa\u00eds, estado, cuidad, etc\u2026) mediante un web service o una base de datos de IPs .<\/p>\n<p>HTML5 y su API aprovecha datos de la posici\u00f3n GPS de un dispositivo o mediante la triangulaci\u00f3n de se\u00f1ales WIFI de los routers. De esta forma, con la informaci\u00f3n que nos proporciona la API podemos adaptar nuestras aplicaciones en funci\u00f3n de la ubicaci\u00f3n del internauta.<\/p>\n<p>HTML5 se apoya en javascript para poder programar estas acciones.<\/p>\n<p>Existen 3 m\u00e9todos para trabajar con la geolocalizaci\u00f3n<\/p>\n<p><!--more--><\/p>\n<pre class=\"lang:default decode:true \">&lt;script type=\u201dtext\/javascript\u201d&gt;\r\n\r\n\/\/ Primer m\u00e9todo\r\n\r\ngetCurrentPosition (*ubicaci\u00f3n, error, configuraci\u00f3n)\r\n\r\n\/\/ Segundo m\u00e9todo, parecido al anterior, con vigilancia constante.\r\n\r\nwatchPosition (*ubicaci\u00f3n, error, configuraci\u00f3n)\r\n\r\n\/\/ Tercer m\u00e9todo\r\n\r\nclearWatch(id);\r\n\r\n&lt;\/script&gt;<\/pre>\n<p>&nbsp;<\/p>\n<p>Los sistemas de ubicaci\u00f3n emplean latitudes y longitudes, son 2 coordenadas que nos permiten buscar una ubicaci\u00f3n en la tierra.<\/p>\n<p>Atributos como la latitud, longitud, altitud, accuracy (exactitud), altitude accuracy (exactitud de la altura), heading (direcci\u00f3n en grados), speed (en metros\/s)<\/p>\n<p>Veamos un sencillo ejemplo usando getCurrentPosition, el resultado mostrar\u00e1 en pantalla la latitud, longitud y la precisi\u00f3n.<\/p>\n<pre class=\"lang:xhtml decode:true \">&lt;!DOCTYPE HTML&gt;\r\n&lt;html lang=\"es\"&gt;\r\n&lt;head&gt;\r\n&lt;meta http-equiv=\"Content-Type\" content=\u201dtext\/html; charset=\"utf-8\"&gt;\r\n&lt;title&gt;Usando la geolocalizaci\u00f3n con HTML5&lt;\/title&gt;\r\n&lt;script type=\"text\/javascript\"&gt;\r\n\r\n\r\nfunction iniciar()\r\n{\r\n\tvar boton=document.getElementById('obtener');\t\r\n\tboton.addEventListener('click', obtener, false);\r\n}\r\n\r\nfunction obtener(){\r\n\tnavigator.geolocation.getCurrentPosition(mostrar);\r\n}\r\n\r\nfunction mostrar(posicion)\r\n{\r\n\tvar ubicacion = document.getElementById('ubicacion');\r\n\tvar datos=\"\";\r\n\t\tdatos+='Latitud: '  + posicion.coords.latitude + '&lt;br\/&gt;';\r\n\t\tdatos+='Longitud: ' + posicion.coords.longitude + '&lt;br\/&gt;';\r\n\t\tdatos+='Exactitud: ' + posicion.coords.accuracy + '&lt;br\/&gt;';\r\n\t\tubicacion.innerHTML=datos;\r\n}\r\nwindow.addEventListener('load', iniciar, false);\r\n&lt;\/script&gt;\r\n\r\n&lt;\/head&gt;\r\n\r\n&lt;body&gt;\r\n&lt;div id=\"ubicacion\"&gt;\r\n&lt;button id=\"obtener\"&gt;Obtener mi ubicaci\u00f3n &lt;\/button&gt;\r\n&lt;\/div&gt;\r\n\r\n&lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>La demo:<\/strong><\/p>\n<p><a href=\"http:\/\/www.palentino.es\/ubicacion\/mi-direccion.htm\">http:\/\/www.palentino.es\/ubicacion\/mi-direccion.htm<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Cuando se ejecuta el c\u00f3digo pedir\u00e1 una autorizaci\u00f3n para usar nuestra ubicaci\u00f3n. Si estamos en Windows 10, aparecer\u00e1 un icono en la barra de tareas. Los ajustes los podemos establecer pulsando el icono, o en el panel de control.<\/p>\n<p>&nbsp;<\/p>\n<p>En Chrome<\/p>\n<p><a href=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/05\/Chrome-permitir.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8901\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/05\/Chrome-permitir.jpg\" alt=\"Chrome-permitir\" width=\"825\" height=\"662\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/05\/Chrome-permitir.jpg 825w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/05\/Chrome-permitir-300x241.jpg 300w\" sizes=\"auto, (max-width: 825px) 100vw, 825px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/05\/en-chrome.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8902\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/05\/en-chrome.jpg\" alt=\"en-chrome\" width=\"711\" height=\"262\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/05\/en-chrome.jpg 711w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/05\/en-chrome-300x111.jpg 300w\" sizes=\"auto, (max-width: 711px) 100vw, 711px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/05\/Mensaje-chrome.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8903\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/05\/Mensaje-chrome.jpg\" alt=\"Mensaje-chrome\" width=\"528\" height=\"164\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/05\/Mensaje-chrome.jpg 528w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/05\/Mensaje-chrome-300x93.jpg 300w\" sizes=\"auto, (max-width: 528px) 100vw, 528px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>En Edge sobre windows 10.<\/p>\n<p><a href=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/05\/permiso.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8904\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/05\/permiso.jpg\" alt=\"permiso\" width=\"522\" height=\"467\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/05\/permiso.jpg 522w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/05\/permiso-300x268.jpg 300w\" sizes=\"auto, (max-width: 522px) 100vw, 522px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/05\/ubicacion.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8905\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/05\/ubicacion.jpg\" alt=\"ubicacion\" width=\"858\" height=\"737\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/05\/ubicacion.jpg 858w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/05\/ubicacion-300x258.jpg 300w\" sizes=\"auto, (max-width: 858px) 100vw, 858px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Por otro lado, como he mencionado anteriormente, si navegamos desde un equipo de escritorio sin GPS, la localizaci\u00f3n se obtiene triangulando la se\u00f1al WIFI del router. No es tan precisa como un GPS.<\/p>\n<p>Mediante la API de google maps, podemos combinar estos datos para obtener la posici\u00f3n en el mapa. Esta API emplea el objeto canvas de HTML5.<\/p>\n<p>Podremos obtener en el mapa google maps, la posici\u00f3n del usuario, con marcador.<\/p>\n<pre class=\"lang:xhtml decode:true\">&lt;!DOCTYPE html&gt;\r\n&lt;html&gt;\r\n  &lt;head&gt;\r\n    &lt;meta name=\"viewport\" content=\"initial-scale=1.0, user-scalable=no\"&gt;\r\n    &lt;meta charset=\"utf-8\"&gt;\r\n    &lt;title&gt;Google Maps&lt;\/title&gt;\r\n    &lt;link href=\"default.css\" rel=\"stylesheet\"&gt;\r\n    &lt;script src=\"https:\/\/maps.googleapis.com\/maps\/api\/js?v=3.exp&amp;sensor=false\"&gt;&lt;\/script&gt;\r\n    &lt;script type=\"application\/javascript\"&gt;    \r\n \r\n      function initialize() {\r\n\t\t\tvar latlng = new google.maps.LatLng(-42.0005, -5.5111);\r\n\t\t\tvar mapOptions = {\r\n\t\t\t  zoom: 12,\r\n\t\t\t  center: latlng,\r\n\t\t\t  mapTypeId: google.maps.MapTypeId.ROADMAP\r\n\t\t\t}\r\n\t\t\tmap = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);\r\n\t\t\t\t\r\n\t\t\/\/ inserta marcador\t\r\n\t\tvar imagen=\"mi-icono.png\"\r\n    var marker = new google.maps.Marker({\r\n\t\t  position: latlng,\r\n\t\t  map: map,\r\n      animation: google.maps.Animation. DROP,  \/\/ otras opciones BOUNCE\r\n      icon: imagen,  \/\/ nombre de la imagen\r\n      title: \"Esto es el t\u00edtulo del marcador\"\r\n\r\n \r\n \t\t});\r\n      }\t\t\r\n\r\n    &lt;\/script&gt;\r\n  &lt;\/head&gt;\r\n  &lt;body onload=\"initialize()\"&gt; \r\n    &lt;div id=\"map_canvas\" style=\"height:90%;\"&gt;\r\n  &lt;\/div&gt;\r\n  &lt;\/body&gt;\r\n&lt;\/html&gt;\r\n<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>HTML5 ofrece una API muy potente de geolocalizaci\u00f3n. Esta API permite a los desarrolladores determinar la posici\u00f3n f\u00edsica del usuario que se encuentra navegando. Anteriormente se realizaba capturando la IP y almacenando los datos en una base de datos, para posteriormente realizar una consulta. Esto se realizaba generalmente mediante programaci\u00f3n con alg\u00fan lenguaje del lado servidor como pueden ser PHP, JSP, ASP. Con la anterior t\u00e9cnica se puede obtener la direcci\u00f3n\u00a0 IP del usuario gracias a que las direcciones IP est\u00e1n agrupadas de modo que se sabe que cada IP pertenece a un determinado lugar del planeta. De esta forma podr\u00edamos de obtener del usuario el pa\u00eds, estado, cuidad, etc\u2026) mediante un web service o una base de datos de IPs . HTML5 y su API aprovecha datos de la posici\u00f3n GPS de un dispositivo o mediante la triangulaci\u00f3n de se\u00f1ales WIFI de los routers. De esta forma, con la informaci\u00f3n que nos proporciona la API podemos adaptar nuestras aplicaciones en funci\u00f3n de la ubicaci\u00f3n del internauta. HTML5 se apoya en javascript para poder programar estas acciones. Existen 3 m\u00e9todos para trabajar con la geolocalizaci\u00f3n<\/p>\n","protected":false},"author":1,"featured_media":6903,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[446,1415],"tags":[],"class_list":["post-8899","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-html5","category-sin-categoria-es"],"_links":{"self":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/8899","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/comments?post=8899"}],"version-history":[{"count":7,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/8899\/revisions"}],"predecessor-version":[{"id":8911,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/8899\/revisions\/8911"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media\/6903"}],"wp:attachment":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media?parent=8899"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/categories?post=8899"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/tags?post=8899"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}