我无法让 GPS 工作
Posted
技术标签:
【中文标题】我无法让 GPS 工作【英文标题】:I can't get the GPS to work 【发布时间】:2011-07-15 07:36:35 【问题描述】:我正在使用此页面中的类来获取我的 Windows Phone 上的当前位置坐标:http://www.codeproject.com/Articles/134982/A-helper-class-to-get-the-current-location-on-a-Wi
我不知道为什么我总是得到“未知”位置。我尝试了更简单的方法来获取位置,但没有成功。
我的 GPS 工作正常,因为我喜欢 Maps appand walk,而且我可以看到该地点正确移动。
我检查了 GeoCoordinateWatcher.Permisson 属性,其值为“Granted”。我已经在 WMAppManifest.xml 中有这一行 <Capability Name="ID_CAP_LOCATION"/>
。
我不明白我上面给出的地址中的代码是这几行:
var immediate = new ImmediateLocation(x => location = x);
immediate.GetLocation();
GeoCoordinate location;
为什么使用后要声明位置?我之前声明过。有什么我应该知道的吗?
[编辑]
现在我已经理解了 lambda 表达式我得到了两个例外:
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
这是堆栈跟踪
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
【问题讨论】:
你怎么知道它不起作用?我这样说是因为当位置发生变化时(在你给 ctor 的动作中)你通常应该有一些 UI 触发器 我会去看看行动是如何运作的。如果那时我仍然不知道如何解决这个问题,我会在这里发布。如果有人知道任何可以帮助我解决这个问题的链接,请分享:) 我已经用我的实际问题编辑了帖子 给我错误的行是这一行:_watcher.StatusChanged -= new EventHandler您向 ImmediateLocation 构造函数提供一个 Action 参数。去研究一些关于 lambda 表达式的东西 - 然后你会发现这个位置在它声明之前没有被使用。
就“未知”位置而言,没有人可以在不了解 ImmediateLocation 类的情况下回答。以发布的here 为例:在您调用 GetLocation 后,该位置会异步填充,即有时在将来。如果您立即测试该值,那么您必须失败。在我看来,这个类只是设计错误。
【讨论】:
我已经发布了该课程的链接。您提供的链接与我发布的页面完全相同。很抱歉因为我缺乏知识而打扰你,我才刚刚开始。但是,如果我在该行之后声明该位置,Visual Studio 就会抱怨。但是谢谢你告诉我那个表情是什么,因为我以前没见过。我试图搜索它是如何工作的,但没有任何线索我找不到它以上是关于我无法让 GPS 工作的主要内容,如果未能解决你的问题,请参考以下文章
如果 gps 暂时不可用,Cordova 地理定位插件无法正常工作
当设备通过汽车中的 USB 端口连接到 FM 发射器时,GPS 无法工作或更新非常慢