Получение широты и долготы без GPS (Windows Mobile)

Мне интересно, есть ли способ получить широту и долготу моего местоположения без использования GPS.

Я разрабатываю приложение Windows Form для Windows Mobile 5.0 и выше, C # и .NET Compact Framework. Я использую GPS и Bing Maps, чтобы показать положение пользователя на карте, но иногда невозможно определить положение пользователя с помощью GPS. Я видел, что карты Google (например) могут определять область, в которой может находиться пользователь.

Как я могу сделать это в своем приложении?

Спасибо!


person VansFannel    schedule 11.11.2009    source источник


Ответы (6)


Cell ID можно использовать для обозначения очень приблизительной географической области; есть усилия с открытым исходным кодом, чтобы получить эту информацию, и различные компании продают информацию, и если вы копаете достаточно сильно вы можете найти неопубликованные API, которые использует Google Maps.

http://www.codeproject.com/KB/mobile/DeepCast.aspx , как указано в другом сообщении, демонстрирует, как получить идентификатор ячейки и отправить его в неопубликованный API Google для разрешения.

person Will    schedule 11.11.2009
comment
Я слышал кое-что об использовании Google Gears с моим приложением WinForm, но не знаю, как это сделать! - person VansFannel; 11.11.2009
comment
Одна вещь о codeproject.com/KB/mobile/DeepCast.aspx: я думаю, лучше использовать Google Gears вместо этого, потому что неопубликованный API Google может измениться, не так ли? - person VansFannel; 11.11.2009

Похоже, вы можете подписаться на события изменения местоположения 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

person John Sibly    schedule 11.11.2009
comment
Да, я сейчас этим занимаюсь. Но когда я запускаю приложение и GPS начинает работать, GPS не определяет местоположение и другие ситуации без сигнала GPS. Тогда мне нужен другой способ узнать местоположение пользователя. - person VansFannel; 11.11.2009

Если у вас есть телефон GSM, вы можете выполнить несколько взломов с помощью радиоинтерфейса. Слой. Один из таких на devex.com.

person Matthew Whited    schedule 11.11.2009

Да, даже мне интересно, когда GPS не работает (например, когда я нахожусь в офисе или торговом центре), но Google Maps дает почти точное местоположение. Я подозреваю, что он использует информацию, предоставленную серверами aGPS (Assisted GPS) для GPS. Системы GPS на большинстве мобильных телефонов также используют эту технологию.

person TheVillageIdiot    schedule 11.11.2009

Одним из механизмов может быть триангуляция с использованием мачт мобильных телефонов. Если вы можете определить, как далеко вы находитесь от двух или более известных мест, вы можете рассчитать свое местоположение.

Однако (а это, тем не менее, большая проблема), я не знаю, как вы (как разработчик) можете:

а) получить доступ к местоположению всех мачт мобильных телефонов в вашем регионе

б) опросите мачты, чтобы узнать, какие из них нужно искать в вашей базе данных.

Я считаю, что так работает aGPS (как упомянуто TheVillageIdiot), но это на телефоне, который будет иметь доступ к этой информации.

person ChrisF    schedule 11.11.2009
comment
Эта информация бесплатна, если вы разговариваете с радиоприемником телефона… при условии, что он отслеживает несколько сот и находит лучшую / ближайшую, например, телефоны GSM. - person Matthew Whited; 11.11.2009
comment
Некоторая ограниченная поддержка на Android, в противном случае недоступна для сторонних разработчиков на всех других платформах. - person Will; 11.11.2009

Карты Google используют службу под названием «геолокация» для определения вашего местоположения. это делается путем анализа ближайших точек доступа WLAN. если это не работает или точек доступа WLAN нет, используется ваш ip.

дополнительное чтение: http://apb.directionsmag.com/archives/6094-How-Google-Maps-uses-the-W3C-Geolocation-API-and-Google-Location-Services.html

person Markus    schedule 11.11.2009