我对传单非常陌生,我正在尝试研究如何从传单中的 onMapClick 事件返回纬度和经度到 Flask 服务器应用程序,以允许我使用坐标在我的上执行空间搜索数据库。该事件目前仅在网络应用程序的弹出窗口中显示经纬度。
我已经进行了搜索,但我想我的知识太基础了,我不知道我在搜索什么功能。
我的网络 map
<!DOCTYPE html>
<html>
<head>
<title>Demo</title>
<link rel="stylesheet" href="https://unpkg.com/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="2a464f4b4c464f5e6a1b041a0419" rel="noreferrer noopener nofollow">[email protected]</a>/dist/leaflet.css" /> <!-- Leaflet CSS file (style sheets)>-->
<script src="https://unpkg.com/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="bdd1d8dcdbd1d8c9fd8c938d938e" rel="noreferrer noopener nofollow">[email protected]</a>/dist/leaflet.js"></script> <!--leaflet java script file>-->
</head>
<body>
<div id="map1" style="width: 800px; height: 600px;"></div>
<script>
var mymap = L.map('map1').setView([51.5, -0.09], 10);
<!--add map to display>-->
L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', {
attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://mapbox.com">Mapbox</a>',
maxZoom: 18,
id: 'mapbox.streets',
accessToken: '*****************'
}).addTo(mymap);
<!--add popups as a layer>-->
var popup = L.popup();
<!--logs the action and gives lat long of where click occured >-->
function onMapClick(e) {
.setLatLng(e.latlng)
.setContent("You clicked the map at " + e.latlng.toString())
.openOn(mymap);
}
mymap.on('click', onMapClick);
</script>
</body>
</html>
和服务器应用
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/demo')
def webMap():
return render_template('demo.html')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8090)
编辑
我尝试使用 ajax 调用,但收到 405 错误
$.ajax('demo/data/', {
type: 'GET',
data: {
lat: e.latlng.lat,
lng: e.latlng.lng
}
});
};
flask 应用程序
@app.route('/demo/data/')
def demoData():
return request.form['lng'], request.form['lat']
最佳答案
405 错误是一个方法不允许
错误。
使用 REST-api 时,您应该使用 POST
请求发送信息,如 here 中所述。 .
您需要将 app.route 更改为,
@app.route('/demo/data/' methods=["POST"])
允许 post 方法
关于python - 单击传单 Web 应用程序后如何将纬度和经度返回到 Flask 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47133398/