Geolocation API
To install Mapbox:pip install mapbox

Sign up for free public key from Mapbox.
JavaScript examples
Mapbox Python SDK
download_still_image.py
from mapbox import Static
lon = 153.0251
lat = -27.4698
zoom = 15
rotation = 0
tilt = 0
token = "pk.eyJ1IjoibWl0aTIiLCJhIjoiY2puNDdzdG5sMDZsaDNrcDZ4ZHRuN2E5cyJ9.dd0qe7G2vnsB-xTWIShziQ"
service = Static(access_token=token)
person = {
'type': 'Feature',
'properties': {'name': 'John Citizen'},
'geometry': {
'type': 'Point',
'coordinates': [lon, lat]
}
}
#mapbox types: satellite, outdoors, streets-satellite, streets-basic:
response = service.image('mapbox.streets-satellite',features=[person],lon=lon, lat=lat, z=zoom)
with open('tmpmap.png', 'wb') as output:
output.write(response.content)
JSmap.py
from flask import Flask
from flask import request
from flask import render_template_string
app = Flask(__name__)
log = {}
tag_counter = 0
client = '''
<script src='https://api.tiles.mapbox.com/mapbox-gl-js/v0.49.0/mapbox-gl.js'></script>
<div id="map" style="height: 300px; width: 300px;"></div>
<script>mapboxgl.accessToken = "pk.eyJ1IjoibWl0aTIiLCJhIjoiY2puNDdzdG5sMDZsaDNrcDZ4ZHRuN2E5cyJ9.dd0qe7G2vnsB-xTWIShziQ";
map = new mapboxgl.Map({ container: 'map', style: 'mapbox://styles/mapbox/streets-v9' });
function success(pos) {document.getElementById("lat").value=pos.coords.latitude;document.getElementById("lon").value=pos.coords.longitude;
map.flyTo({center: [pos.coords.longitude, pos.coords.latitude], zoom: 15});}
function error(err){document.getElementById("map").innerHTML="NO GPS SIGNAL, REFRESHING PAGE IN 5 SECONDS";
setTimeout(function(){window.location.reload(1);}, 5000);}
navigator.geolocation.watchPosition(success,error,{enableHighAccuracy: true,timeout: 3000,maximumAge: 0});</script>
<form action="/log" method="POST">
lat: <input type="text" name="lat" id="lat" value="0" readonly><br>
lon: <input type="text" name="lon" id="lon" value="0" readonly><br>
tag: <input type="text" name="tag" id="tag" value="test tag"><br>
<input type="submit" value="log gps">
</form><br>{% if log is defined %}{% for key, value in log.items() %}Tag: {{key}}<br>LatLon: {{value}}<br>{% endfor %}{% endif %}
'''
@app.route("/log", methods=['GET', 'POST'])
def logTag():
global log
global tag_counter
tag_counter += 1
lat = request.form["lat"]
lon = request.form["lon"]
tag = str(tag_counter)+"_"+request.form["tag"]
log[tag] = (lat, lon)
return render_template_string(client, log=log)
@app.route("/")
def start():
return render_template_string(client)
app.run()