python - 如何在 Python 中获取 Geoclue 地理位置?- 什么是桌面 id 参数?
问题描述
我正在尝试使用适用于 Linux 的 GeoClue 和 Python 接口(gir1.2-geoclue-2.0
包)获取位置(纬度/经度)。c的文档几乎与此处的 api 函数匹配,但我不确定我应该发送什么“桌面 ID”......任何有效.desktop
的文件是应用程序请求的?完整路径或唯一名称?
>>> Geoclue.Simple.new.__doc__
'new(desktop_id:str, accuracy_level:Geoclue.AccuracyLevel, cancellable:Gio.Cancellable=None, callback:Gio.AsyncReadyCallback=None, user_data=None)'
>>> Geoclue.Simple.new_sync('hi',Geoclue.AccuracyLevel.NEIGHBORHOOD,None)
(process:7691): Geoclue-WARNING **: Error setting property 'DesktopId' on interface org.freedesktop.GeoClue2.Client: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface 'org.freedesktop.DBus.Properties' on object at path /org/freedesktop/GeoClue2/Client/2 (g-dbus-error-quark, 19)
(process:7691): Geoclue-WARNING **: Error setting property 'RequestedAccuracyLevel' on interface org.freedesktop.GeoClue2.Client: GDBus.Error:org.freedesktop.DBus.Error.UnknownMethod: No such interface 'org.freedesktop.DBus.Properties' on object at path /org/freedesktop/GeoClue2/Client/2 (g-dbus-error-quark, 19)
__main__:1: Warning: g_object_unref: assertion 'object->ref_count > 0' failed
<Geoclue.Simple object at 0x7f4fde2ad8b8 (GClueSimple at 0x1b89340)>
>>> Geoclue.Simple.new_sync('something',Geoclue.AccuracyLevel.NEIGHBORHOOD,None)
最后一个命令挂起,不返回任何内容。我是否错过了获取笔记本电脑/设备大致位置的步骤?据我了解,这应该能够以类似于 whatsmyip.com 的方式从网络中读取设备的位置?
更新:我能够通过与返回值交互来获得粗略的位置,
c = Geoclue.Simple.new_sync('something',Geoclue.AccuracyLevel.NEIGHBORHOOD,None)
但是第一个参数应该是什么?什么是“桌面 ID”?
解决方案
虽然我不确定那个参数应该是什么,但我已经让它在 Python 中工作。此处提供了完整的解释。
from gi.repository import Geoclue
clue = Geoclue.Simple.new_sync('something',Geoclue.AccuracyLevel.NEIGHBORHOOD,None)
location = clue.get_location()
print(location.get_property('latitude'), location.get_property('longitude'))
推荐阅读
- html - 如何用 CSS 换行但不能用空格换行?
- javascript - 为什么我的作用域属性未定义,而我的 json 数据使用 http.get 正确恢复?
- android - 具有默认顶部和底部填充的 Android 应用
- java - Java JNA 无效的内存访问
- ios - 计算用户触摸
- r - 交互式 ggPredict whitin R Shiny FlexDashboard
- python - 自定义 celery 的速率限制和每个组的工人数量
- arrays - 如何用依赖于前一个值的值填充范围?
- android - Google Play 上传问题:“Your Android App Bundle need to have the package name com.xxbase”
- amazon-web-services - 我可以为 AWS 负载均衡器添加动态条件以自动添加新实例吗?