Получение GPS координат Windows Phone 7
-
10-10-2019 - |
Вопрос
Я сегодня давно искал, чтобы собрать координаты GPS с устройства Windows Phone 7 - однако, поскольку у меня нет реального тестового устройства, я пытался установить некоторые фиктивные данные, которые я хочу вернуть вместо реальных данных GPS. .. Это, однако, не работает слишком хорошо: этот код отчасти является примером, который я нашел здесь. Однако я попытался поместить его в класс, к которому я могу получить доступ
public class GetGPS : GeoCoordinateWatcher
{
GeoCoordinateWatcher watcher;
public GetGPS()
{
watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default);
watcher.MovementThreshold = 20;
watcher.PositionChanged += this.watcher_PositionChanged;
watcher.StatusChanged += this.watcher_StatusChanged;
watcher.Start();
}
private void watcher_StatusChanged(object sender, GeoPositionStatusChangedEventArgs e)
{
switch (e.Status)
{
case GeoPositionStatus.Ready:
//plingpling
break;
case GeoPositionStatus.Disabled:
// location is unsupported on this device
break;
case GeoPositionStatus.NoData:
watcher.Position.Location.Latitude = 54.086369f;
watcher.Position.Location.Longitude = 12.124754f;
break;
}
}
private void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
var epl = e.Position.Location;
// Access the position information thusly:
epl.Latitude.ToString("0.000");
epl.Longitude.ToString("0.000");
epl.Altitude.ToString();
epl.HorizontalAccuracy.ToString();
epl.VerticalAccuracy.ToString();
epl.Course.ToString();
epl.Speed.ToString();
e.Position.Timestamp.LocalDateTime.ToString();
}
}
Это мой другой класс, в котором я пытаюсь получить доступ к данным - однако я всегда получаю NAN как LAT1RAD и LONG1RAD ... не могли бы вы мне помочь?
Я хочу, чтобы этот пример был функциональным на эмуляторе (с фиксированной координатой GPS) и на устройстве телефона 7 - где он фактически захватывает значение.
GetGPS location1= new GetGPS();
//GeoCoordinate myPosition = location1.getPosition();
//Radianten berechnen
double lat1Rad = GradZuRad(location1.Position.Location.Latitude);
double long1Rad = GradZuRad(location1.Position.Location.Longitude);
Я в основном просто хочу запрограммировать класс, который возвращает мне текущую позицию GPS.
Решение
Откуда ваш пример кода?
Вы пробовали использовать Образец на MSDN?
В качестве альтернативы, есть отличный симулятор, доступный от http://phone7.wordpress.com/2010/08/02/no-device-no-gps-no-matter-with-code/
Другие советы
Почему вы получаете FRMO GeoCoordinateWatcher
? Это ошибка, ИМО. Это неясно, когда вы используете членов своего собственного класса и когда вы используете делегированный экземпляр. На данный момент вы устанавливаете координаты на делегированном наблюдателе, но затем спрашивающий для координат из GetGPS
экземпляр напрямую.
Я предлагаю вам реализовать IGeoPositionWatcher<GeoCoordinate>
с вашим собственным «фиксированным» наблюдателем позиции - а затем решите во время выполнения, использовать ли это или реально GeoCoordinateWatcher
. Анкет Очевидно, это означает, что ваш клиент -код должен зависеть только от IGeoPositionWatcher<GeoCoordinate>
вместо GeoCoordinateWatcher
напрямую. Это также должно помочь в целях модульного тестирования.
Конечно, ответ Джона очень обстановлен - я думаю, что вы не сделали разумную абстракцию интерфейса, но даже когда вы получаете это, для моделируемых данных вы посмотрели на GPS -симулятор Кевина Вольфа для телефона Windpws?