SlideShare una empresa de Scribd logo
Implementando APIs HTML5
Danae Aguilar Guzmán
MCT, MS, MCTS, MCP
danaeaguilar@gmail.com
Contenido del Módulo
 APIs de almacenamiento
 AppCache
 API de Geo localización
APIs de almacenamiento
 Permiten guardar datos en la máquina del
cliente
 Los datos que almacenan están enlazados a
un URL (los datos no pueden ser accedidos
por otros sitios)
 Para acceder desde distintas paginas de un
sitio, se debe usar el mismo host, protocolo
y puerto
APIs de almacenamiento
Web storage
Proporciona una manera simple de almacenar datos
basados en key/value
Web SQL database
Provee el poder de una BD relacional, soporta
comandos SQL, transacciones. Pero tiene soporte
limitado.
IndexedDB
Una BD no relacional (NoSQL) provee simplicidad y
algunas características como indexado y transacciones.
Filesystem API
Útil para guardar datos de mayor tamaño como
archivos de texto, imágenes y video. Aun no es
soportado por todos los navegadores.
Web storage
Web storage
 Proporciona una manera simple de
almacenar datos basados en key/value
 Se guardan en el disco del usuario
 Se ejecutan de manera síncrona.
 No soporta indexamiento ni transacciones.
 Es el mas soportado por los navegadores
Puede ser de 2 tipos:
1. localStorage
2. sessionStorage
Local Storage
Local storage
 Almacenamiento NoSQL
 Fácil de usar, basado en pares key/value
 Puede almacenar por lo menos unos 5MB
setItem(key, value)
getItem(key)
removeItem(key)
clear()
length
key(index)
Local Storage
Guardando datos
• Cualquiera de las siguientes maneras:
localStorage.setItem('nombre', $('#nombre').val());
localStorage['nombre'] = $('#nombre').val();
localStorage.nombre = $('#nombre').val();
Local Storage
Recuperando datos
• Si no hay datos, retorna null
• Usar cualquiera de las siguientes maneras:
var nombre = localStorage.getItem('nombre');
var nombre = localStorage['nombre'];
var nombre = localStorage.firstName;
Local Storage
Eliminar datos
• En base a su clave
• Si no encuentra la clave, no hace nada
• Eliminar todos los datos del Local Storage:
localStorage.removeItem('nombre');
localStorage.clear();
Local Storage
Cantidad de datos
Obtener la clave en base a un índice
var cantidadDatos = localStorage.length;
var clave = localStorage.key(1);
Local Storage
Verificar si el navegador lo soporta:
Verificacion usando Modernizr
• Agregar el script modernizr.js
function estaSoportado() {
return 'localStorage' in window;
}
if (estaSoportado()) {
localStorage.setItem('nombre', $('#nombre').val());
}
if (Modernizr.localstorage) {
localStorage.setItem('nombre', $('#nombre').val());
}
Local Storage
Almacenando objetos complejos:
Obteniendo el valor del objeto:
var persona = { nombre: 'Pepito', apellido: 'Perez' };
localStorage.setItem('persona', JSON.stringify(persona));
var persona = JSON.parse(localStorage.getItem('persona'));
Session Storage
Session storage
 Igual que Local Storage pero Session
Storage solo perdura hasta cerrar al
navegador.
 Los datos se limpian automáticamente
(Bueno para la memoria)
 Su contexto se reduce a un solo tab o
ventana de un solo navegador
 Sus datos se pueden compartir entre
elementos iframe de la página.
Session Storage
Manejo similar a localStorage:
• setItem(key, value)
• getItem(key)
• removeItem(key)
• clear()
• length
• key(index)
El evento Storage
Podemos suscribirnos al evento storage:
Suscribiéndonos desde Jquery:
function manejarCambios(e) {
alert(e.newValue);
}
window.addEventListener('storage', manejarCambios,
false);
function manejarCambios(e) {
alert(e.newValue);
}
$(window).on('storage', manejarCambios);
El evento Storage
Se lanza cuando ocurre algún cambio en el
storage en otro tab o ventana.
Nos provee información del evento, como:
• key
• oldValue
• newValue
• url
• storageArea
AppCache
AppCache
 HTML5 introduce la posibilidad de configurar
como se almacenan en cache los archivos.
 Permite trabajar offline
 Si se pierde conectividad se cambia a modo
local.
AppCache
Archivo manifest de cache
Usar el content type text/cache-manifest en el
reponse
Para IIS se require configurar:
<system.webServer>
<staticContent>
<mimeMap fileExtension=".appcache"
mimeType="text/cache-manifest" />
</staticContent>
</system.webServer>
AppCache
Archivo manifest de cache
Crear al archivo manifest.appcache
Usar el content type text/cache-manifest en el
reponse. Para IIS se require configurar:
<system.webServer>
<staticContent>
<mimeMap fileExtension=".appcache"
mimeType="text/cache-manifest" />
</staticContent>
</system.webServer>
AppCache
Referenciar al archivo manifest.appcache
<!DOCTYPE html>
<html manifest="manifest.appcache">
AppCache
Contenido del appcache:
La primera line debe ser:
Luego tenemos 3 secciones:
1. CACHE: Contiene los items que queremos
cachear, también pueden ir directo debajo de
CACHE MANIFEST
2. NETWORK: Los URLs de los recursos que
solo se pueden acceder cuando hay conexión
3. FALLBACK: Archivos que no quieres cachear
pero quieres usar algo mas en su lugar.
CACHE MANIFEST
AppCache
Contenido del appcache:
Ejemplo:
CACHE MANIFEST
# version 1.0
CACHE:
/estilo.css
/main.js
FALLBACK:
/Images/ /Images/Offline.jpg
AppCache
Actualizando el Cache
El cache se actualizará cuando:
 Se eliminen los datos de cache del navegador
 El archivo de manifest se actualiza (Puede ser
un cambio en un comentario)
 El cache es actualizado programáticamente
API de Geo localización
API de Geo localización
 Es usado para obtener la ubicación geográfica
del usuario
 Puede obtener la ubicación de diferentes
fuentes como: Global Positioning System
(GPS), dirección de IP, radio frequency
identification (RFID), Wi-Fi y Bluetooth MAC
addresses, celular IDs y de una entrada del
usuario.
Posicionamiento Básico
Verificando si geolocation es soportado
Métodos:
 getCurrentPosition() Obtiene la posición
actual
 watchPosition() Continuamente actualiza la
posición actual
 clearWatch() Detiene la actualización
continua de la ubicación
function soportaGeolocation() {
return 'geolocation' in navigator;
}
Posicionamiento Básico
Un objeto Position tiene las siguientes
propiedades:
 coords Objeto de coordenadas de la
ubicación actual, de tipo Coordinates.
 timestamp La hora en milisegundos en que
las coordenadas fueron creadas basadas en el
Unix Epoc.
 Para convertirlo en dateTime:
var dateTime = new Date(posicion.timestamp).toLocaleString();
Posicionamiento Básico
Un objeto Coordinates tiene las siguientes
propiedades:
 latitude La latitude en grados decimales
 longitude La longitud en grados decimales
 altitude La altura en metros
 accuracy La precisión de las coordenadas en
metros
 altitudeAccuracy La precisión de la altura en
metros
 heading La dirección de viaje en grados
 speed La velocidad de viaje en metros/segundo
Posicionamiento Básico
Obtener la posición:
Mostrar la posición :
navigator.geolocation.getCurrentPosition(mostrarPosicion);
function mostrarPosicion(p) {
var datetime = new Date(p.timestamp).toLocaleString();
$('#mensaje').html("Latitude: " + p.coords.latitude +
"<br />" + "Longitude: " + p.coords.longitude +
"<br />" + "Timestamp: " + datetime);
}
Posicionamiento Básico
Manejando errores:
navigator.geolocation.getCurrentPosition(mostrarPosicion, mostrarError);
function mostrarError(error) {
switch (error.code) {
case error.PERMISSION_DENIED:
mostrarMensaje("El usuario denegó la petición de acceso a
Geolocation.");
break;
case error.POSITION_UNAVAILABLE:
mostrarMensaje("Información de ubicación no disponible.");
break;
case error.TIMEOUT:
mostrarMensaje("Time out al obtener la ubicación.");
break;
case error.UNKNOWN_ERROR:
mostrarMensaje("Ocurrió un error desconocido.");
break;
}
}
Posicionamiento Básico
Eviando opciones:
 enableHighAccuracy, el mejor resultado
posible aunque tome mas tiempo
 timeout, tiempo en milisegundos que se
esperará una respuesta
 maximumAge, tiempo en cache
var opciones = {
enableHighAccuracy: true,
timeout: 3000,
maximumAge: 20000
};
navigator.geolocation.getCurrentPosition(mostrarPosicion,
mostrarError,
opciones);
Posicionamiento Monitoreado
Monitoreando la posición:
var watchId = 0;
$(document).ready(function () {
$("#iniciarMonitoreo").on("click", obtenerUbicacion);
$("#detenerMonitoreo").on("click", detener);
});
function obtenerUbicacion() {
var opciones = {
enableHighAccuracy: true
};
watchId = navigator.geolocation.watchPosition(
mostrarPosicion,
mostrarError,
opciones);
}
Posicionamiento Monitoreado
function detener() {
if (watchId != 0) {
navigator.geolocation.clearWatch(watchId);
watchId = 0;
$('#mensaje').html("Se termino de monitorear.");
}
}
Ejemplo de uso
Google Maps
Importar el script:
Agregamos un div para mostrar el mapa:
<script
src="http://maps.google.com/maps/api/js?sensor=false">
</script>
<div id="mapa"></div>
Ejemplo de uso
Google Maps
Estilo del div:
#mapa {
width: 400px;
height: 300px;
margin-right: auto;
margin-left: auto;
border: solid;
}
Ejemplo de uso
Mostrar el mapa:
function mostrarPosicion(posicion) {
var mapa = document.getElementById('mapa');
var coords = new google.maps.LatLng(posicion.coords.latitude
, posicion.coords.longitude);
var opciones = {
zoom: 13,
center: coords,
mapTypeControl: false,
navigationControlOptions: {
style: google.maps.NavigationControlStyle.SMALL
},
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(mapa, opciones);
var marker = new google.maps.Marker({
position: coords,
map: map,
title: "Aquí estas!"
});
}

Más contenido relacionado

La actualidad más candente

Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
Javier P.
 
Android 4.x: Unidad 07 BBDD SQLite
Android 4.x: Unidad 07 BBDD SQLiteAndroid 4.x: Unidad 07 BBDD SQLite
Android 4.x: Unidad 07 BBDD SQLite
David Vaquero
 
Php y my sql con manejo de sesiones
Php y my sql con manejo de sesionesPhp y my sql con manejo de sesiones
Php y my sql con manejo de sesiones
capo1988
 
Trabajo de base de datos en sqlserver
Trabajo de base de datos en sqlserverTrabajo de base de datos en sqlserver
Trabajo de base de datos en sqlserver
Jesús Alberto Velasquez abanto
 
Clase 14 doctrine - subir archivos
Clase 14   doctrine - subir archivosClase 14   doctrine - subir archivos
Clase 14 doctrine - subir archivos
hydras_cs
 
Unidad 9. acceso a base de datos desde java
Unidad 9. acceso a base de datos desde javaUnidad 9. acceso a base de datos desde java
Unidad 9. acceso a base de datos desde java
devsco63
 
Tomcat yant
Tomcat yantTomcat yant
Modelo vista controlador
Modelo vista controladorModelo vista controlador
Modelo vista controlador
descarga2009
 
Connection
ConnectionConnection
Android 4.x: Unidad 06 Listados en pantalla
Android 4.x: Unidad 06 Listados en pantallaAndroid 4.x: Unidad 06 Listados en pantalla
Android 4.x: Unidad 06 Listados en pantalla
David Vaquero
 
Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundo
jubacalo
 
Zen AJAX - Programador PHP
Zen AJAX - Programador PHPZen AJAX - Programador PHP
Zen AJAX - Programador PHP
Juan Belón Pérez
 
Trabajo de software
Trabajo de softwareTrabajo de software
Trabajo de software
Patricia Reyna
 
Deployer PHP. Presentación para #PHPSevilla
Deployer PHP. Presentación para #PHPSevillaDeployer PHP. Presentación para #PHPSevilla
Deployer PHP. Presentación para #PHPSevilla
Agencia INNN
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DB
jubacalo
 
Marcos quesada caching_sf2
Marcos quesada caching_sf2Marcos quesada caching_sf2
Marcos quesada caching_sf2
symfony_bcn
 
Como crear usuarios y asignar permisos en postgre sql blog de alevsk
Como crear usuarios y asignar permisos en postgre sql   blog de alevskComo crear usuarios y asignar permisos en postgre sql   blog de alevsk
Como crear usuarios y asignar permisos en postgre sql blog de alevsk
antoniorua1
 
Cloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de PersistenciaCloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de Persistencia
David J. Brenes
 
Gulp js php sevilla 28 septiembre 2016
Gulp js   php sevilla 28 septiembre 2016Gulp js   php sevilla 28 septiembre 2016
Gulp js php sevilla 28 septiembre 2016
Agencia INNN
 
autenticacion apache con mysql
autenticacion apache con mysqlautenticacion apache con mysql
autenticacion apache con mysql
Roberto Almena
 

La actualidad más candente (20)

Desarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQueryDesarrollo de aplicaciones web usando Catalyst y jQuery
Desarrollo de aplicaciones web usando Catalyst y jQuery
 
Android 4.x: Unidad 07 BBDD SQLite
Android 4.x: Unidad 07 BBDD SQLiteAndroid 4.x: Unidad 07 BBDD SQLite
Android 4.x: Unidad 07 BBDD SQLite
 
Php y my sql con manejo de sesiones
Php y my sql con manejo de sesionesPhp y my sql con manejo de sesiones
Php y my sql con manejo de sesiones
 
Trabajo de base de datos en sqlserver
Trabajo de base de datos en sqlserverTrabajo de base de datos en sqlserver
Trabajo de base de datos en sqlserver
 
Clase 14 doctrine - subir archivos
Clase 14   doctrine - subir archivosClase 14   doctrine - subir archivos
Clase 14 doctrine - subir archivos
 
Unidad 9. acceso a base de datos desde java
Unidad 9. acceso a base de datos desde javaUnidad 9. acceso a base de datos desde java
Unidad 9. acceso a base de datos desde java
 
Tomcat yant
Tomcat yantTomcat yant
Tomcat yant
 
Modelo vista controlador
Modelo vista controladorModelo vista controlador
Modelo vista controlador
 
Connection
ConnectionConnection
Connection
 
Android 4.x: Unidad 06 Listados en pantalla
Android 4.x: Unidad 06 Listados en pantallaAndroid 4.x: Unidad 06 Listados en pantalla
Android 4.x: Unidad 06 Listados en pantalla
 
Explicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundoExplicación del código del Servlet HolaMundo
Explicación del código del Servlet HolaMundo
 
Zen AJAX - Programador PHP
Zen AJAX - Programador PHPZen AJAX - Programador PHP
Zen AJAX - Programador PHP
 
Trabajo de software
Trabajo de softwareTrabajo de software
Trabajo de software
 
Deployer PHP. Presentación para #PHPSevilla
Deployer PHP. Presentación para #PHPSevillaDeployer PHP. Presentación para #PHPSevilla
Deployer PHP. Presentación para #PHPSevilla
 
Find File Servlet DB
Find File Servlet DBFind File Servlet DB
Find File Servlet DB
 
Marcos quesada caching_sf2
Marcos quesada caching_sf2Marcos quesada caching_sf2
Marcos quesada caching_sf2
 
Como crear usuarios y asignar permisos en postgre sql blog de alevsk
Como crear usuarios y asignar permisos en postgre sql   blog de alevskComo crear usuarios y asignar permisos en postgre sql   blog de alevsk
Como crear usuarios y asignar permisos en postgre sql blog de alevsk
 
Cloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de PersistenciaCloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de Persistencia
 
Gulp js php sevilla 28 septiembre 2016
Gulp js   php sevilla 28 septiembre 2016Gulp js   php sevilla 28 septiembre 2016
Gulp js php sevilla 28 septiembre 2016
 
autenticacion apache con mysql
autenticacion apache con mysqlautenticacion apache con mysql
autenticacion apache con mysql
 

Similar a 04. Implementando APIs HTML5

HTML 5 & WebGL (Spanish Version)
HTML 5 & WebGL (Spanish Version)HTML 5 & WebGL (Spanish Version)
HTML 5 & WebGL (Spanish Version)
Iran Reyes Fleitas
 
Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernes
Dani Latorre
 
Ajax Huancayo
Ajax HuancayoAjax Huancayo
Ajax Huancayo
Jonathan Lara Vasquez
 
Curso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCurso de Desarrollo Web de Platzi
Curso de Desarrollo Web de Platzi
Carlos Azaustre
 
J M E R L I N P H P
J M E R L I N P H PJ M E R L I N P H P
J M E R L I N P H P
Mauro Gomez Mejia
 
Jquery para principianes
Jquery para principianesJquery para principianes
Jquery para principianes
Mauro Gomez Mejia
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
MarlonAlbertoGalvis
 
Ajax
AjaxAjax
Ajax
ousli07
 
Curso de HTML5
Curso de HTML5Curso de HTML5
Curso de HTML5
Carlos Azaustre
 
Aplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y NassiAplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y Nassi
Guillermo Nassi
 
LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"
Alberto Ruibal
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apis
CloudAppi
 
Conceptos Introductorios Del Web 2
Conceptos Introductorios Del Web 2Conceptos Introductorios Del Web 2
Conceptos Introductorios Del Web 2
Michelle Aguirre
 
ASP.NET MVC - areas, manejo de estado
ASP.NET MVC - areas, manejo de estadoASP.NET MVC - areas, manejo de estado
ASP.NET MVC - areas, manejo de estado
Danae Aguilar Guzmán
 
introduccion a Ajax
introduccion a Ajaxintroduccion a Ajax
introduccion a Ajax
Yair Ambrocio
 
Conceptos acerca de Ajax
Conceptos acerca  de AjaxConceptos acerca  de Ajax
Conceptos acerca de Ajax
Alvaro Castillo
 
Introduccion Ajax V1.0
Introduccion Ajax V1.0Introduccion Ajax V1.0
Introduccion Ajax V1.0
Arnulfo Gomez
 
Workshop React + Firebase | T3chFest 2017
Workshop React + Firebase | T3chFest 2017Workshop React + Firebase | T3chFest 2017
Workshop React + Firebase | T3chFest 2017
Carlos Azaustre
 
GDG DevFest Lighting Talks México
GDG DevFest Lighting Talks MéxicoGDG DevFest Lighting Talks México
GDG DevFest Lighting Talks México
Juan José Rodriguez MsC.
 
13. Configuracion De Aplicaciones Web Asp.Net
13.  Configuracion De Aplicaciones Web Asp.Net13.  Configuracion De Aplicaciones Web Asp.Net
13. Configuracion De Aplicaciones Web Asp.Net
guest3cf6ff
 

Similar a 04. Implementando APIs HTML5 (20)

HTML 5 & WebGL (Spanish Version)
HTML 5 & WebGL (Spanish Version)HTML 5 & WebGL (Spanish Version)
HTML 5 & WebGL (Spanish Version)
 
Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernes
 
Ajax Huancayo
Ajax HuancayoAjax Huancayo
Ajax Huancayo
 
Curso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCurso de Desarrollo Web de Platzi
Curso de Desarrollo Web de Platzi
 
J M E R L I N P H P
J M E R L I N P H PJ M E R L I N P H P
J M E R L I N P H P
 
Jquery para principianes
Jquery para principianesJquery para principianes
Jquery para principianes
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
 
Ajax
AjaxAjax
Ajax
 
Curso de HTML5
Curso de HTML5Curso de HTML5
Curso de HTML5
 
Aplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y NassiAplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y Nassi
 
LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apis
 
Conceptos Introductorios Del Web 2
Conceptos Introductorios Del Web 2Conceptos Introductorios Del Web 2
Conceptos Introductorios Del Web 2
 
ASP.NET MVC - areas, manejo de estado
ASP.NET MVC - areas, manejo de estadoASP.NET MVC - areas, manejo de estado
ASP.NET MVC - areas, manejo de estado
 
introduccion a Ajax
introduccion a Ajaxintroduccion a Ajax
introduccion a Ajax
 
Conceptos acerca de Ajax
Conceptos acerca  de AjaxConceptos acerca  de Ajax
Conceptos acerca de Ajax
 
Introduccion Ajax V1.0
Introduccion Ajax V1.0Introduccion Ajax V1.0
Introduccion Ajax V1.0
 
Workshop React + Firebase | T3chFest 2017
Workshop React + Firebase | T3chFest 2017Workshop React + Firebase | T3chFest 2017
Workshop React + Firebase | T3chFest 2017
 
GDG DevFest Lighting Talks México
GDG DevFest Lighting Talks MéxicoGDG DevFest Lighting Talks México
GDG DevFest Lighting Talks México
 
13. Configuracion De Aplicaciones Web Asp.Net
13.  Configuracion De Aplicaciones Web Asp.Net13.  Configuracion De Aplicaciones Web Asp.Net
13. Configuracion De Aplicaciones Web Asp.Net
 

Más de Danae Aguilar Guzmán

Microsoft HoloLens
Microsoft HoloLensMicrosoft HoloLens
Microsoft HoloLens
Danae Aguilar Guzmán
 
WPF 10. mejorando la funcionalidad y usabilidad de las aplicaciones
WPF 10. mejorando la funcionalidad y usabilidad de las aplicacionesWPF 10. mejorando la funcionalidad y usabilidad de las aplicaciones
WPF 10. mejorando la funcionalidad y usabilidad de las aplicaciones
Danae Aguilar Guzmán
 
WPF 09. procesos asíncronos y programación paralela
WPF 09. procesos asíncronos y programación paralelaWPF 09. procesos asíncronos y programación paralela
WPF 09. procesos asíncronos y programación paralela
Danae Aguilar Guzmán
 
WPF 08 - manejo y vinculación de datos
WPF 08 - manejo y vinculación de datosWPF 08 - manejo y vinculación de datos
WPF 08 - manejo y vinculación de datos
Danae Aguilar Guzmán
 
WPF 07 - gráficos, animación y multimedia
WPF 07 - gráficos, animación y multimediaWPF 07 - gráficos, animación y multimedia
WPF 07 - gráficos, animación y multimedia
Danae Aguilar Guzmán
 
WPF 06 - personalizando los controles de interfaz de usuario
WPF 06 -  personalizando los controles de interfaz de usuarioWPF 06 -  personalizando los controles de interfaz de usuario
WPF 06 - personalizando los controles de interfaz de usuario
Danae Aguilar Guzmán
 
WPF 05 - triggers y eventos
WPF 05 - triggers y eventosWPF 05 - triggers y eventos
WPF 05 - triggers y eventos
Danae Aguilar Guzmán
 
WPF 04 - reutilizando recursos y estilos en una aplicación WPF
WPF 04 -  reutilizando recursos y estilos en una aplicación WPF WPF 04 -  reutilizando recursos y estilos en una aplicación WPF
WPF 04 - reutilizando recursos y estilos en una aplicación WPF
Danae Aguilar Guzmán
 
WPF 03 - controles WPF
WPF 03 - controles WPF WPF 03 - controles WPF
WPF 03 - controles WPF
Danae Aguilar Guzmán
 
WPF 02 - construyendo una interfaz de usuario
WPF 02  - construyendo una interfaz de usuarioWPF 02  - construyendo una interfaz de usuario
WPF 02 - construyendo una interfaz de usuario
Danae Aguilar Guzmán
 
WPF 01 - introducción
WPF 01 -  introducciónWPF 01 -  introducción
WPF 01 - introducción
Danae Aguilar Guzmán
 
ASP.NET MVC - introduccion al web api
ASP.NET MVC - introduccion al web apiASP.NET MVC - introduccion al web api
ASP.NET MVC - introduccion al web api
Danae Aguilar Guzmán
 
ASP.NET MVC - bundling y minification
ASP.NET MVC - bundling y minificationASP.NET MVC - bundling y minification
ASP.NET MVC - bundling y minification
Danae Aguilar Guzmán
 
ASP.NET MVC - AJAX
ASP.NET MVC - AJAXASP.NET MVC - AJAX
ASP.NET MVC - AJAX
Danae Aguilar Guzmán
 
ASP.NET MVC - implementando globalizacion and localizacion
ASP.NET MVC - implementando globalizacion and localizacionASP.NET MVC - implementando globalizacion and localizacion
ASP.NET MVC - implementando globalizacion and localizacion
Danae Aguilar Guzmán
 
ASP.NET MVC - validacion de datos
ASP.NET MVC - validacion de datosASP.NET MVC - validacion de datos
ASP.NET MVC - validacion de datos
Danae Aguilar Guzmán
 
ASP.NET MVC - layouts y vistas parciales
ASP.NET MVC - layouts y vistas parcialesASP.NET MVC - layouts y vistas parciales
ASP.NET MVC - layouts y vistas parciales
Danae Aguilar Guzmán
 
ASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - Introducción a ASP.NET MVCASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - Introducción a ASP.NET MVC
Danae Aguilar Guzmán
 
Crecimiento profesional como desarrollador de software
Crecimiento profesional como desarrollador de softwareCrecimiento profesional como desarrollador de software
Crecimiento profesional como desarrollador de software
Danae Aguilar Guzmán
 
10. consumiendo datos
10. consumiendo datos10. consumiendo datos
10. consumiendo datos
Danae Aguilar Guzmán
 

Más de Danae Aguilar Guzmán (20)

Microsoft HoloLens
Microsoft HoloLensMicrosoft HoloLens
Microsoft HoloLens
 
WPF 10. mejorando la funcionalidad y usabilidad de las aplicaciones
WPF 10. mejorando la funcionalidad y usabilidad de las aplicacionesWPF 10. mejorando la funcionalidad y usabilidad de las aplicaciones
WPF 10. mejorando la funcionalidad y usabilidad de las aplicaciones
 
WPF 09. procesos asíncronos y programación paralela
WPF 09. procesos asíncronos y programación paralelaWPF 09. procesos asíncronos y programación paralela
WPF 09. procesos asíncronos y programación paralela
 
WPF 08 - manejo y vinculación de datos
WPF 08 - manejo y vinculación de datosWPF 08 - manejo y vinculación de datos
WPF 08 - manejo y vinculación de datos
 
WPF 07 - gráficos, animación y multimedia
WPF 07 - gráficos, animación y multimediaWPF 07 - gráficos, animación y multimedia
WPF 07 - gráficos, animación y multimedia
 
WPF 06 - personalizando los controles de interfaz de usuario
WPF 06 -  personalizando los controles de interfaz de usuarioWPF 06 -  personalizando los controles de interfaz de usuario
WPF 06 - personalizando los controles de interfaz de usuario
 
WPF 05 - triggers y eventos
WPF 05 - triggers y eventosWPF 05 - triggers y eventos
WPF 05 - triggers y eventos
 
WPF 04 - reutilizando recursos y estilos en una aplicación WPF
WPF 04 -  reutilizando recursos y estilos en una aplicación WPF WPF 04 -  reutilizando recursos y estilos en una aplicación WPF
WPF 04 - reutilizando recursos y estilos en una aplicación WPF
 
WPF 03 - controles WPF
WPF 03 - controles WPF WPF 03 - controles WPF
WPF 03 - controles WPF
 
WPF 02 - construyendo una interfaz de usuario
WPF 02  - construyendo una interfaz de usuarioWPF 02  - construyendo una interfaz de usuario
WPF 02 - construyendo una interfaz de usuario
 
WPF 01 - introducción
WPF 01 -  introducciónWPF 01 -  introducción
WPF 01 - introducción
 
ASP.NET MVC - introduccion al web api
ASP.NET MVC - introduccion al web apiASP.NET MVC - introduccion al web api
ASP.NET MVC - introduccion al web api
 
ASP.NET MVC - bundling y minification
ASP.NET MVC - bundling y minificationASP.NET MVC - bundling y minification
ASP.NET MVC - bundling y minification
 
ASP.NET MVC - AJAX
ASP.NET MVC - AJAXASP.NET MVC - AJAX
ASP.NET MVC - AJAX
 
ASP.NET MVC - implementando globalizacion and localizacion
ASP.NET MVC - implementando globalizacion and localizacionASP.NET MVC - implementando globalizacion and localizacion
ASP.NET MVC - implementando globalizacion and localizacion
 
ASP.NET MVC - validacion de datos
ASP.NET MVC - validacion de datosASP.NET MVC - validacion de datos
ASP.NET MVC - validacion de datos
 
ASP.NET MVC - layouts y vistas parciales
ASP.NET MVC - layouts y vistas parcialesASP.NET MVC - layouts y vistas parciales
ASP.NET MVC - layouts y vistas parciales
 
ASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - Introducción a ASP.NET MVCASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - Introducción a ASP.NET MVC
 
Crecimiento profesional como desarrollador de software
Crecimiento profesional como desarrollador de softwareCrecimiento profesional como desarrollador de software
Crecimiento profesional como desarrollador de software
 
10. consumiendo datos
10. consumiendo datos10. consumiendo datos
10. consumiendo datos
 

Último

Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
Javier Martinez Seco
 
sesión 8 tipos de componentes SMD SOFTWARE
sesión 8 tipos de componentes SMD SOFTWAREsesión 8 tipos de componentes SMD SOFTWARE
sesión 8 tipos de componentes SMD SOFTWARE
YanelyMedalithBM
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
micarnavaltupatrimon
 
INTRODUCCIÓN A LA PERFORACIÓN DE POZOS PROFUNDOS
INTRODUCCIÓN A LA PERFORACIÓN DE POZOS PROFUNDOSINTRODUCCIÓN A LA PERFORACIÓN DE POZOS PROFUNDOS
INTRODUCCIÓN A LA PERFORACIÓN DE POZOS PROFUNDOS
Koraima Zambrano Peralta
 
APLICACIONES EN INTERNET-GOOGLE.20240pdf
APLICACIONES EN INTERNET-GOOGLE.20240pdfAPLICACIONES EN INTERNET-GOOGLE.20240pdf
APLICACIONES EN INTERNET-GOOGLE.20240pdf
jordanovillacorta09
 
Aplicación de las sentencias de control en telecomunicaciones
Aplicación de las sentencias de control en telecomunicacionesAplicación de las sentencias de control en telecomunicaciones
Aplicación de las sentencias de control en telecomunicaciones
ambuludimateo2
 
IF y SWITCH: Claves para una Lógica de Programación
IF y SWITCH: Claves para una Lógica de ProgramaciónIF y SWITCH: Claves para una Lógica de Programación
IF y SWITCH: Claves para una Lógica de Programación
bvaldivieso014
 
Infografía Valores Collage Café y Beige.pdf
Infografía Valores Collage Café y Beige.pdfInfografía Valores Collage Café y Beige.pdf
Infografía Valores Collage Café y Beige.pdf
hmmayra2
 
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
Maria Celeste Trujillo Cruz
 
PLUGIN (Mary Cielo Huañec Paz) .pdf
PLUGIN (Mary Cielo Huañec Paz)      .pdfPLUGIN (Mary Cielo Huañec Paz)      .pdf
PLUGIN (Mary Cielo Huañec Paz) .pdf
MaryCieloHuaecPaz
 
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcelherramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
Eduardo455921
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
micarnavaltupatrimon
 
DuckDuckGo (Motor de Busqueda) - JRM - APSTI I A
DuckDuckGo (Motor de Busqueda) -  JRM - APSTI I ADuckDuckGo (Motor de Busqueda) -  JRM - APSTI I A
DuckDuckGo (Motor de Busqueda) - JRM - APSTI I A
DarnotOcxalFlorianoP
 
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptxTARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
dayronfabricioruizmo
 

Último (14)

Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
Casos de éxito en Negocios online: Estrategias WPO que funcionan - Presentac...
 
sesión 8 tipos de componentes SMD SOFTWARE
sesión 8 tipos de componentes SMD SOFTWAREsesión 8 tipos de componentes SMD SOFTWARE
sesión 8 tipos de componentes SMD SOFTWARE
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
 
INTRODUCCIÓN A LA PERFORACIÓN DE POZOS PROFUNDOS
INTRODUCCIÓN A LA PERFORACIÓN DE POZOS PROFUNDOSINTRODUCCIÓN A LA PERFORACIÓN DE POZOS PROFUNDOS
INTRODUCCIÓN A LA PERFORACIÓN DE POZOS PROFUNDOS
 
APLICACIONES EN INTERNET-GOOGLE.20240pdf
APLICACIONES EN INTERNET-GOOGLE.20240pdfAPLICACIONES EN INTERNET-GOOGLE.20240pdf
APLICACIONES EN INTERNET-GOOGLE.20240pdf
 
Aplicación de las sentencias de control en telecomunicaciones
Aplicación de las sentencias de control en telecomunicacionesAplicación de las sentencias de control en telecomunicaciones
Aplicación de las sentencias de control en telecomunicaciones
 
IF y SWITCH: Claves para una Lógica de Programación
IF y SWITCH: Claves para una Lógica de ProgramaciónIF y SWITCH: Claves para una Lógica de Programación
IF y SWITCH: Claves para una Lógica de Programación
 
Infografía Valores Collage Café y Beige.pdf
Infografía Valores Collage Café y Beige.pdfInfografía Valores Collage Café y Beige.pdf
Infografía Valores Collage Café y Beige.pdf
 
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
DIAPOSITIVA DE LA MEMORIA RAM.PPXT.-MARIATRUJILLO.
 
PLUGIN (Mary Cielo Huañec Paz) .pdf
PLUGIN (Mary Cielo Huañec Paz)      .pdfPLUGIN (Mary Cielo Huañec Paz)      .pdf
PLUGIN (Mary Cielo Huañec Paz) .pdf
 
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcelherramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
herramientaswebpdfwww.edu.pe.edu.institutoluisevalcarcel
 
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
Mi Carnaval, Aplicación web para la gestión del carnaval y la predicción basa...
 
DuckDuckGo (Motor de Busqueda) - JRM - APSTI I A
DuckDuckGo (Motor de Busqueda) -  JRM - APSTI I ADuckDuckGo (Motor de Busqueda) -  JRM - APSTI I A
DuckDuckGo (Motor de Busqueda) - JRM - APSTI I A
 
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptxTARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
TARJETA MADRE DE DAYRON FABRI RUIZ-1.pptx
 

04. Implementando APIs HTML5

  • 1. Implementando APIs HTML5 Danae Aguilar Guzmán MCT, MS, MCTS, MCP danaeaguilar@gmail.com
  • 2. Contenido del Módulo  APIs de almacenamiento  AppCache  API de Geo localización
  • 3. APIs de almacenamiento  Permiten guardar datos en la máquina del cliente  Los datos que almacenan están enlazados a un URL (los datos no pueden ser accedidos por otros sitios)  Para acceder desde distintas paginas de un sitio, se debe usar el mismo host, protocolo y puerto
  • 4. APIs de almacenamiento Web storage Proporciona una manera simple de almacenar datos basados en key/value Web SQL database Provee el poder de una BD relacional, soporta comandos SQL, transacciones. Pero tiene soporte limitado. IndexedDB Una BD no relacional (NoSQL) provee simplicidad y algunas características como indexado y transacciones. Filesystem API Útil para guardar datos de mayor tamaño como archivos de texto, imágenes y video. Aun no es soportado por todos los navegadores.
  • 5. Web storage Web storage  Proporciona una manera simple de almacenar datos basados en key/value  Se guardan en el disco del usuario  Se ejecutan de manera síncrona.  No soporta indexamiento ni transacciones.  Es el mas soportado por los navegadores Puede ser de 2 tipos: 1. localStorage 2. sessionStorage
  • 6. Local Storage Local storage  Almacenamiento NoSQL  Fácil de usar, basado en pares key/value  Puede almacenar por lo menos unos 5MB setItem(key, value) getItem(key) removeItem(key) clear() length key(index)
  • 7. Local Storage Guardando datos • Cualquiera de las siguientes maneras: localStorage.setItem('nombre', $('#nombre').val()); localStorage['nombre'] = $('#nombre').val(); localStorage.nombre = $('#nombre').val();
  • 8. Local Storage Recuperando datos • Si no hay datos, retorna null • Usar cualquiera de las siguientes maneras: var nombre = localStorage.getItem('nombre'); var nombre = localStorage['nombre']; var nombre = localStorage.firstName;
  • 9. Local Storage Eliminar datos • En base a su clave • Si no encuentra la clave, no hace nada • Eliminar todos los datos del Local Storage: localStorage.removeItem('nombre'); localStorage.clear();
  • 10. Local Storage Cantidad de datos Obtener la clave en base a un índice var cantidadDatos = localStorage.length; var clave = localStorage.key(1);
  • 11. Local Storage Verificar si el navegador lo soporta: Verificacion usando Modernizr • Agregar el script modernizr.js function estaSoportado() { return 'localStorage' in window; } if (estaSoportado()) { localStorage.setItem('nombre', $('#nombre').val()); } if (Modernizr.localstorage) { localStorage.setItem('nombre', $('#nombre').val()); }
  • 12. Local Storage Almacenando objetos complejos: Obteniendo el valor del objeto: var persona = { nombre: 'Pepito', apellido: 'Perez' }; localStorage.setItem('persona', JSON.stringify(persona)); var persona = JSON.parse(localStorage.getItem('persona'));
  • 13. Session Storage Session storage  Igual que Local Storage pero Session Storage solo perdura hasta cerrar al navegador.  Los datos se limpian automáticamente (Bueno para la memoria)  Su contexto se reduce a un solo tab o ventana de un solo navegador  Sus datos se pueden compartir entre elementos iframe de la página.
  • 14. Session Storage Manejo similar a localStorage: • setItem(key, value) • getItem(key) • removeItem(key) • clear() • length • key(index)
  • 15. El evento Storage Podemos suscribirnos al evento storage: Suscribiéndonos desde Jquery: function manejarCambios(e) { alert(e.newValue); } window.addEventListener('storage', manejarCambios, false); function manejarCambios(e) { alert(e.newValue); } $(window).on('storage', manejarCambios);
  • 16. El evento Storage Se lanza cuando ocurre algún cambio en el storage en otro tab o ventana. Nos provee información del evento, como: • key • oldValue • newValue • url • storageArea
  • 17. AppCache AppCache  HTML5 introduce la posibilidad de configurar como se almacenan en cache los archivos.  Permite trabajar offline  Si se pierde conectividad se cambia a modo local.
  • 18. AppCache Archivo manifest de cache Usar el content type text/cache-manifest en el reponse Para IIS se require configurar: <system.webServer> <staticContent> <mimeMap fileExtension=".appcache" mimeType="text/cache-manifest" /> </staticContent> </system.webServer>
  • 19. AppCache Archivo manifest de cache Crear al archivo manifest.appcache Usar el content type text/cache-manifest en el reponse. Para IIS se require configurar: <system.webServer> <staticContent> <mimeMap fileExtension=".appcache" mimeType="text/cache-manifest" /> </staticContent> </system.webServer>
  • 20. AppCache Referenciar al archivo manifest.appcache <!DOCTYPE html> <html manifest="manifest.appcache">
  • 21. AppCache Contenido del appcache: La primera line debe ser: Luego tenemos 3 secciones: 1. CACHE: Contiene los items que queremos cachear, también pueden ir directo debajo de CACHE MANIFEST 2. NETWORK: Los URLs de los recursos que solo se pueden acceder cuando hay conexión 3. FALLBACK: Archivos que no quieres cachear pero quieres usar algo mas en su lugar. CACHE MANIFEST
  • 22. AppCache Contenido del appcache: Ejemplo: CACHE MANIFEST # version 1.0 CACHE: /estilo.css /main.js FALLBACK: /Images/ /Images/Offline.jpg
  • 23. AppCache Actualizando el Cache El cache se actualizará cuando:  Se eliminen los datos de cache del navegador  El archivo de manifest se actualiza (Puede ser un cambio en un comentario)  El cache es actualizado programáticamente
  • 24. API de Geo localización API de Geo localización  Es usado para obtener la ubicación geográfica del usuario  Puede obtener la ubicación de diferentes fuentes como: Global Positioning System (GPS), dirección de IP, radio frequency identification (RFID), Wi-Fi y Bluetooth MAC addresses, celular IDs y de una entrada del usuario.
  • 25. Posicionamiento Básico Verificando si geolocation es soportado Métodos:  getCurrentPosition() Obtiene la posición actual  watchPosition() Continuamente actualiza la posición actual  clearWatch() Detiene la actualización continua de la ubicación function soportaGeolocation() { return 'geolocation' in navigator; }
  • 26. Posicionamiento Básico Un objeto Position tiene las siguientes propiedades:  coords Objeto de coordenadas de la ubicación actual, de tipo Coordinates.  timestamp La hora en milisegundos en que las coordenadas fueron creadas basadas en el Unix Epoc.  Para convertirlo en dateTime: var dateTime = new Date(posicion.timestamp).toLocaleString();
  • 27. Posicionamiento Básico Un objeto Coordinates tiene las siguientes propiedades:  latitude La latitude en grados decimales  longitude La longitud en grados decimales  altitude La altura en metros  accuracy La precisión de las coordenadas en metros  altitudeAccuracy La precisión de la altura en metros  heading La dirección de viaje en grados  speed La velocidad de viaje en metros/segundo
  • 28. Posicionamiento Básico Obtener la posición: Mostrar la posición : navigator.geolocation.getCurrentPosition(mostrarPosicion); function mostrarPosicion(p) { var datetime = new Date(p.timestamp).toLocaleString(); $('#mensaje').html("Latitude: " + p.coords.latitude + "<br />" + "Longitude: " + p.coords.longitude + "<br />" + "Timestamp: " + datetime); }
  • 29. Posicionamiento Básico Manejando errores: navigator.geolocation.getCurrentPosition(mostrarPosicion, mostrarError); function mostrarError(error) { switch (error.code) { case error.PERMISSION_DENIED: mostrarMensaje("El usuario denegó la petición de acceso a Geolocation."); break; case error.POSITION_UNAVAILABLE: mostrarMensaje("Información de ubicación no disponible."); break; case error.TIMEOUT: mostrarMensaje("Time out al obtener la ubicación."); break; case error.UNKNOWN_ERROR: mostrarMensaje("Ocurrió un error desconocido."); break; } }
  • 30. Posicionamiento Básico Eviando opciones:  enableHighAccuracy, el mejor resultado posible aunque tome mas tiempo  timeout, tiempo en milisegundos que se esperará una respuesta  maximumAge, tiempo en cache var opciones = { enableHighAccuracy: true, timeout: 3000, maximumAge: 20000 }; navigator.geolocation.getCurrentPosition(mostrarPosicion, mostrarError, opciones);
  • 31. Posicionamiento Monitoreado Monitoreando la posición: var watchId = 0; $(document).ready(function () { $("#iniciarMonitoreo").on("click", obtenerUbicacion); $("#detenerMonitoreo").on("click", detener); }); function obtenerUbicacion() { var opciones = { enableHighAccuracy: true }; watchId = navigator.geolocation.watchPosition( mostrarPosicion, mostrarError, opciones); }
  • 32. Posicionamiento Monitoreado function detener() { if (watchId != 0) { navigator.geolocation.clearWatch(watchId); watchId = 0; $('#mensaje').html("Se termino de monitorear."); } }
  • 33. Ejemplo de uso Google Maps Importar el script: Agregamos un div para mostrar el mapa: <script src="http://maps.google.com/maps/api/js?sensor=false"> </script> <div id="mapa"></div>
  • 34. Ejemplo de uso Google Maps Estilo del div: #mapa { width: 400px; height: 300px; margin-right: auto; margin-left: auto; border: solid; }
  • 35. Ejemplo de uso Mostrar el mapa: function mostrarPosicion(posicion) { var mapa = document.getElementById('mapa'); var coords = new google.maps.LatLng(posicion.coords.latitude , posicion.coords.longitude); var opciones = { zoom: 13, center: coords, mapTypeControl: false, navigationControlOptions: { style: google.maps.NavigationControlStyle.SMALL }, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(mapa, opciones); var marker = new google.maps.Marker({ position: coords, map: map, title: "Aquí estas!" }); }