我正在使用Geoposition和Postition更改事件来抓取设备位置的坐标。
private async void StartGpsMonitoring()
{
if (locator == null)
{
locator = new Geolocator();
}
if (locator.LocationStatus == PositionStatus.Disabled)
{
//throw new Exception();
MessageDialog noGpsDialog = new MessageDialog("Location services are disabled, please enable location services");
noGpsDialog.Commands.Add(new UICommand("Location Settings", new UICommandInvokedHandler(this.CommandInvokedHandler), 0));
noGpsDialog.Commands.Add(new UICommand("Cancel", new UICommandInvokedHandler(this.CommandInvokedHandler), 1));
await noGpsDialog.ShowAsync();
}
if (locator != null)
{
//locator.MovementThreshold = 3;
locator.ReportInterval = 1;
locator.DesiredAccuracy = PositionAccuracy.High;
locator.PositionChanged +=
new TypedEventHandler<Geolocator,
PositionChangedEventArgs>(locator_PositionChanged);
}
}
private async void locator_PositionChanged(Geolocator sender, PositionChangedEventArgs e)
{
string speed = string.Empty;
await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
Geoposition geoPosition = e.Position;
if (e.Position.Coordinate.Speed != null)
{
speed = e.Position.Coordinate.Speed.Value.ToString(); // always 5.8
}
geolocation = geoPosition.Coordinate.Point.Position.Latitude.ToString() + " " +
geoPosition.Coordinate.Point.Position.Longitude.ToString() + "Speed = " +
speed;
var textBlockStatus =
ControlHelper.FindChildControl<TextBlock>(JourneyTrackerSection, "TextBlockStatus") as TextBlock;
textBlockStatus.Text = geolocation;
});
}
我也试图获得速度值。但是当使用模拟器时,我总是得到5.8,无论我是否在模拟器上设置了速度限制/步行/自行车,并且仍然从静态位置获得5.8。
任何人都可以解释为什么?它只是模拟器吗?如果我使用真正的设备,我会得到准确的结果吗? 很难开发一个位置速度应用程序,每当我想调试/运行它时我都要跑出来。
任何帮助都非常感激。
答案 0 :(得分:0)
我想我会发布一些详细信息,告诉我有什么设法可以找到,以防将来有人遇到这个问题。看起来这是因为它在模拟器上运行。管理时遇到有关使用地理定位代码的一些有限细节,以及有关硬件特定的一些细节。在我设法拿到Windows手机进行测试之后,模拟器无法做到速度。在实际设备上完美运行。
这对微软来说非常烦人。意味着每次我需要测试我的应用程序时我都必须开车去。渲染GPS模拟器完全没用!