@app.route('/echarts',methods=['GET']) def echarts(): if request.method == 'GET': query_result = D_huaxue.query.filter() data = [] for row in query_result: data.append({ 'name': row.name, 'value': [row.longitude, row.latitude], 'symbolSize': 15, 'itemStyle': {'color': 'blue'} }) context = { 'query_result': query_result, 'data': data } return render_template('地图2.html', **context){ name:'海洋水文数据集', type:'scatter', coordinateSystem: 'bmap', data:data <!-- data: [--> <!-- {name: 'ShiDao', value: [122.30, 36.94], symbolSize: 15, itemStyle: {color: 'blue'}},--> <!-- {name: 'XiaoMaiDao', value: [120.28, 36.02], symbolSize: 15, itemStyle: {color: 'blue'}},--> <!-- {name: 'LianYunGang', value: [119.31, 34.73], symbolSize: 15, itemStyle: {color: 'blue'}},--> <!-- {name: 'YinShuiChuan', value: [121.95, 30.85], symbolSize: 15, itemStyle: {color: 'blue'}},--> <!-- {name: '卫星遥感海表面温度数据', value: [146,12], symbolSize: 15, itemStyle: {color: 'blue'}}--> <!-- ]--> }页面显示空白怎么修改
时间: 2024-01-12 14:05:41 浏览: 96
根据你提供的代码,看起来你使用的是百度地图的API来绘制地图。在地图显示空白的情况下,有可能是因为你没有正确引入百度地图API的JavaScript文件,或者是你的API密钥不正确。你可以检查一下以下几点:
1. 确认百度地图API的JavaScript文件已经正确引入,可以在浏览器的控制台中查看是否有相关的错误提示。
2. 确认你的API密钥是否正确,可以在百度地图开放平台中查看你的应用是否已经开通了相应的API权限。
3. 确认你的地图容器是否正确设置了高度和宽度,可以使用CSS样式来设置对应的属性。
希望以上信息能够帮助你解决问题。
相关问题
@app.route('/echarts',methods=['GET']) def echarts(): if request.method == 'GET': query_result = D_huaxue.query.filter() data = [] context = { 'query_result': query_result, 'd_huaxuedata': data } return render_template('地图2.html', **context),{ name:'海洋水文数据集', type:'scatter', coordinateSystem: 'bmap', data:d_huaxuedata }还需要在echarts上添加什么
根据你提供的代码,需要在`render_template`中将数据传递给前端页面。具体地,在`context`中添加`d_huaxuedata`字段,将从数据库中查询到的数据传递给前端页面。如下所示:
```python
@app.route('/echarts',methods=['GET'])
def echarts():
if request.method == 'GET':
query_result = D_huaxue.query.filter()
data = []
for row in query_result:
data.append({
'name': row.name,
'value': [row.longitude, row.latitude],
'symbolSize': 15,
'itemStyle': {'color': 'blue'}
})
context = {
'query_result': query_result,
'd_huaxuedata': data
}
return render_template('地图2.html', **context)
```
在前端页面中,需要使用`echarts`库来绘制地图,并将从后端传递过来的数据`d_huaxuedata`传递给地图组件进行绘制。具体地,需要在Javascript代码中添加以下代码:
```javascript
var myChart = echarts.init(document.getElementById('map'));
// 指定地图的配置项和数据
var option = {
bmap: {
center: [113.25, 23.12],
zoom: 12,
roam: true
},
series: [
{
name:'海洋水文数据集',
type:'scatter',
coordinateSystem: 'bmap',
data: {{ d_huaxuedata | safe }}
}
]
};
// 使用制定的配置项和数据显示地图
myChart.setOption(option);
```
在以上代码中,`{{ d_huaxuedata | safe }}`表示从后端传递过来的数据,使用了jinja2模板引擎进行渲染,并使用`| safe`过滤器来确保数据的安全性。同时,`myChart.setOption(option)`语句则是使用制定的配置项和数据显示地图。
这样就可以将从数据库中查询到的数据展示在echarts地图上了。
class D_huaxue(db.Model): __tablename__ = 'd_huaxue' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100), nullable=False) longitude = db.Column(db.Float, nullable=False) latitude = db.Column(db.Float, nullable=False)@app.route('/echarts',methods=['GET']) def echarts(): if request.method == 'GET': query_result =D_huaxue.query.filter() context = { 'query_result': query_result } data = [] for row in query_result: data.append({ 'name': row['name'], 'value': [row['longitude'], row['latitude']], 'symbolSize': 15, 'itemStyle': {'color': 'blue'} }) return render_template('地图2.html')File "E:\python-3.7.0\lib\site-packages\flask\app.py", line 2525, in wsgi_app response = self.full_dispatch_request() File "E:\python-3.7.0\lib\site-packages\flask\app.py", line 1822, in full_dispatch_request rv = self.handle_user_exception(e) File "E:\python-3.7.0\lib\site-packages\flask\app.py", line 1820, in full_dispatch_request rv = self.dispatch_request() File "E:\python-3.7.0\lib\site-packages\flask\app.py", line 1796, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) File "C:/Users/DELL/Desktop/python_flask-dc/python_flask/app.py", line 1160, in echarts 'name': row['name'], TypeError: 'D_huaxue' object is not subscriptable 127.0.0.1 - - [01/Jun/2023 12:16:40] "GET /echarts HTTP/1.1" 500 -
问题出在 `for` 循环中的 `row` 对象上。在 Flask 中,查询结果返回的是一个对象而不是字典,因此你不能像字典一样对其进行下标操作。你需要使用对象属性来获取相应的值,例如 `row.name` 代替 `row['name']`,`row.longitude` 代替 `row['longitude']`,以此类推。修改代码如下:
```
if request.method == 'GET':
query_result = D_huaxue.query.filter()
data = []
for row in query_result:
data.append({
'name': row.name,
'value': [row.longitude, row.latitude],
'symbolSize': 15,
'itemStyle': {'color': 'blue'}
})
context = {
'query_result': query_result,
'data': data
}
return render_template('地图2.html', **context)
```
同时,你需要将 `data` 变量包含在 `context` 字典中,并在渲染模板时将其传递给模板,以便在模板中可以使用这个变量。
阅读全文