40

Does anyone know whether the iPhone supports or will soon support the W3C Geolocation specification?

I'm looking to build an app for mobile users, but rather than spend the time developing apps for every different platform (iPhone, Android, etc...), I'd much prefer to create a web app that makes use of the W3C Standard.

luvieere
  • 37,065
  • 18
  • 127
  • 179
Codebeef
  • 43,508
  • 23
  • 86
  • 119

9 Answers9

46

This code worked for me -- on the iPhone web browser Safari and as an added bonus it even worked with FireFox 3.5 on my laptop! The Geolocation API Specification is part of the W3 Consortium’s standards But be warned: it hasn’t been finalized as yet.

alt text
(source: bemoko.com) alt text
(source: bemoko.com)

<?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>
Glorfindel
  • 21,988
  • 13
  • 81
  • 109
SavoryBytes
  • 35,571
  • 4
  • 52
  • 61
7

You can now get location from Javascript APIs in the safari browser following the iPhone 3.0 release - we've created a working example @ http://blog.bemoko.com/2009/06/17/iphone-30-geolocation-javascript-api/

5

Since iPhone OS 3.0 Safari supports getting geo location. See: Safari Reference Library:Getting Geographic Locations On the other side W3C Geo API specification is still in draft.

Cœur
  • 37,241
  • 25
  • 195
  • 267
jki
  • 4,617
  • 1
  • 34
  • 29
2

I updated MyWhirledView's code. Works great on my iOS 4.3 device. Google no longer requires an API key to access their static map library.

<?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>
Niraj D
  • 66
  • 5
  • Thank you for the code! It worked for my on iPhone 5 iOS 6 , after I removed the XML declaration on the first line – SSH This May 31 '13 at 16:43
0

This gap is why I developed the Locatable application -- it's essentially a plug-in for iPhone Safari. Currently it's only available for jailbroken phones.

See http://lbs.tralfamadore.com/

-1

It is possible to get the GPS information in JavaScript on the iPhone. The QuickConnectiPhone framework exposes this for you as well as acceleration information.

To get this information you will have to install the application on the device however. This framework will soon be available for Android installed applications as well as Nokia.

You can put your application into the framework for each of these devices, compile, and ship.

QuickConnectiPhone is available at https://sourceforge.net/projects/quickconnect/

and if you contact me I can give you pre-release versions for Android and Nokia.

Lee
  • 751
  • 5
  • 2
-1

Rhodes is promising a "develop-once-run-everywhere" solution. Haven't tried them myself.

tamersalama
  • 4,093
  • 1
  • 32
  • 35
-1

This small javascript library is cross-platform and supports all modern smartphones out of the box:

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

Here is how you use it:

//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");
}
Artur Bodera
  • 1,662
  • 22
  • 20
-3

Currently, it's not possible to obtain an iPhone's GPS position using just JavaScript APIs. There's been talk that this would be nice, but of course Apple won't comment on future improvements in public.

Ben Gottlieb
  • 85,404
  • 22
  • 176
  • 172