2020-09-30 09:09:07 -04:00
from kivy_garden . mapview import MapView
2020-09-28 23:18:26 -04:00
from kivy . clock import Clock
from kivy . app import App
2020-09-28 22:10:13 -04:00
2020-10-14 00:19:43 -04:00
from treemarker import TreeMarker
2020-09-28 22:10:13 -04:00
class ForestMapView ( MapView ) :
2020-09-28 23:18:26 -04:00
get_trees_timer = None
2020-10-14 00:19:43 -04:00
tree_names = [ ]
2020-09-28 23:18:26 -04:00
2020-10-14 11:54:37 -04:00
def print_current_zoom ( self , * args ) :
print ( " ] Zoom level: " + str ( self . zoom ) )
2020-10-14 08:29:53 -04:00
2020-09-28 23:18:26 -04:00
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 ( )
2020-10-14 00:19:43 -04:00
# Gebug gps position
2020-10-14 12:41:26 -04:00
print ( " ] Current map position: " + str ( self . get_bbox ( ) ) )
2020-09-28 23:18:26 -04:00
min_lat , min_lon , max_lat , max_lon = self . get_bbox ( )
2020-09-30 09:09:07 -04:00
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"
2020-09-28 23:18:26 -04:00
app . cursor . execute ( sql_statement )
trees = app . cursor . fetchall ( )
for tree in trees :
2020-10-14 00:19:43 -04:00
name = tree [ 0 ]
2020-10-14 12:41:26 -04:00
#print("] Fountain detected: " + str(tree))
2020-10-14 00:19:43 -04:00
if name in self . tree_names :
continue
else :
self . add_tree ( tree )
2020-09-28 23:18:26 -04:00
def add_tree ( self , tree ) :
2020-10-14 00:19:43 -04:00
# Create TreeMarker
name = tree [ 0 ]
lat , lon = tree [ 1 ] , tree [ 2 ]
2020-10-14 11:54:37 -04:00
treemarker = TreeMarker ( lat = lat , lon = lon , source = ' assets/images/markers/tree.png ' )
2020-10-14 00:19:43 -04:00
treemarker . tree_data = treemarker
# Add TreeMarker to the map
self . add_widget ( treemarker )
# Keep track of the TreeMarker's name
2020-10-14 12:41:26 -04:00
self . tree_names . append ( name )