From af7b51ed9c6765df68c519c9caf1216246654e51 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Fri, 11 Aug 2017 17:18:43 +0200 Subject: [PATCH] leaflet maps working --- rowers/interactiveplots.py | 59 ++++++++++++++++++++++++++++++ rowers/templates/workout_form.html | 34 +++-------------- rowers/views.py | 43 +++++----------------- 3 files changed, 74 insertions(+), 62 deletions(-) diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 25f5d708..b605dec1 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -686,6 +686,65 @@ def interactive_histoall(theworkouts): script, div = components(plot) return [script,div] +def leaflet_chart(lat,lon,name=""): + if lat.empty or lon.empty: + return [0,"invalid coordinate data"] + + latmean = lat.mean() + lonmean = lon.mean() + latbegin = lat[lat.index[0]] + longbegin = lon[lon.index[0]] + latend = lat[lat.index[-1]] + longend = lon[lon.index[-1]] + + coordinates = zip(lat,lon) + + scoordinates = "[" + + for x,y in coordinates: + scoordinates += """[{x},{y}], + """.format( + x=x, + y=y + ) + + scoordinates += "]" + + script = """ + + """.format( + latmean=latmean, + lonmean=lonmean, + latbegin = latbegin, + latend=latend, + longbegin=longbegin, + longend=longend, + scoordinates=scoordinates, + ) + + div = """ +

 

""" + + return script,div + def googlemap_chart(lat,lon,name=""): if lat.empty or lon.empty: return [0,"invalid coordinate data"] diff --git a/rowers/templates/workout_form.html b/rowers/templates/workout_form.html index ba87418d..87eb4b26 100644 --- a/rowers/templates/workout_form.html +++ b/rowers/templates/workout_form.html @@ -225,36 +225,12 @@ #map_canvas {position: relative; top: 0; right: 0; bottom: 0; left: 0;} -

 

+ + + {{ mapdiv|safe }} + - - + {{ mapscript|safe }} diff --git a/rowers/views.py b/rowers/views.py index 4b8269c5..86636673 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -6220,36 +6220,19 @@ def workout_edit_view(request,id=0,message="",successmessage=""): if hascoordinates: + mapscript,mapdiv = leaflet_chart(rowdata.df[' latitude'], + rowdata.df[' longitude'], + row.name) + #res = googlemap_chart(rowdata.df[' latitude'], # rowdata.df[' longitude'], # row.name) #gmscript = res[0] #gmdiv = res[1] - latmean = rowdata.df[' latitude'].mean() - longmean = rowdata.df[' longitude'].mean() - latbegin = rowdata.df[' latitude'][rowdata.df.index[0]] - latend = rowdata.df[' latitude'][rowdata.df.index[-1]] - longbegin = rowdata.df[' longitude'][rowdata.df.index[0]] - longend = rowdata.df[' longitude'][rowdata.df.index[1]] - coordinates = pd.DataFrame({ - 'x':rowdata.df[' latitude'].values, - 'y':rowdata.df[' longitude'].values, - }).to_json() else: - latmean = 51.505 - longmean = -0.09 - latbegin = 0 - latend = 0 - longbegin = 0 - longend = 0 - coordinates = pd.DataFrame({ - 'x':[0,0], - 'y':[0,0] - }).to_json() - - #gmscript = "" - #gmdiv = "" + mapscript = "" + mapdiv = "" # render page @@ -6259,11 +6242,8 @@ def workout_edit_view(request,id=0,message="",successmessage=""): 'workout':row, 'teams':get_my_teams(request.user), 'graphs1':g[0:3], - 'latmean':latmean, - 'longmean':longmean, - 'latbegin':latbegin, - 'longbegin':longbegin, - 'coordinates':coordinates, + 'mapscript':mapscript, + 'mapdiv':mapdiv, }) else: @@ -6273,11 +6253,8 @@ def workout_edit_view(request,id=0,message="",successmessage=""): 'workout':row, 'graphs1':g[0:3], 'graphs2':g[3:6], - 'latmean':latmean, - 'longmean':longmean, - 'latbegin':latbegin, - 'longbegin':longbegin, - 'coordinates':coordinates, + 'mapscript':mapscript, + 'mapdiv':mapdiv, })