前端通过点击地图的省份,或者查询省份,可以显示该省份野生动物的名称列表,前端发送请求,后端使用python访问MySQL数据库,前端使用高德api展示出地图,后端使用pyechars,代码具体怎么写
时间: 2023-06-19 16:06:23 浏览: 118
Python基于django + mysql的后台管理系统源码+数据库脚本
这个功能需要前后端配合完成,涉及到多个技术栈,主要包括:
- 前端:HTML、CSS、JavaScript、jQuery、高德地图API
- 后端:Python、Flask、MySQL、pyecharts
以下是大致实现步骤:
1. 前端实现:
- 使用高德地图API,展示地图,并绑定省份的点击事件。
- 省份被点击时,发送 Ajax 请求到后端,获取该省份的野生动物列表。
- 将野生动物列表展示在前端页面上。
2. 后端实现:
- 使用 Flask 框架实现后端应用,编写接口,接收前端请求。
- 使用 Python 连接 MySQL 数据库,查询该省份的野生动物列表。
- 使用 pyecharts 生成柱状图或其他图表,将野生动物列表以图表的形式返回给前端。
下面是示意代码:
前端 HTML 文件:
```
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>野生动物地图</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://webapi.amap.com/maps?v=1.4.15&key=your-key"></script>
<style>
#map {
width: 100%;
height: 600px;
}
</style>
</head>
<body>
<div id="map"></div>
<div>
<label for="province">请选择省份:</label>
<select id="province">
<option value="江苏省">江苏省</option>
<option value="浙江省">浙江省</option>
<option value="广东省">广东省</option>
</select>
<button id="query">查询</button>
</div>
<div id="chart"></div>
<script>
// 初始化地图
var map = new AMap.Map("map", {
center: [116.397428, 39.90923],
zoom: 5
});
// 绑定省份选择事件
$('#query').on('click', function () {
var province = $('#province').val();
$.ajax({
url: '/wildlife',
type: 'GET',
data: {province: province},
success: function (data) {
// 渲染野生动物列表
$('#animal-list').empty();
$.each(data, function (index, animal) {
$('#animal-list').append('<li>' + animal + '</li>');
});
// 渲染图表
var chart = echarts.init(document.getElementById('chart'));
var option = {
title: {
text: province + '野生动物分布图'
},
tooltip: {},
xAxis: {
data: data.map(function (item) {
return item.name;
})
},
yAxis: {},
series: [{
name: '数量',
type: 'bar',
data: data.map(function (item) {
return item.value;
})
}]
};
chart.setOption(option);
}
});
});
</script>
</body>
</html>
```
前端 JavaScript 文件:
```
// 无需编写 JavaScript 文件
```
后端 Python 文件:
```
from flask import Flask, jsonify, request
import pymysql
import json
from pyecharts import options as opts
from pyecharts.charts import Bar
app = Flask(__name__)
@app.route('/wildlife')
def wildlife():
# 获取请求参数
province = request.args.get('province')
# 连接 MySQL 数据库
conn = pymysql.connect(host='localhost', port=3306, user='root', password='password', database='wildlife')
cursor = conn.cursor()
# 查询野生动物列表
sql = "SELECT animal_name FROM wildlife WHERE province = %s"
cursor.execute(sql, province)
results = cursor.fetchall()
# 构造返回数据
data = []
for result in results:
data.append(result[0])
# 关闭数据库连接
cursor.close()
conn.close()
# 生成图表
chart_data = {}
chart_data['name'] = province
chart_data['data'] = []
for result in results:
chart_data['data'].append({'name': result[0], 'value': 1})
chart = Bar()
chart.add_xaxis([item['name'] for item in chart_data['data']])
chart.add_yaxis(series_name=chart_data['name'], y_axis=[item['value'] for item in chart_data['data']])
chart.set_global_opts(title_opts=opts.TitleOpts(title="野生动物分布图"))
chart.render('templates/chart.html')
# 返回数据
return jsonify(data)
if __name__ == '__main__':
app.run()
```
需要注意的是,为了让 pyecharts 在 Flask 中正常工作,需要将图表渲染到 HTML 文件中,然后在前端页面中加载该 HTML 文件,这里我将图表渲染到了 `templates/chart.html` 文件中。
阅读全文