Geolocation API on the iPhone

眉间皱痕 提交于 2019-11-26 23:47:36
daniellmb

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.


(source: bemoko.com)


(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>

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/

jki

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.

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>

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/

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.

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

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");
}

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.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!