【问题标题】:Getting latitude and longitude without a GPS (Windows Mobile)在没有 GPS 的情况下获取纬度和经度(Windows Mobile)
【发布时间】:2010-12-15 10:37:45
【问题描述】:

我想知道是否有一种方法可以在不使用 GPS 的情况下获取我所在位置的纬度和经度。

我为 Windows Mobile 5.0 及更高版本、C# 和 .NET Compact Framework 开发了一个 Windows 窗体应用程序。我使用 GPS 和 Bing 地图在地图上显示用户位置,但有时无法使用 GPS 确定用户位置。我看到谷歌地图(例如)可以确定用户可能的区域。

我怎样才能在我的应用程序上做到这一点?

谢谢!

【问题讨论】:

    标签: c# windows-mobile geolocation gps


    【解决方案1】:

    如果您有 GSM 手机,则可以使用 Radio Interface Layer 执行一些黑客操作。在devex.com 上就有这样一个。

    【讨论】:

      【解决方案2】:

      谷歌地图使用称为“地理定位”的服务来确定您的位置。这是通过分析最近的 WLAN 接入点来完成的。如果这不起作用或没有 WLAN 接入点,则使用您的 ip。

      进一步阅读:http://apb.directionsmag.com/archives/6094-How-Google-Maps-uses-the-W3C-Geolocation-API-and-Google-Location-Services.html

      【讨论】:

        【解决方案3】:

        Cell ID 可以用来给出一个非常粗略的地理区域;有一个open source effort 可以获取此信息,并且有多家公司出售该信息,如果您足够努力地挖掘,您可能会发现 Google 地图使用的未发布的 API。

        http://www.codeproject.com/KB/mobile/DeepCast.aspx(在另一篇文章中链接)演示了如何获取单元 ID 并将其发送到 Google 未发布的 API 以进行解析。

        【讨论】:

        • 我听说了一些关于在我的 WinForm 应用程序中使用 Google Gears,但我不知道如何!
        • 关于codeproject.com/KB/mobile/DeepCast.aspx 的一件事:我认为最好使用 Google Gears 而不是这个,因为 Google 未发布的 API 可能会改变,不是吗?
        【解决方案4】:

        一种机制可能是使用手机桅杆进行三角测量。如果您可以计算出您与两个或更多已知位置的距离,那么您就可以计算出您的位置。

        但是,(而且很大),我不知道您(作为开发人员)如何:

        a) 访问您所在地区所有手机信号塔的位置

        b) 询问桅杆以查看它们要在您的数据库中查找哪些桅杆。

        我相信aGPS(如 TheVillageIdiot 所述)的工作原理是这样的 - 但这是在可以访问此信息的手机上。

        【讨论】:

        • 如果您与手机无线电收发器通话,则此信息是免费的……假设它监视多个单元并找到最佳/最近的一个,例如 GSM 手机。
        • 在 android 上的一些有限支持,否则不适用于所有其他平台上的 3rd 方
        【解决方案5】:

        好像您可以订阅 GPS 位置更改事件:

        private Gps _gps = new Gps();
        private GpsPosition _currentPosition;
        
        public void Start()
        {
            _gps.LocationChanged += new 
              Microsoft.Location.LocationChangedEventHandler(_gps_LocationChanged);
        
            if (!_gps.Opened)
            {
                _gps.Open();
            }
        }
        
        private void _gps_LocationChanged(object sender, 
                Microsoft.Location.LocationChangedEventArgs args)
        {
            _currentPosition = args.Position;
        }
        

        有关更多详细信息以及如何使用手机信号塔获取您的位置的详细信息,请参阅本文:

        Finding your location on a Windows Mobile device

        【讨论】:

        • 是的,我现在正在这样做。但是,当我启动应用程序并且 GPS 开始运行时,GPS 没有给出位置以及其他没有 GPS 信号的情况。那么我需要另一种方法来获取用户的位置。
        【解决方案6】:

        是的,即使我想知道 GPS 何时不工作(例如当我在办公室或购物中心时),但 Google 地图可以提供几乎准确的位置。我怀疑它使用 aGPS(辅助 GPS)服务器向 GPS 提供的信息。大多数手机上的 GPS 系统也在使用这项技术。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多