传单在标记问题之间画线
Leaflet draw line between markers issue
我想通过在它们之间画一条线将两个标记点连接在一起。我从这里使用 Leaflet
地图 API:https://github.com/kivy-garden/garden.mapview
代码:
from kivymd.app import MDApp
from kivy.garden.mapview import MapView, MapMarker
class MapViewApp(MDApp):
def build(self):
mapData = MapView(zoom=6, lat=10.4735, lon=55.9754)
marker1 = MapMarker(lat=20.3572136, lon=43.5032709)
marker2 = MapMarker(lat=20.3572136, lon=53.5032709)
mapData.add_marker(marker1)
mapData.add_marker(marker2)
return mapData
if __name__ == "__main__":
MapViewApp().run()
知道如何将两个标记点连接在一起吗?提前致谢。
您可以使用 canvas
绘制 Line
,但您必须在 MapView
更新时更新该行。这是一种仅一行的简单方法:
from functools import partial
from kivy.graphics.context_instructions import Color
from kivy.graphics.vertex_instructions import Line
from kivymd.app import MDApp
from kivy.garden.mapview import MapView, MapMarker
class MapViewApp(MDApp):
def build(self):
mapData = MapView(zoom=6, lat=10.4735, lon=55.9754)
marker1 = MapMarker(lat=20.3572136, lon=43.5032709)
marker2 = MapMarker(lat=20.3572136, lon=53.5032709)
mapData.add_marker(marker1)
mapData.add_marker(marker2)
self.line = None
mapData.bind(on_map_relocated=partial(self.draw_line, marker1, marker2))
return mapData
def draw_line(self, m1, m2, *args):
if self.line is None:
with self.root.canvas:
Color(1, 0, 0, 1)
self.line = Line(points=[m1.center_x, m1.y, m2.center_x, m2.y], width=1)
else:
self.line.points = [m1.center_x, m1.y, m2.center_x, m2.y]
if __name__ == "__main__":
MapViewApp().run()
我想通过在它们之间画一条线将两个标记点连接在一起。我从这里使用 Leaflet
地图 API:https://github.com/kivy-garden/garden.mapview
代码:
from kivymd.app import MDApp
from kivy.garden.mapview import MapView, MapMarker
class MapViewApp(MDApp):
def build(self):
mapData = MapView(zoom=6, lat=10.4735, lon=55.9754)
marker1 = MapMarker(lat=20.3572136, lon=43.5032709)
marker2 = MapMarker(lat=20.3572136, lon=53.5032709)
mapData.add_marker(marker1)
mapData.add_marker(marker2)
return mapData
if __name__ == "__main__":
MapViewApp().run()
知道如何将两个标记点连接在一起吗?提前致谢。
您可以使用 canvas
绘制 Line
,但您必须在 MapView
更新时更新该行。这是一种仅一行的简单方法:
from functools import partial
from kivy.graphics.context_instructions import Color
from kivy.graphics.vertex_instructions import Line
from kivymd.app import MDApp
from kivy.garden.mapview import MapView, MapMarker
class MapViewApp(MDApp):
def build(self):
mapData = MapView(zoom=6, lat=10.4735, lon=55.9754)
marker1 = MapMarker(lat=20.3572136, lon=43.5032709)
marker2 = MapMarker(lat=20.3572136, lon=53.5032709)
mapData.add_marker(marker1)
mapData.add_marker(marker2)
self.line = None
mapData.bind(on_map_relocated=partial(self.draw_line, marker1, marker2))
return mapData
def draw_line(self, m1, m2, *args):
if self.line is None:
with self.root.canvas:
Color(1, 0, 0, 1)
self.line = Line(points=[m1.center_x, m1.y, m2.center_x, m2.y], width=1)
else:
self.line.points = [m1.center_x, m1.y, m2.center_x, m2.y]
if __name__ == "__main__":
MapViewApp().run()