globalforest/forestmapview.py
2020-10-19 02:16:32 +03:00

55 lines
1.8 KiB
Python

from kivy.app import App
from kivy.clock import Clock
from kivy_garden.mapview import MapView
from treemarker import TreeMarker
class ForestMapView(MapView):
get_trees_timer = None
tree_names = []
#def on_zoom(self, *args):
# self.zoom = 10
def print_current_zoom(self, *args):
print("] Zoom level: " + str(self.zoom))
def start_get_fov_trees(self):
# After one second get the trees in field of view
try:
self.get_trees_timer.cancel()
except:
pass
self.get_trees_timer = Clock.schedule_once(self.get_fov_trees, 1)
def get_fov_trees(self, *args):
# Get reference to main app and the db cursor
app = App.get_running_app()
# Gebug gps position
print("] Current map position lat: {} lon: {} ".format(self.lat, self.lon))
min_lat, min_lon, max_lat, max_lon = self.get_bbox()
sql_statement = "SELECT * FROM locations WHERE x > %s AND x < %s AND y > %s AND y < %s" % (min_lat, max_lat, min_lon, max_lon) #sql_statement = "SELECT * FROM locations"
app.cursor.execute(sql_statement)
trees = app.cursor.fetchall()
for tree in trees:
name = tree[0]
#print("] Fountain detected: " + str(tree))
if name in self.tree_names:
continue
else:
self.add_tree(tree)
def add_tree(self, tree):
# Create TreeMarker
lat, lon = tree[20], tree[21]
treemarker = TreeMarker(lat=lat, lon=lon)
treemarker.tree_data = tree
# Add TreeMarker to the map
self.add_widget(treemarker)
# Keep track of the TreeMarker's name
name = tree[1]
self.tree_names.append(name)