0
何千ものマーカーが含まれているGoogleマップのWebアプリケーションを構築しています。マーカーの数が多い場合は、現在のビューポートにマーカーをロードして、アプリの速度を落とさないようにすることが重要です。境界が変わるたびにAJAX呼び出しを行い、ビューポートにマーカーをロードしたいと思います。ビューポートが何であるかを知るためには、北東と南西の緯度と経度座標をURLパラメータとしてバックエンドに渡す必要があります。次に、座標内にあるマーカーをSQLに照会してマップに配置する必要があります。Googleにロードする現在のビューポートフラスコのクエリのマーカーにマーカをマップする
問題は、「送信」ボタンをクリックしなくても、フロントエンドからバックエンドに座標を送信する方法がわかりません。
これは私がこれまで持っているものです:
フロントエンド:
<div id="info" action="{{ url_for('data') }}">
<p>NorthEast=</p>
<p id="NElat" name ="NElat"></p>
<p id="NElng" name = "NElng"></p>
</br>
<p>SouthWest=</p>
<p id="SWlat" name ="SWlat"></p>
<p id="SWlng" name ="SWlng"></p>
</div>
var bounds = map.getBounds();
var NE = bounds.getNorthEast();
var SW = bounds.getSouthWest();
var neLat = NE.lat()
var neLng = NE.lng()
var swLat = SW.lat()
var swLng = SW.lng()
document.getElementById("NElat").innerHTML=neLat;
document.getElementById("NElng").innerHTML=neLng;
document.getElementById("SWlat").innerHTML=swLat;
document.getElementById("SWlng").innerHTML=swLng;
downloadUrl('/data?neLat=' + neLat + "&neLng=" + neLng + "&swLat=" + swLat + "&swLng=" + swLng, function(results) {...}
バックエンド:
@app.route("/data")
def data():
conn = e.connect()
latt = request.args.get("neLat", "neLat")
query = conn.execute("SELECT * FROM coordinates WHERE lat > ?", [latt])
result = {'data': [dict(zip(tuple (query.keys()) ,i)) for i in query.cursor]}
jsonData = json.dumps(result)
return jsonData
Javascriptを使用して、クリックのためにマップ上にイベントリスナーを作成する方法はありますか?クリックを検出すると、AJAXリクエストをバックエンドに送信して、新しいマーカーを取得できます。 – coralvanda
ご意見ありがとうございます。マップビューポートにあるマーカーを照会する方法を具体的に探していました。 – Ibarrameade