iPhone上的地理定位API
有谁知道iPhone是否支持或即将支持W3C地理定位规范 ?
我正在为移动用户构build一个应用程序,而不是花时间为每个不同的平台(iPhone,Android等)开发应用程序,我更倾向于创build一个Web应用程序,利用W3C标准。
这个代码适用于我 – 在iPhone网页浏览器的Safari 和作为一个额外的好处,它甚至与我的笔记本电脑FireFox 3.5工作! “地理定位API规范”是W3联盟标准的一部分。 但要注意的是,它尚未最终确定。
替代文字http://blog.bemoko.com/wp-content/uploads/2009/06/iphone-geo-300-1-150×150.jpg 替代文字http://blog.bemoko.com/wp-content/uploads /2009/06/iphone-geo-300-2-150×150.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>
您现在可以在iPhone 3.0发行版之后的Safari浏览器中从Javascript API获取位置 – 我们已经创build了一个工作示例@ http://blog.bemoko.com/2009/06/17/iphone-30-geolocation-javascript- API /
由于iPhone OS 3.0 Safari支持获取地理位置。 请参阅: Safari参考库:获取地理位置另一方面,W3C Geo API规范仍在草稿中。
我更新了MyWhirledView的代码。 在我的iOS 4.3设备上效果很好。 Google不再需要API密钥来访问其静态地图库。
<?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>
这个差距就是为什么我开发了Locatable应用程序 – 它本质上是iPhone Safari的一个插件。 目前它只适用于越狱手机。
在iPhone上可以用JavaScript获取GPS信息。 QuickConnectiPhone框架为您揭示了这一点以及加速度信息。
要获取这些信息,您将不得不在设备上安装应用程序。 这个框架将很快可用于Android安装的应用程序以及诺基亚。
您可以将您的应用程序放入每个这些设备的框架中,编译并发送。
QuickConnectPhone可在https://sourceforge.net/projects/quickconnect/上find
如果你联系我,我可以为你提供Android和诺基亚的预发布版本。
罗得岛有希望成为“一劳永逸”的解决scheme。 没有尝试过他们自己。
这个小型的JavaScript库是跨平台的 ,支持所有现成的智能手机:
这里是你如何使用它:
//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"); }
目前,仅使用JavaScript API获取iPhone的GPS位置是不可能的。 有人说这会很好,但是苹果公司当然不会评论公众未来的改进。