我正在开发一个可以显示位置的网站(在Flask中)(根据用户当前位置与位置之间的距离进行分类的方法) 我从HTML5获取经度和纬度,并将其通过ajax发送到后端,它们用于计算距离(已知地点的经纬度),然后将结果保存到数据库中,以进行排序。
获取当前坐标
function geocodeLocation(geocoder, position) {
geocoder.geocode({'location': position}, function (results, status) {
if (status === 'OK') {
if (results[0]) {
var addr = results[0].formatted_address;
var value = addr.split(",");
$.ajax({
type: 'POST',
url: 'http://localhost:5000',
data: JSON.stringify(position),
contentType: 'application/json; charset=UTF-8',
dataType: 'json',
});
} else {
console.log('No results found');
}
} else {
console.log('Geocoder failed due to: ' + status);
}
});
}
从前端获取Ajax请求,并计算距离
@main.route('/', methods=['GET', 'POST'])
def index():
data = request.get_json()
if data is not None:
place_collections = Place.query.filter_by(county='Bangkok')
for place in place_collections:
distance_computing = Place.distance_calculator(float(place.lat), float(place.lng), data['lat'], data['lng'])
location.distance = round(distance_computing,3)
db.session.commit()
place = Place.query.filter_by(county='Bangkok').order_by(Place.distance)
return render_template('main/home.html', place=place)
home.html
{% if place.distance %}
<p>distance: {{ place.distance }}</p>
{% endif %}
<p>address:{{ place.address }}
实际上,该模板在首次访问该网站时已被渲染一次,但是那时距离数据不可用,要显示基于距离的结果,页面需要在完成计算后再次渲染。如何重新加载页面(渲染模板)以显示更改?
如果我在home.html中添加<meta http-equiv="refresh" content="10">
,则刷新后会显示新数据,但我希望刷新一次。
还有其他好的解决方案吗?