first map using microservice
This commit is contained in:
@@ -82,10 +82,24 @@ queue = django_rq.get_queue('default')
|
||||
queuelow = django_rq.get_queue('low')
|
||||
queuehigh = django_rq.get_queue('low')
|
||||
|
||||
import requests
|
||||
|
||||
activate(settings.TIME_ZONE)
|
||||
thetimezone = get_current_timezone()
|
||||
|
||||
def get_chart(end_point, chart_data):
|
||||
|
||||
url = settings.ROWSANDALL_CHARTS_URL+end_point
|
||||
headers = {'authorization':"Bearer {token}".format(token=settings.ROWSANDALL_CHARTS_TOKEN)}
|
||||
response = requests.post(url, json=chart_data, headers=headers)
|
||||
if response.status_code == 200:
|
||||
script = response.json()['script']
|
||||
div = response.json()['div']
|
||||
else:
|
||||
script = ''
|
||||
div = response.reason
|
||||
|
||||
return script, div
|
||||
|
||||
def workoutname(id):
|
||||
try:
|
||||
@@ -2164,162 +2178,33 @@ def interactive_histoall(theworkouts, histoparam, includereststrokes,
|
||||
|
||||
|
||||
def course_map(course):
|
||||
latmean, lonmean, coordinates = course_coord_center(course)
|
||||
if course.with_cn_nav_waypoints:
|
||||
latmean, lonmean, coordinates = course_coord_crewnerd_navigation(course)
|
||||
lat_min, lat_max, long_min, long_max = course_coord_maxmin(course)
|
||||
|
||||
coordinates = course_spline(coordinates)
|
||||
|
||||
scoordinates = "["
|
||||
|
||||
for index, row in coordinates.iterrows():
|
||||
scoordinates += """[{x},{y}],
|
||||
""".format(
|
||||
x=row['latitude'],
|
||||
y=row['longitude']
|
||||
)
|
||||
|
||||
scoordinates += "]"
|
||||
|
||||
polygons = GeoPolygon.objects.filter(
|
||||
course=course).order_by("order_in_course")
|
||||
|
||||
plabels = ''
|
||||
|
||||
for p in polygons:
|
||||
coords = polygon_coord_center(p)
|
||||
|
||||
plabels += """
|
||||
var marker = L.marker([{latbegin}, {longbegin}]).addTo(mymap);
|
||||
marker.bindPopup("<b>{name}</b>");
|
||||
|
||||
""".format(
|
||||
latbegin=coords[0],
|
||||
longbegin=coords[1],
|
||||
name=p.name
|
||||
)
|
||||
|
||||
pcoordinates = """[
|
||||
"""
|
||||
|
||||
for p in polygons:
|
||||
pcoordinates += """[
|
||||
["""
|
||||
|
||||
points = GeoPoint.objects.filter(polygon=p).order_by("order_in_poly")
|
||||
|
||||
for pt in points:
|
||||
pcoordinates += "[{x},{y}],".format(
|
||||
x=pt.latitude,
|
||||
y=pt.longitude
|
||||
)
|
||||
|
||||
# remove last comma
|
||||
pcoordinates = pcoordinates[:-1]
|
||||
pcoordinates += """]
|
||||
],
|
||||
"""
|
||||
|
||||
pcoordinates += """
|
||||
]"""
|
||||
|
||||
script = """
|
||||
<script>
|
||||
course_dict = {
|
||||
'name': course.name,
|
||||
'country': course.country,
|
||||
'notes': course.notes,
|
||||
}
|
||||
|
||||
|
||||
var streets = L.tileLayer(
|
||||
'https://api.mapbox.com/styles/v1/{{id}}/tiles/{{z}}/{{x}}/{{y}}?access_token={{accessToken}}', {{
|
||||
attribution: '© <a href="https://www.mapbox.com/about/maps/">Mapbox</a> © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> <strong><a href="https://www.mapbox.com/map-feedback/" target="_blank">Improve this map</a></strong>',
|
||||
tileSize: 512,
|
||||
maxZoom: 18,
|
||||
zoomOffset: -1,
|
||||
id: 'mapbox/streets-v11',
|
||||
accessToken: 'pk.eyJ1Ijoic2FuZGVycm9vc2VuZGFhbCIsImEiOiJjajY3aTRkeWQwNmx6MzJvMTN3andlcnBlIn0.MFG8Xt0kDeSA9j7puZQ9hA'
|
||||
}}
|
||||
),
|
||||
polygons_list = []
|
||||
for p in GeoPolygon.objects.filter(course=course).order_by('order_in_course'):
|
||||
points = GeoPoint.objects.filter(polygon=p).order_by('order_in_poly')
|
||||
polygons_list.append({
|
||||
'name': p.name,
|
||||
'points': [{
|
||||
'latitude': pt.latitude, 'longitude': pt.longitude, 'order_in_poly': pt.order_in_poly
|
||||
} for pt in points ]
|
||||
})
|
||||
|
||||
satellite = L.tileLayer(
|
||||
'https://api.mapbox.com/styles/v1/{{id}}/tiles/{{z}}/{{x}}/{{y}}?access_token={{accessToken}}', {{
|
||||
attribution: '© <a href="https://www.mapbox.com/about/maps/">Mapbox</a> © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> <strong><a href="https://www.mapbox.com/map-feedback/" target="_blank">Improve this map</a></strong>',
|
||||
tileSize: 512,
|
||||
maxZoom: 18,
|
||||
zoomOffset: -1,
|
||||
id: 'mapbox/satellite-v9',
|
||||
accessToken: 'pk.eyJ1Ijoic2FuZGVycm9vc2VuZGFhbCIsImEiOiJjajY3aTRkeWQwNmx6MzJvMTN3andlcnBlIn0.MFG8Xt0kDeSA9j7puZQ9hA'
|
||||
}}
|
||||
),
|
||||
|
||||
outdoors = L.tileLayer(
|
||||
'https://api.mapbox.com/styles/v1/{{id}}/tiles/{{z}}/{{x}}/{{y}}?access_token={{accessToken}}', {{
|
||||
attribution: '© <a href="https://www.mapbox.com/about/maps/">Mapbox</a> © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> <strong><a href="https://www.mapbox.com/map-feedback/" target="_blank">Improve this map</a></strong>',
|
||||
tileSize: 512,
|
||||
maxZoom: 18,
|
||||
zoomOffset: -1,
|
||||
id: 'mapbox/outdoors-v11',
|
||||
accessToken: 'pk.eyJ1Ijoic2FuZGVycm9vc2VuZGFhbCIsImEiOiJjajY3aTRkeWQwNmx6MzJvMTN3andlcnBlIn0.MFG8Xt0kDeSA9j7puZQ9hA'
|
||||
}}
|
||||
);
|
||||
|
||||
|
||||
|
||||
var mymap = L.map('map_canvas', {{
|
||||
center: [{latmean}, {lonmean}],
|
||||
zoom: 13,
|
||||
layers: [outdoors]
|
||||
}}).setView([{latmean},{lonmean}], 13);
|
||||
|
||||
var navionics = new JNC.Leaflet.NavionicsOverlay({{
|
||||
navKey: 'Navionics_webapi_03205',
|
||||
chartType: JNC.NAVIONICS_CHARTS.NAUTICAL,
|
||||
isTransparent: true,
|
||||
zIndex: 1
|
||||
}});
|
||||
|
||||
|
||||
var osmUrl2='http://tiles.openseamap.org/seamark/{{z}}/{{x}}/{{y}}.png';
|
||||
var osmUrl='http://{{s}}.tile.openstreetmap.org/{{z}}/{{x}}/{{y}}.png';
|
||||
|
||||
|
||||
//create two TileLayer
|
||||
var nautical=new L.TileLayer(osmUrl,{{
|
||||
maxZoom:18}});
|
||||
|
||||
|
||||
L.control.layers({{
|
||||
"Streets": streets,
|
||||
"Satellite": satellite,
|
||||
"Outdoors": outdoors,
|
||||
"Nautical": nautical,
|
||||
}},{{
|
||||
"Navionics":navionics,
|
||||
}}).addTo(mymap);
|
||||
|
||||
var latlongs = {scoordinates}
|
||||
var polyline = L.polyline(latlongs, {{color:'red'}}).addTo(mymap)
|
||||
mymap.fitBounds(polyline.getBounds())
|
||||
|
||||
var platlongs = {pcoordinates}
|
||||
var polygons = L.polygon(platlongs, {{color:'blue'}}).addTo(mymap)
|
||||
|
||||
{plabels}
|
||||
|
||||
</script>
|
||||
""".format(
|
||||
latmean=latmean,
|
||||
lonmean=lonmean,
|
||||
scoordinates=scoordinates,
|
||||
pcoordinates=pcoordinates,
|
||||
plabels=plabels
|
||||
)
|
||||
|
||||
div = """
|
||||
<div id="map_canvas" style="width: 100%; height: 400px; margin:0; padding:0;grid-gap:0;"></div>
|
||||
"""
|
||||
course_dict['polygons'] = polygons_list
|
||||
|
||||
script, div = get_chart("/map", course_dict)
|
||||
|
||||
return script, div
|
||||
|
||||
|
||||
|
||||
|
||||
def get_map_script_course(
|
||||
latmean,
|
||||
lonmean,
|
||||
|
||||
Reference in New Issue
Block a user