2013-01-08 46 views
0

在Windows Phone 8中,我想打开本地地图应用程序到用户当前位置。我最接近的是MapsTask。描述使我相信这是完美的:Windows Phone 8打开地图到当前位置

允许应用程序在启动与中心财产或在用户的当前位置 指定的 位置为中心的地图应用程序。如果设置了SearchTerm,则匹配搜索项的位置是在地图上标记的 。

如果您不提供中心,它将使用用户当前位置。完善!但是如果你不提供一个中心,并且不提供SearchTerm,它会抛出一个exepction(按设计)。

所以我必须提供一个SearchTerm。但是,如果我将某些不是本地的东西放入用户,我会看到一个弹出窗口,显示“没有结果:我们找不到任何匹配的搜索结果,请尝试使用其他拼写或搜索字词”。

现在我可以自己获取用户位置,并使用该位置启动地图,但考虑到地图应用程序已为您执行此操作,感觉错误。有任何想法吗?

回答

1

将自己的地理定位并将其发送给地图任务很好。使用GeoLocator一次性地理位置采集来做到这一点。

private async void MainPage_Loaded(object sender, RoutedEventArgs e) 
{ 
    var geoLocator = new Geolocator(); 
    var geoloc = await geoLocator.GetGeopositionAsync(); 
    new MapsTask() 
    { 
     Center = new GeoCoordinate(geoloc.Coordinate.Latitude, geoloc.Coordinate.Longitude), 
     ZoomLevel = 10 
    }.Show(); 
} 
0

我写了一个教程关于获取当前位置为您获取一个您可以映射出的位置。

private async void GetCurrentLocation() 
{ 
    Geolocator locationFinder = new Geolocator 
 { 
  DesiredAccuracyInMeters = 50, 
  DesiredAccuracy = PositionAccuracy.Default 
    }; 
    try 
    { 
     Geoposition currentLocation = await locationFinder.GetGeopositionAsync(
      maximumAge: TimeSpan.FromSeconds(120), 
      timeout: TimeSpan.FromSeconds(10)); 
      String longitude = currentLocation.Coordinate.Longitude.ToString("0.00"); 
      String latitude = currentLocation.Coordinate.Latitude.ToString("0.00"); 
      MyTextBlock.Text = "Long: " + longitude + "Lat: " + latitude; 
 } 
 catch (UnauthorizedAccessException) 
 { 
  MessageBox.Show("And Exception Occured"); 
 } 
} 

请参见下面的链接全部内容随着演示文件 http://mobile.tutsplus.com/tutorials/windows/windows-phone-8-sdk-geolocation-services/

+0

注意[链接只有答案(http://meta.stackoverflow.com/tags/link-only-answers/info )是不鼓励的,所以SO答案应该是寻求解决方案的终点(而另一个参考文献的中途停留时间往往会过时)。请考虑在此添加独立的摘要,并将链接保留为参考。 – kleopatra

相关问题