在Windows Phone 8中,我想将本机地图应用打开到用户当前位置。
我最接近的是MapsTask。描述让我相信它是完美的:
允许应用程序启动以中心为中心的地图应用程序 使用Center属性或用户当前指定的位置 位置即可。如果设置了SearchTerm,则匹配搜索项的位置为 在地图上标记。
如果您不提供中心,则会使用用户的当前位置。完善!但是如果你没有提供一个中心,并且没有提供SearchTerm,它就会引发一次扫描(按照设计)。
所以我必须提供一个SearchTerm。但是如果我把一些不是本地的东西放在用户身上,我会得到一个弹出窗口,上面写着“没有结果:我们找不到任何匹配的搜索。请尝试不同的拼写或搜索词”。
现在我可以自己获取用户位置并使用该位置启动地图,但考虑到地图应用程序已为您执行此操作,这感觉不对。有什么想法吗?
答案 0 :(得分:1)
自己获取Geolocation并将其发送到地图任务是很好的。使用GeoLocation一次性地理定位获取来做到这一点。
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();
}
答案 1 :(得分: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/