【问题标题】:Mobile GPS web application移动 GPS 网络应用程序
【发布时间】:2010-07-21 01:43:27
【问题描述】:

我需要开发一个网络应用程序。 (PHP) 100%适用于手机,需要从手机GPS获取信息,才能获取用户当前位置。我的问题是,我该怎么办?

我知道 PHP,但我对 GPS 部分一无所知(以前从未与他们合作过)。我正在寻找的只是抬头看看我是否可以处理这项工作或只是拒绝它。

我听说 W3 地理定位 API 做得很好,但经过测试,我不相信它的准确性和浏览器支持。我不想使用谷歌的齿轮,因为它必须先下载。

【问题讨论】:

    标签: php geolocation gps


    【解决方案1】:

    我确实认为W3C Geolocation API 是一个很好的起点:它在手机上的接受度越来越高,是一个开放标准,并抽象出所有特定于设备的 API。

    确实,准确度可能并不完美,但那是因为手机本身可能并不总是完全知道它在哪里。 API 为您提供了几种解决此问题的方法:如果您需要高精度,您可以使用 enableHighAccuracy 标志向设备提示您想要准确的结果,即使以功率/时间为代价,并设置一个长 @987654324 @ 参数以允许设备使用 GPS 来查找位置。此外,所有位置都以 95% 置信度的准确度值返回 - 如果错误太高(电话通常会在第一次请求时返回高错误),您可以再次请求位置,指定您不想要缓存位置。

    【讨论】:

    • 可以在php中应用w3c geolocation api吗?还是仅在javascript中工作?我参考了参考,但一无所知。谢谢。
    • @benmsia W3C API 是一种 JavaScript API,被越来越多的浏览器支持。如果需要,您可以通过使用 AJAX 将 JavaScript 的结果传输回您的服务器端 PHP 脚本来访问此信息——或者更好的是,让用户通过您自动填写的表单提交信息JavaScript。我知道规范本身可能很难阅读:我在npdoty.name/location#developer 有一些示例代码
    【解决方案2】:

    这取决于设备,但一些移动应用程序框架已经为您完成了所有工作,并且有扩展来执行此操作,请查看适用于 iPhone 的 jqTouch:

    http://jqtouch.com/

    更具体地说:

    http://code.google.com/p/jqtouch/wiki/Extensions

    【讨论】:

      【解决方案3】:

      GPS 坐标可通过 javascript 获得 - 在页面加载时放置类似这样的内容:

      function locationHandler(location)
      {
          var lat = location.coords.latitude;
          var lng = location.coords.longitude;
      
          if(lat && lng)
          {
              // something clever goes in here
          }
      }
      
      if(typeof navigator.geolocation.getCurrentPosition == 'function')
      {
          navigator.geolocation.getCurrentPosition(locationHandler);
      }
      

      评论是您想要做一些聪明的事情的地方。您可以填充表单值,或对后端脚本进行 ajax 调用。

      将其与 Google 的一些反向地理编码相关联,您就赢了!!

      【讨论】:

        【解决方案4】:

        根据移动设备,您可能可以访问 GPS。但是,在广泛的移动设备中,您可能无法仅从设备的浏览器中可靠地获取它。考虑到蜂窝网络的架构,读取 IP 将是徒劳的。

        可以做到,但您需要建立降级级别。

        【讨论】:

        • 可能无法通过设备浏览器透明地获取它,但是询问坐标呢?
        • 我认为普通用户不会知道这一点。如果您能够将其提供给他们,那么您就有 GPS 数据。这真的取决于您的应用程序的目的。问问自己 - 有这个位置是强制性的吗?向用户询问是否不好?有精度要求吗?
        • 否决 18 个月大的答案。优雅。技术变化。显然,这些答案中的任何一个现在都已经过时了。这适用于 SO 上的任何内容。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-30
        • 1970-01-01
        • 1970-01-01
        • 2016-12-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多