百度地图之上多图层可标小红旗用python flask实例
时间: 2023-06-24 13:08:46 浏览: 212
首先,你需要注册百度地图开发者账号并创建自己的应用,然后获取到自己的AK(Access Key),才能够使用百度地图API。
接下来,你可以使用Python的Flask框架来搭建一个简单的Web应用来展示百度地图上的多图层,并且在地图上标记小红旗。
以下是一个简单的实例代码:
```python
from flask import Flask, render_template
import random
app = Flask(__name__)
# 百度地图API的AK
AK = 'your_access_key'
# 随机生成一些坐标
locations = [(random.uniform(116.3, 116.6), random.uniform(39.9, 40.2)) for _ in range(10)]
# 地图页面
@app.route('/')
def index():
# 生成地图的JavaScript代码
map_js = '''
<script src="http://api.map.baidu.com/api?v=2.0&ak=%s"></script>
<div id="map" style="height: 600px;"></div>
<script>
var map = new BMap.Map("map");
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);
map.enableScrollWheelZoom(true);
// 添加多个图层
var tileLayer = new BMap.TileLayer();
tileLayer.getTilesUrl = function(tileCoord, zoom) {
var x = tileCoord.x;
var y = tileCoord.y;
return "http://tile.openstreetmap.org/" + zoom + "/" + x + "/" + y + ".png";
}
map.addTileLayer(tileLayer);
// 在地图上标记小红旗
%s
</script>
''' % (AK, generate_markers_js(locations))
return render_template('map.html', map_js=map_js)
# 生成标记小红旗的JavaScript代码
def generate_markers_js(locations):
markers_js = ''
for loc in locations:
markers_js += 'var marker = new BMap.Marker(new BMap.Point(%f, %f)); map.addOverlay(marker);\n' % loc
return markers_js
if __name__ == '__main__':
app.run()
```
这个实例代码中,我们使用了Flask框架来搭建一个Web应用,其中`index()`函数是我们的主页面,它会生成一个包含百度地图的JavaScript代码的HTML页面。
在这个JavaScript代码中,我们首先使用百度地图API的AK来初始化地图,并且添加了一个OpenStreetMap的图层,然后使用`generate_markers_js()`函数生成了一些坐标,并在地图上标记了小红旗。
最后,我们使用`render_template()`函数将生成的HTML页面返回给浏览器展示。