2015-08-21 3 views
3

Моего уровня умения: НачинающийПолучить текущее местоположение с помощью C#

Код: C# (МОФ)

Оборудование: Dell Venue 11 Pro таблетки (Windows 8.1)

Я хотел бы получить ток расположение моего компьютера через сотовую триангуляцию в координатах (широта/долгота). Используя следующую ссылку в качестве ссылки (Getting GPS coordinates on Windows phone 7), я пытаюсь вытащить координаты lat/lon из Windows Location Services. Я проверил, что службы определения местоположения Windows получают координаты с помощью триангуляции ячеек ячейки, но каждый раз, когда я запускаю следующий код, координаты обозначаются как «NaN». Любая помощь здесь будет принята с благодарностью.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Navigation; 
using System.Windows.Shapes; 
using System.Device.Location; 

namespace GPS 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 

     private GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default); 


     public MainWindow() 
     { 
      InitializeComponent(); 

      watcher.Start(); 

      LocationMessage(); 
     } 



     private void LocationMessage() 
     { 

      var whereat = watcher.Position.Location; 

      var Lat = whereat.Latitude.ToString("0.000000"); 
      var Lon = whereat.Longitude.ToString("0.000000"); 


      //optional parameters for future use 
      whereat.Altitude.ToString(); 
      whereat.HorizontalAccuracy.ToString(); 
      whereat.VerticalAccuracy.ToString(); 
      whereat.Course.ToString(); 
      whereat.Speed.ToString(); 

      MessageBox.Show(string.Format("Lat: {0}\nLon: {1}",Lat,Lon)); 
     } 


    } 


} 
+4

Попробуйте подписаться на событие 'OnPositionChanged', а затем попытайтесь получить позицию. Возможно, недостаточно времени для фактического получения местоположения. – TyCobb

ответ

1

Если вам нужно только ваше текущее положение один раз, а не непрерывное обновление, как вы двигаетесь, вы можете заменить Start с TryStart:

if (watcher.TryStart(false, TimeSpan.FromSeconds(3))) 
{ 
    LocationMessage(); 
} 
else 
{ 
    // Position not found after 3 seconds... 
} 

Имейте в виде, что этот метод возвращает синхронно, так что лучше не запускаться в потоке пользовательского интерфейса.

Смежные вопросы