Я не могу заставить работать GPS - PullRequest
0 голосов
/ 15 июля 2011

Я использую класс на этой странице, чтобы получить координаты текущего местоположения на моем Windows Phone: http://www.codeproject.com/Articles/134982/A-helper-class-to-get-the-current-location-on-a-Wi

Я не знаю, почему я всегда получаю "Неизвестное" местоположение.Я пробовал более простые способы получить местоположение, но не удалось.Мой GPS работает, потому что я теряю приложение Карты и гуляю, и я вижу, что место движется правильно.Я проверил свойство GeoCoordinateWatcher.Permisson и его значение «Предоставлено».У меня уже есть эта строка <Capability Name="ID_CAP_LOCATION"/> в WMAppManifest.xml.

Что я не понимаю в коде в адресе, который я дал выше, это строки:

var immediate = new ImmediateLocation(x => location = x);
immediate.GetLocation();

GeoCoordinate location;

Почемуэто объявление местоположения после его использования?Я заявляю об этом раньше.Есть ли что-то, что я должен знать?

[EDIT]

Теперь я понял лямбда-выражение, у меня есть два исключения:

A first chance exception of type 'System.NullReferenceException' occurred in System.Device.dll
A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll

Это StackTrace

en System.Device.Location.GeoCoordinateWatcher.<>c__DisplayClass6.<OnPositionStatusChanged>b__4(Object _)
en System.Reflection.RuntimeMethodInfo.InternalInvoke(RuntimeMethodInfo rtmi, Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark& stackMark)
en System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, StackCrawlMark& stackMark)
en System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
en System.Delegate.DynamicInvokeOne(Object[] args)
en System.MulticastDelegate.DynamicInvokeImpl(Object[] args)
en System.Delegate.DynamicInvoke(Object[] args)
en System.Windows.Threading.DispatcherOperation.Invoke()
en System.Windows.Threading.Dispatcher.Dispatch(DispatcherPriority priority)
en System.Windows.Threading.Dispatcher.OnInvoke(Object context)
en System.Windows.Hosting.CallbackCookie.Invoke(Object[] args)
en System.Windows.Hosting.DelegateWrapper.InternalInvoke(Object[] args)
en System.Windows.RuntimeHost.ManagedHost.InvokeDelegate(IntPtr pHandle, Int32 nParamCount, ScriptParam[] pParams, ScriptParam& pResult)

Я нашел это, я не уверен, что это связано с моим делом, но если это поможет кому-то мне помочь ...

http://onebusawaywp7.codeplex.com/workitem/14695

1 Ответ

0 голосов
/ 15 июля 2011

Вы передаете параметр Action конструктору ImmediateLocation.Пойдите и изучите что-нибудь о лямбда-выражениях - тогда вы увидите, что местоположение не используется до его объявления.

Что касается местоположения "Неизвестно", никто не может ответить, не зная ничего о ImmediateLocationучебный класс.Например, возьмите тот, который опубликован здесь : после вызова GetLocation местоположение заполняется асинхронно, то есть иногда в будущем.Если вы проверите значение немедленно, то вы ДОЛЖНЫ потерпеть неудачу.По моему мнению, этот класс просто неправильно спроектирован.

...