C# 不使用GPS获取纬度和经度(Windows Mobile)

C# 不使用GPS获取纬度和经度(Windows Mobile),c#,windows-mobile,geolocation,gps,C#,Windows Mobile,Geolocation,Gps,我想知道是否有一种方法可以不用GPS获得我所在位置的经纬度 我正在为Windows Mobile 5.0及以上版本、C#和.NET Compact Framework开发一个Windows窗体应用程序。我使用GPS和Bing地图在地图上显示用户位置,但有时无法使用GPS确定用户位置。我看到谷歌地图(例如)可以确定用户可以访问的区域 我怎样才能在我的申请上做到这一点 谢谢大家! 是的,我甚至想知道GPS什么时候不工作(比如我在办公室或购物中心),但谷歌地图给出了几乎准确的位置。我怀疑它使用aGPS

我想知道是否有一种方法可以不用GPS获得我所在位置的经纬度

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

我怎样才能在我的申请上做到这一点


谢谢大家!

是的,我甚至想知道GPS什么时候不工作(比如我在办公室或购物中心),但谷歌地图给出了几乎准确的位置。我怀疑它使用aGPS(辅助GPS)服务器提供的信息来定位GPS。大多数手机上的GPS系统也使用这项技术。

如果你有GSM手机,你可以使用手机进行一些黑客攻击。这样的一个打开。

似乎您可以订阅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;
}
有关更多详细信息,以及如何使用手机发射塔获取位置的详细信息,请参阅本文:


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

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

a) 访问您所在地区的所有手机天线杆的位置

b) 询问桅杆,查看它们要在数据库中查找哪些桅杆


我相信这就是(正如Villageidiot所提到的)工作原理——但这是在一部可以访问这些信息的手机上进行的。

手机ID可以用来提供一个非常粗略的地理区域;有一种方法可以获取这些信息,许多公司都在出售这些信息,如果你足够努力地挖掘,你可能会找到谷歌地图使用的未发布的API


如另一篇文章中所链接的,演示了如何获取单元格ID并将其发送到谷歌未发布的API进行解析。

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


进一步阅读:

如果您与手机无线电收发机通话,则此信息是免费的……假设它监视多个手机,并找到最佳/最近的一个,如GSM手机。android上的一些有限支持,否则所有其他平台上的第三方都无法获得。我听到一些关于在我的WinForm应用程序中使用Google Gears的信息,但我不知道怎么做!有一件事:我认为使用GoogleGears而不是这个更好,因为Google未发布的API可能会改变,不是吗?是的,我现在正在这样做。但是,当我启动应用程序和GPS开始运行时,GPS和其他没有GPS信号的情况下不会给出任何位置。然后我需要另一种方法来获取用户的位置。