leaflet和flask读取{"y":123.2885100,"x":42.7373900,"label":8},格式的json文件画聚类图
时间: 2023-10-18 09:05:32 浏览: 161
Leaflet.Spain.WMS:为西班牙制图机构的多个网络地图服务 (WMS) 图层(PNOA、IGN base、Catastro 等)提供轻松设置
以下是一个简单的示例代码,展示如何使用leaflet和flask读取json文件,并画出聚类图:
```python
from flask import Flask, render_template, jsonify
import json
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/data')
def get_data():
with open('data.json') as f:
data = json.load(f)
return jsonify(data)
if __name__ == '__main__':
app.run(debug=True)
```
其中,`data.json`是一个包含聚类数据的json文件,格式如题目所示。在`get_data()`函数中,我们使用`json.load()`函数将json文件读取为python字典对象,并使用`jsonify()`函数将其转换为json格式,方便前端代码读取。
在前端代码中,我们使用leaflet.js库绘制地图和聚类图。以下是一个简单的示例代码,用于展示如何读取后端发送的json数据,并将其渲染为聚类图:
```html
<!DOCTYPE html>
<html>
<head>
<title>Leaflet Cluster Map</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.5.1/leaflet.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.5.1/leaflet.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/1.4.1/leaflet.markercluster.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/1.4.1/MarkerCluster.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet.markercluster/1.4.1/MarkerCluster.Default.css" />
</head>
<body>
<div id="map" style="width: 100%; height: 100vh;"></div>
<script>
var map = L.map('map').setView([42.7373900, 123.2885100], 13);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: 'Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors',
maxZoom: 18
}).addTo(map);
var markers = L.markerClusterGroup();
fetch('/data')
.then(response => response.json())
.then(data => {
data.forEach(d => {
var marker = L.marker([d.x, d.y]).bindPopup(d.label.toString());
markers.addLayer(marker);
})
});
map.addLayer(markers);
</script>
</body>
</html>
```
在这个代码中,我们首先使用leaflet.js创建一个地图,并添加一个OpenStreetMap的地图图层。然后,我们创建一个markerClusterGroup对象用于绘制聚类图。
接下来,我们使用`fetch()`函数从后端读取json数据,并使用`forEach`函数遍历每个数据点。对于每个数据点,我们创建一个L.marker对象,并将其绑定一个popup窗口,显示该点的标签信息。最后,我们将这个marker对象添加到markerClusterGroup对象中,并将其添加到地图上。
需要注意的是,由于`fetch()`函数是异步的,因此我们需要将绘制聚类图的代码写在`fetch()`函数的回调函数中。这样才能保证我们在拿到数据后再进行绘制。
综上所述,以上是一个简单的示例代码,演示了如何使用leaflet和flask读取json文件,并画出聚类图。当然,实际的应用场景会更加复杂,需要根据具体需求进行修改和扩展。
阅读全文