2008-10-21 12 views
38

¿Alguien sabe si el iPhone admite o admitirá pronto el W3C Geolocation specification?API de geolocalización en el iPhone

Estoy buscando construir una aplicación para usuarios de dispositivos móviles, pero en lugar de perder el tiempo desarrollando aplicaciones para cada plataforma diferente (iPhone, Android, etc.), preferiría crear una aplicación web que hace uso del estándar W3C.

Respuesta

45

Este código funcionó para mí - en el iPhone navegador web Safariy como una ventaja adicional que incluso funcionó con FireFox 3.5 en mi computadora portátil! La especificación de la API de geolocalización es parte de los estándares del consorcio W3 . Pero tenga cuidado: todavía no se ha finalizado.

alt text http://blog.bemoko.com/wp-content/uploads/2009/06/iphone-geo-300-1-150x150.jpgalt text http://blog.bemoko.com/wp-content/uploads/2009/06/iphone-geo-300-2-150x150.jpg

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>Geolocation API Demo</title> 
<meta content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" name="viewport"/> 
<script> 
function successHandler(location) { 
    var message = document.getElementById("message"), html = []; 
    html.push("<img width='256' height='256' src='http://maps.google.com/maps/api/staticmap?center=", location.coords.latitude, ",", location.coords.longitude, "&markers=size:small|color:blue|", location.coords.latitude, ",", location.coords.longitude, "&zoom=14&size=256x256&sensor=false' />"); 
    html.push("<p>Longitude: ", location.coords.longitude, "</p>"); 
    html.push("<p>Latitude: ", location.coords.latitude, "</p>"); 
    html.push("<p>Accuracy: ", location.coords.accuracy, " meters</p>"); 
    message.innerHTML = html.join(""); 
} 
function errorHandler(error) { 
    alert('Attempt to get location failed: ' + error.message); 
} 
navigator.geolocation.getCurrentPosition(successHandler, errorHandler); 
</script> 
</head> 
<body> 
<div id="message">Location unknown</div> 
</body> 
</html> 
+0

¡Bummer! ¡Esto ya no funciona! Ver: http://bemoko.com/blog/iphonegeo – Rimian

+0

funciona para mí ahora – Jamie

+0

y también funciona con Chrome en Linux! –

-3

Actualmente, no es posible obtener la posición GPS de un iPhone con solo API de JavaScript. Se ha hablado de que esto sería bueno, pero, por supuesto, Apple no comentará sobre mejoras futuras en público.

+2

Geolocalización W3C Creo que es compatible con la actualización inminente 3.0 de Iphone. – hendry

+0

¿Hay algún avance en este tema? – Jack

-1

Es posible obtener la información del GPS en JavaScript en el iPhone. El marco QuickConnectiPhone expone esto para usted, así como la información de aceleración.

Para obtener esta información, deberá instalar la aplicación en el dispositivo. Este marco pronto estará disponible para las aplicaciones instaladas de Android, así como para Nokia.

Puede poner su aplicación en el marco para cada uno de estos dispositivos, compilar y enviar.

QuickConnectiPhone está disponible en https://sourceforge.net/projects/quickconnect/

y si se pone en contacto conmigo yo le puede dar versiones preliminares para Android y Nokia.

-1

Rhodes es una solución prometedora "desarrollar una vez en todos lados". No los he probado yo mismo.

0

Esta brecha es la razón por la que desarrollé la aplicación Locatable, básicamente es un complemento para iPhone Safari. Actualmente solo está disponible para teléfonos con jailbreak.

Ver http://lbs.tralfamadore.com/

2

He actualizado el código de MyWhirledView. Funciona muy bien en mi dispositivo iOS 4.3. Google ya no requiere una clave API para acceder a su biblioteca de mapas estáticos.

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>iPhone 4.0 geolocation demo</title> 
<meta content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" name="viewport"/> 
<script> 
function handler(location) { 
var message = document.getElementById("message"); 
message.innerHTML ="<img src='http://maps.google.com/maps/api/staticmap?center=" + location.coords.latitude + "," + location.coords.longitude + "&zoom=14&size=256x256&maptype=roadmap&sensor=false&markers=color:blue%7Clabel:ABC%7C" + location.coords.latitude + "," + location.coords.longitude + "' />"; 



message.innerHTML+="<p>Longitude: " + location.coords.longitude + "</p>"; 
message.innerHTML+="<p>Accuracy: " + location.coords.accuracy + "</p>"; 
message.innerHTML+="<p>Latitude: " + location.coords.latitude + "</p>"; 



} 
navigator.geolocation.getCurrentPosition(handler); 
</script> 
</head> 
<body> 
<div id="message">Location unknown</div> 
</body> 
</html> 
+0

¡Gracias por el código! Funcionó para mi en el iPhone 5 iOS 6 , después de eliminar la declaración XML en la primera línea –

-1

Esta pequeña biblioteca JavaScript es multiplataforma y es compatible con todos los teléfonos inteligentes modernos fuera de la caja:

http://code.google.com/p/geo-location-javascript/

Aquí es cómo lo usa :

//determine if the handset has client side geo location capabilities 
if(geo_position_js.init()){ 
    geo_position_js.getCurrentPosition(success_callback,error_callback); 
}else{ 
    alert("Functionality not available"); 
} 
Cuestiones relacionadas