在Windows Mobile上获取纬度和经度而不使用GPS

4
我想知道是否有一种方法可以在不使用 GPS 的情况下获取我的位置的纬度和经度。
我正在开发一个 Windows Mobile 5.0 及以上版本的 Windows Form 应用程序,使用 C# 和 .NET Compact Framework。 我使用 GPS 和必应地图来显示用户在地图上的位置,但有时候无法确定用户的位置。 我发现像 Google 地图这样的应用程序可以确定用户所在的区域。
我该如何在我的应用程序中实现这个功能?
谢谢!
6个回答

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

请参考此文章获取更多细节并了解如何使用手机塔获取您的位置:

在 Windows Mobile 设备上查找您的位置


是的,我现在正在做这个。但是,当我启动应用程序并且GPS开始运行时,GPS没有提供位置信息,还有其他没有GPS信号的情况。那么我需要另一种方法来获取用户的位置。 - VansFannel

5

Cell ID可以用来确定一个非常粗略的地理区域;有一个开源项目致力于获取这些信息,还有一些公司出售这些信息,如果你足够努力,你可能会找到Google地图使用的未发布API。

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


我听说可以在我的WinForm应用程序中使用Google Gears,但我不知道该怎么做! - VansFannel
关于http://www.codeproject.com/KB/mobile/DeepCast.aspx的一件事:我认为最好使用Google Gears而不是这个,因为Google未公开的API可能会改变,不是吗? - VansFannel

2

0

是的,我也很奇怪,当GPS不工作时(比如我在办公室或商场内),但Google地图几乎给出了精确的位置。我怀疑它使用了aGPS(辅助GPS)服务器提供的信息来支持GPS。大多数手机上的GPS系统也使用了这项技术。


0

一个机制可以是使用手机基站进行三角定位。如果您能够确定自己与两个或更多已知位置的距离,则可以计算出您的位置。

然而,(这是一个很大的问题),我不知道您(作为开发人员)如何:

a)获取您所在地区所有移动电话基站的位置

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

我相信这就是aGPS的工作原理 - 但那是在可以访问此信息的手机上。


如果您与手机的无线电收发器交流,这些信息是免费的……假设它监视多个基站并找到最佳/最接近的一个,例如GSM手机。 - Matthew Whited
除了 Android 平台有一些有限的支持外,所有其他平台都不向第三方提供支持。 - Will

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接