2012-12-23 52 views
0

我的代码不工作,它显示了整个世界地图。我只想获得当前位置并在其上放置一个图钉。我已经通过谷歌,并没有任何例子的作品。如何使用Bing地图获取我的当前位置?

这是我的代码。

GeoCoordinateWatcher watcher; 

    // Constructor 
    public MainPage() 
    { 
     InitializeComponent(); 
    } 


    private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) 
    { 
     if (watcher == null) 
     { 
      Console.WriteLine(watcher); 
      watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default); 
      watcher.MovementThreshold = 20; 
      watcher.StatusChanged += new EventHandler<GeoPositionStatusChangedEventArgs>(watcher_StatusChanged); 
      watcher.PositionChanged += new EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>>(watcher_PositionChanged); 

     } 
     watcher.Start(); 
    } 

    private void watcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e) 
    { 
     Pushpin pin = new Pushpin(); 
     pin.Template = this.Resources["currentPushPin"] as ControlTemplate; 
     pin.Location = watcher.Position.Location; 
     mapControl.Items.Add(pin); 
     myMap.SetView(watcher.Position.Location, 15.0); 
     watcher.Stop(); 
    } 

    void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e) 
    { 
     if (e.Position.Location.IsUnknown) 
     { 
      MessageBox.Show("Please wait while your prosition is determined...."); 
      return; 
     } 
     Pushpin pin = new Pushpin(); 
     myMap.Center = new GeoCoordinate(e.Position.Location.Latitude, e.Position.Location.Longitude); 
     pin.Template = this.Resources["currentPushPin"] as ControlTemplate; 
     pin.Location = new GeoCoordinate(e.Position.Location.Latitude, e.Position.Location.Longitude); 
     myMap.SetView(watcher.Position.Location, 18.0); 
    } 
+0

还要确保watcher.Position.Location不为空。 – PmanAce

回答

0

您在PhoneApplicationPage_Loaded中启动GeoCordinateWatcher,但此方法永远不会被调用。 Add

Loaded+=PhoneApplicationPage_Loaded 

位于构造函数的末尾。

相关问题