Cordova 地理定位插件在 Android 上返回空位置对象

2023-11-23

我在使用 Geolocation Cordova 插件 (org.apache.cordova.geolocation) 时遇到了一些问题。它在 iOS 上运行良好,但在 Android 上则完全不行。

据我了解,该插件曾经包含本机 Android 代码,但在某些时候被删除,因为它有太多错误/速度太慢,而且本机 Web HTML5 实现更加稳定和快速。

如果我使用仍然具有本机代码的最新插件版本(0.3.2),它确实可以工作(但速度很慢,而且实际上并不总是如此)。但是当它返回时,位置对象总是被填充。

如果我使用最新的插件版本 (1.0.1),getCurrentPosition() 会立即返回一个空对象 ({})。它不会抛出错误。

如果我完全删除插件,然后手动将权限添加到Android项目中:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

同样的事情也会发生。我只是无法让它发挥作用,但这没有意义。 Android 控制台中不显示任何错误。有什么想法吗?


好吧,经过很长一段时间的调试,我发现了问题所在。显然,getCurrentPosition() 函数在 Android 中返回一个“特殊”对象,当使用 JSON.stringify() 时,该对象的计算结果为 {}。如果我将原始返回对象输出到控制台,结果发现它根本不是空的。

所以,下面荒谬的调整修复了我的代码:

navigator.geolocation.getCurrentPosition(function (position) {
    var positionObject = {};

    if ('coords' in position) {
        positionObject.coords = {};

        if ('latitude' in position.coords) {
            positionObject.coords.latitude = position.coords.latitude;
        }
        if ('longitude' in position.coords) {
            positionObject.coords.longitude = position.coords.longitude;
        }
        if ('accuracy' in position.coords) {
            positionObject.coords.accuracy = position.coords.accuracy;
        }
        if ('altitude' in position.coords) {
            positionObject.coords.altitude = position.coords.altitude;
        }
        if ('altitudeAccuracy' in position.coords) {
            positionObject.coords.altitudeAccuracy = position.coords.altitudeAccuracy;
        }
        if ('heading' in position.coords) {
            positionObject.coords.heading = position.coords.heading;
        }
        if ('speed' in position.coords) {
            positionObject.coords.speed = position.coords.speed;
        }
    }

    if ('timestamp' in position) {
        positionObject.timestamp = position.timestamp;
    }

    // Use the positionObject instead of the position 'object'
    alert(JSON.stringify(positionObject));            
}

iOS 无需进行上述调整即可正常工作,但由于我的应用程序是 Phonegap 应用程序,因此我始终应用上述调整。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cordova 地理定位插件在 Android 上返回空位置对象 的相关文章

  • Android,语言文件不起作用

    我现在正在创建一个 Android 应用程序 并尝试为我的母语添加语言文件 但在某种程度上 这对我不起作用 我尝试在两部不同的手机中加载该应用程序 但结果相同 之前创建过语言文件 效果良好 但这次不行 手机设置为瑞典语 语言文件适用于我创建
  • 从Asynctask返回结果

    如果我的 Android 应用程序中有这个后台工作文件 并且它从我的数据库获取数据 我如何将字符串 结果 传递给另一个类 后台工作人员连接到我的服务器 然后使用 php 连接到数据库 public class BackgroundWorke
  • Android Things 文件系统

    我正在 Android 上构建这个应用程序 我希望能够让它访问 U 盘上的媒体文件 甚至树莓派的 SD 卡上的媒体文件 我还不知道我将如何处理这些文件 但我只是想知道它是否可能 如果不是这样也没关系 我还有其他解决方案 但我想我会先从明显的
  • Twitter 集成期间获取访问令牌函数行为不当

    我只是想使用 twitter4j 从我的 Android 应用程序向 Twitter 分享文本 首先 我尝试的是我创建了一个新项目 并且这个特定的代码运行成功 然后我在我的应用程序中混合了该特定代码 登录 Twitter 成功完成 之后我发
  • 将 ArrayList 保存在捆绑包 savingInstanceState 中

    ArrayList 是在类级别定义的 这些是我保存的实例方法 Override protected void onSaveInstanceState Bundle outState super onSaveInstanceState out
  • Android 在创建时出现 SQLiteException

    首先我想说我是android新手 所以如果这个问题太愚蠢我很抱歉 我正在为带有两个表的 SQLite 数据库编写一个内容提供程序 表格上是在导航抽屉活动中显示列表 第二个表格是在 ListFragment 中显示 每次启动应用程序时 我都会
  • 如何从debug.keystore文件获取MD5?

    我使用一些命令来获取 MD5 私钥debug keystore文件 但实际上我得到的是 SHA1 私钥而不是 MD5 我不知道如何获得MD5 这是我使用的命令 keytool list alias androiddebugkey keyst
  • HTML5 服务器端事件:EventSource 与包装的 WebSocket

    HTML5 服务器发送事件 SSE API 是否只是 HTML5 WebSocket 之上的受限制的 基于事件的 API 在我看来 一个EventSource只是一个WebSocket that Cannot send data 使用tex
  • MAT(Eclipse 内存分析器)- 如何从内存转储中查看位图

    I m analyzing memory usage of my Android app with help of Eclipse Memory Analyzer http www eclipse org mat also known as
  • ImageButton 拉伸背景图像

    我正在尝试创建一个没有边框的 ImageButton 但遇到了图像按钮大小的问题 我使用 Eclipse ADT 将 ImageButton 拖到布局中并选择背景图像 图像按钮显示如下 正如您所看到的 背景图像和图像按钮周边之间有一个边框
  • 如何使用 onSearchRequested() 调用搜索对话框

    我正在尝试实现搜索对话框 但无法显示活动中的搜索 我在清单文件中定义了主要活动 此活动向用户显示了他们必须从中选择的选项列表 选项之一是 搜索 选项
  • 如何在Android中隐藏应用程序标题? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想隐藏应用程序标题栏 您可以通过编程来完成 import android app Activity import android os
  • UnsupportedOperationException:特权进程中不允许使用 WebView

    我在用android sharedUserId android uid system 在我的清单中获得一些不可避免的权利 从 HDMI 输入读取安卓盒子 http eweat manufacturer globalsources com s
  • onTouch 给出奇怪的触摸点 Android

    我正在做的事情非常简单 我以前做过 但现在它没有按我的预期运行 无论如何 让我简要解释一下我正在尝试做什么以及我得到了什么 设想 我有一个RelativeLayout其中一个ImageView已放置 现在我设置touchlistener像这
  • 协程和 Firebase:如何实现类似 Javascript 的 Promise.all()

    在 Javascript 中 您可以同时启动两个 或更多 异步任务 等待它们完成 然后执行某些操作 继续 const firstReturn secondReturn await Promise all firstPromise secon
  • 我可以在主线程上读取一个小 txt 文件,还是应该始终避免那里的 I/O?

    我正在读取一个小的 json 文件 其中有几行 它存储在用户设备的内部应用程序文件夹中 我所做的就是这样 JSONObject jsonObject new JSONObject MyUtils inputStreamToString My
  • Web SQL 数据库 + Javascript 循环

    我正在尝试解决这个问题 但我自己似乎无法解决 我正在使用 Web SQL DB 但无法让循环正常使用它 I use for var i 0 i lt numberofArticles 1 i db transaction function
  • Admob - 没有广告可显示

    你好 我尝试制作一些在 Android 手机上显示广告的示例程序 并尝试在 v2 2 的模拟器上测试它 代码中的一切似乎都很好 但调试器中的 AdListener 表示 响应消息为零或空 onFailedToReceiveAd 没有广告可显
  • 如何根据所需表单输入的值更改 CSS 样式

    我想知道如何编写 javascript 来改变所需的表单元素的样式 如果它们有价值的话就改变它们 我想要做的是当所需的文本字段为空时 在它们周围有一个彩色边框 并在它们有值时删除边框样式 我想做的是编写一个 javascript 函数来检查
  • C# 中的 mshtml.HTMLDocumentClass

    在 C 中 我设法从 InternetExplorer 对象获取整个 HTMLDocumentClass 导航到某个 URL 然而 在 Visual Studio 2008 的调试模式下 该特定 URL 的 HTMLDocumentClas

随机推荐

  • 有没有类似 GhostDoc 的 C++ 工具

    当我使用 C 进行开发时 我大量使用 GhostDoc 来加快代码注释的过程 我目前正在开发一个 C 项目 但尚未找到等效的工具 我了解 Doxygen 但据我所知 它用于在代码外创建文档 而不是在代码中创建注释 有没有好的等效工具 我更喜
  • WPF:如何循环浏览窗口中的所有控件?

    如何循环遍历 WPF 窗口中的所有控件 我在MSDN 文档所以这有帮助 Enumerate all the descendants of the visual object static public void EnumVisual Vis
  • ImageIO.read() 返回 403 错误

    我有以下代码 public BufferedImage urlToImage String imageUrl throws MalformedURLException IOException URL url new URL imageUrl
  • 拦截JAX-RS请求:向tomcat注册ContainerRequestFilter

    我正在尝试通过 ContainerRequestFilter 拦截对我的 JAX RS Web 服务的请求 我想将它与自定义注释一起使用 这样我就可以装饰 Web 服务的某些方法 这应该使我能够根据是否在安全通道上发出的信息来处理对此方法的
  • uWSGI - Django 管理员的不同 Harakiri 超时

    是否可以将 Django 管理页面的 uWSGI 的 harakiri 超时设置为不同的 我有一个网站需要上传大文件 这可能需要 20 或 30 秒以上 但我希望全局 harakiri 超时更像 15 秒 因为我将数据发送回用户的方式 uW
  • 使用意图 URI 启动我的应用程序

    我知道这个问题已经在 StackOverflow 中被问过很多次了 但我还没有找到解决方案 我的应用程序发送一封电子邮件 其中包含一个链接 单击该链接后应启动该应用程序 根据 hackbod 的说法 最好的方法是使用 Intent URI
  • 启动 jupyter-lab 并从命令行打开特定笔记本?

    我正在编写一个 bash 脚本 最后启动 jupyter lab 并 理想情况下 打开一个特定的笔记本 在 jupyter 中 这很容易做到 jupyter notebook my folder my notebook ipynb 我找不到
  • 清除wpf中的数据网格值

    我需要冲洗我的datagrid每当一个treeviewitem被点击 我的代码如下 private void treeView1 SelectedItemChanged object sender RoutedPropertyChanged
  • 全局构造函数调用不在 .init_array 部分

    我正在尝试在嵌入式目标 ARM Cortex M3 上添加全局构造函数支持 假设我有以下代码 class foobar int i public foobar i 100 void inc i foobar foo int main foo
  • 在.NET中生成PDF文件[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在使用 C NET 2 0 我想生成一个 PDF 文件 我应该在文件中写一段文字 生成PDF需要满足哪些先决条件 任何简单的编码示例都会对我有帮
  • jQuery 文件上传在 IE 8 和 9 中不起作用

    此代码适用于 FF 和 chrome 在 IE 8 或 9 中 我收到 500 错误 指出非空属性为空 这是html div class fileupload buttonbar div
  • `f()` 和 `new f()` 有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 JavaScript 中的 new 关键字是什么 从 JS 闭包创建对象 我应该使用 new 关键字吗 看这段代码 function friend name return name name var
  • 使用jQuery获取url并提取url段

    在具有类别列表的网页上 每个类别标题都按以下格式链接 http localhost admin category unpublish 2 我编写了以下js代码 试图捕获url和段 unpublish action 和 2 id 并且需要将请
  • Windows 和 Linux 上 fopen 中“r+”的使用

    我正在摆弄一些打开 读取和修改文本文件的代码 一个快速 简化 的例子是 include
  • Vue.js 通过单击按钮打开模式

    如何使用按钮在其他组件中显示模态框 例如 我有以下组件 info vue
  • sklearns OMP 中的“字典中的线性相关性”异常

    我正在使用 sklearns正交匹配追踪使用由学习者学习的字典来获得信号的稀疏编码KSVD算法 但是 在拟合期间我收到以下运行时警告 usr local lib python2 7 dist packages sklearn linear
  • MSBuild ItemGroup 包含/排除模式问题

    问题 未根据排除属性中传递的值正确构建 ItemGroups 数组 如果您运行此脚本 它会创建一些示例文件 然后尝试根据包含 排除属性创建一个名为 TheFiles 的数组 问题是当排除不是硬编码或非常简单的属性时 它会出错 目标 Dyna
  • 如何使用 Web API 返回文件?

    我在用ASP NET Web API 我想从 API API 生成的 使用 C 下载 PDF 我可以让 API 返回一个byte 对于 C 应用程序 我可以这样做 byte pdf client DownloadData urlToAPI
  • 如何从 Android 应用程序打开 Viber 公共聊天

    我知道如何在 Viber 中与某个号码打开对话 如何从 Android 应用程序 新版本 发起 Viber 通话 但是如何打开公共聊天呢 有任何想法吗 提前致谢 这段 Kotlin 代码对我来说效果很好 val viberPackageNa
  • Cordova 地理定位插件在 Android 上返回空位置对象

    我在使用 Geolocation Cordova 插件 org apache cordova geolocation 时遇到了一些问题 它在 iOS 上运行良好 但在 Android 上则完全不行 据我了解 该插件曾经包含本机 Androi