Как я могу получить Geoclue Geolocation в Python? Что такое параметр id рабочего стола? - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь получить местоположение (широта / долгота), используя GeoClue для Linux и интерфейс Python (пакет gir1.2-geoclue-2.0). Документация для c почти соответствует функциям API здесь, но я не уверен, какой «идентификатор рабочего стола» я должен отправить ... любой действительный файл .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)

но каким должен быть первый параметр? Что такое «идентификатор рабочего стола» ??

1 Ответ

0 голосов
/ 23 марта 2020

Хотя я не уверен, каким должен быть этот один параметр, он работает в 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'))
...