无法更新 Kivy-Mapview 上的标记 Python

Cannot update the marker on Kivy-Mapview Python

大家好。希望你们一切都好。

我刚开始在 Python 上使用 Kivy Mapview 并做了一些示例。现在,我正在尝试创建一个动态标记,它能够每 0.5 秒自动 move/reposition 一次。我正在进行一个项目,在项目结束时我需要提供实时 GPS 跟踪。这就是我尝试创建动态标记的原因。这是我尝试过的:

.py 文件:

from kivy.garden.mapview import MapView, MapMarker
from kivy.app import App
import time

class MapViewApp(App):
    def build(self):
        while True:
            increment = 0.0001
            mapview = MapView(zoom=19, lat=40.219867, lon=28.964641)
        
            marker_1 = MapMarker(lon=28.964641 + increment, lat=40.219867 + increment, source="circle_PNG36.png")
            mapview.add_marker(marker_1)
            increment = increment + 0.01
            mapview.remove_marker(marker1)
            time.sleep(0.5)
        
MapViewApp().run()

.kv 文件:

#:import MapView kivy.garden.mapview.MapView

MapView:
    MapMarkerPopup:
    lat: self.lat
    lon: self.lon

你的代码有几个问题,但主要问题是你的 MapViewApp 永远不会 运行,因为你的 build() 方法中有一个无限循环。由于 build() 方法永远不会 returns,因此 runTouchApp() 方法永远不会执行。

在相关说明中,您也不希望将无限循环放在 kivy App 的主线程上。 App GUI 的更新发生在主线程上,如果某些方法占用了主线程,则 GUI 将被冻结。这样的循环应该 运行 在一个单独的线程上,它对 GUI 所做的任何修改都是通过类似 Clock.schedule_once() 的方式完成的,以便将这些 GUI 修改返回到主线程。