使用HTML,css,jQuery,Ajax,高德api,python,MySQL写一个功能,在前端搜索框搜索野生动物的名字,通过Ajax连接后端api接口,在后端用python连接数据库,获得野生动物对应的省份数据,返回到前端,前端将省份数据
时间: 2023-08-06 14:05:46 浏览: 161
显示在页面上,并在地图上显示该省份的位置。
首先,在HTML中创建一个搜索框和一个地图容器。
```html
<!DOCTYPE html>
<html>
<head>
<title>野生动物搜索</title>
<meta charset="utf-8">
<style type="text/css">
#map-container {
width: 100%;
height: 500px;
}
</style>
</head>
<body>
<input type="text" id="search-input">
<button id="search-button">搜索</button>
<div id="map-container"></div>
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="https://webapi.amap.com/maps?v=1.4.15&key=你的高德地图API密钥"></script>
<script src="./main.js"></script>
</body>
</html>
```
然后,在main.js中使用jQuery监听搜索按钮的点击事件,并通过Ajax请求后端api接口。
```javascript
$(function() {
var map = new AMap.Map('map-container', {
center: [116.397428, 39.90923],
zoom: 4
});
$('#search-button').click(function() {
var name = $('#search-input').val();
$.ajax({
url: '/api/wildlife',
type: 'get',
data: {
name: name
},
success: function(data) {
showProvince(data.province, map);
},
error: function() {
alert('搜索失败');
}
});
});
function showProvince(province, map) {
// 在地图上显示省份
}
});
```
在后端,使用python连接MySQL数据库,查询野生动物对应的省份数据,并返回给前端。
```python
from flask import Flask, jsonify, request
import pymysql
app = Flask(__name__)
@app.route('/api/wildlife')
def search_wildlife():
name = request.args.get('name')
conn = pymysql.connect(host='localhost', port=3306, user='root', password='123456', database='wildlife')
cursor = conn.cursor()
cursor.execute('SELECT province FROM wildlife WHERE name=%s', (name,))
result = cursor.fetchone()
cursor.close()
conn.close()
if result:
data = {
'province': result[0]
}
return jsonify(data)
else:
return jsonify({})
if __name__ == '__main__':
app.run()
```
最后,在showProvince函数中使用高德地图API,在地图上显示省份。
```javascript
function showProvince(province, map) {
// 在地图上显示省份
AMap.service('AMap.Geocoder', function() {
var geocoder = new AMap.Geocoder();
geocoder.getLocation(province, function(status, result) {
if (status === 'complete' && result.geocodes.length) {
var lnglat = result.geocodes[0].location;
map.setCenter(lnglat);
var marker = new AMap.Marker({
position: lnglat,
map: map
});
} else {
alert('获取位置失败');
}
});
});
}
```
这样,当用户在搜索框中输入野生动物的名字并点击搜索按钮时,就会通过Ajax请求后端api接口获取野生动物对应的省份数据,然后在地图上显示该省份的位置。
阅读全文