1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【python】python利用百度地图API:获取经纬度 地图撒点

【python】python利用百度地图API:获取经纬度 地图撒点

时间:2023-04-27 07:18:32

相关推荐

【python】python利用百度地图API:获取经纬度 地图撒点

本文目的:

python通过百度地图API,获取所给地址的经纬度,并且在百度地图上进行撒点。

另:百度地图API功能强大,如:

GPS功能(单个点沿线运动)、

信息窗口示例(添加纯文字的信息窗口)、

JavaScript API GL v.10(轨迹视角动画)

这些后续都能够用到。

进入正题

项目整体思路:

第一步:申请百度地图AK

地址:/apiconsole/key

如图:

第二步:获取经纬度等

import pandas as pdimport jsonimport requests#获取经纬度def getlnglat(address): #从本地的xlsx文件中获取商圈名称,作为此函数的实参output = 'json'ak = '您的秘钥' # 百度地图密钥ak,“控制台”-“应用管理”-“我的应用”-“创建应用”-“命名、*”提交后会生成AKurl = 'http://api./geocoding/v3/?address={0}&output={1}&ak={2}'.format(address,output,ak)print(url)html = requests.get(url=url)html = html.texttemp = json.loads(html, strict=False)lat = temp['result']['location']['lat']lng = temp['result']['location']['lng']return lat, lng #纬度 latitude,经度 longitudedef re_html(data): #生成HTML适配的格式data_html = pd.DataFrame(columns=['content']) #建立一个列名为content的dataframe对象for indexs in data.index: #重新整理成html里适配的格式data_html.loc[indexs, 'content'] = '{' + \'"lat":' + str(data.loc[indexs, '纬度']) + ',' + \'"lng":' + str(data.loc[indexs, '经度']) + ',' + \'"address":' + '"' + str(data.loc[indexs, 'MC']) + '"' + \'}' + ','data_html.to_csv("data_html.csv", encoding="gbk")#相对路径,生成了该csv文件if __name__ == '__main__':data = pd.read_excel('address.xlsx')for index in data.index: #index为data的序号,从0开始get_location = getlnglat(data.loc[index, 'MC']) #通过序号进行索引,获得MC列下对应的地址名称lat = get_location[0]lng = get_location[1]data.loc[index, '纬度'] = latdata.loc[index, '经度'] = lngprint(data)re_html(data)

第三步:找到“加载海量点”

地址:/jsdemo.htm#c1_19

如图:

将官网的demo复制下来,然后修改配置,如下修改了两处:

ak;将第二步csv文件中的内容复制到points中

详细代码:

<!DOCTYPE HTML><html><head><title>加载海量点</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"><style type="text/css">html,body{margin:0;width:100%;height:100%;background:#ffffff;}#map{width:100%;height:100%;}#panel {position: absolute;top:30px;left:10px;z-index: 999;color: #fff;}#login{position:absolute;width:300px;height:40px;left:50%;top:50%;margin:-40px 0 0 -150px;}#login input[type=password]{width:200px;height:30px;padding:3px;line-height:30px;border:1px solid #000;}#login input[type=submit]{width:80px;height:38px;display:inline-block;line-height:38px;}</style><script type="text/javascript" src="//api./api?v=2.0&ak=您的密钥"></script><script type="text/javascript" src="/jsdemo/data/points-sample-data.js"></script></head><body><div id="map"></div><script type="text/javascript">var map = new BMap.Map("map", {});// 创建Map实例map.centerAndZoom(new BMap.Point(120.725285, 31.303446), 10);// 初始化地图,设置中心点坐标和地图级别【中心点的值设置为苏州。地图级别值设置越大,地图就放大】map.enableScrollWheelZoom(); //启用滚轮放大缩小if (document.createElement('canvas').getContext) {// 判断当前浏览器是否支持绘制海量点var points = [{"lat":31.322265852172226,"lng":120.68438002906036,"address":"苏州中心"},{"lat":31.323270951670413,"lng":120.66351733274388,"address":"苏州市工业园区印象城"},{"lat":23.072928527383194,"lng":113.28558235115376,"address":"美罗百货(观前店)"},{"lat":31.326145447116968,"lng":120.72068765133209,"address":"苏州市工业园区圆融时代广场"},{"lat":31.303446751329332,"lng":120.7252852687627,"address":"苏州市工业园区邻瑞广场"},{"lat":31.63212125680224,"lng":120.74279593806872,"address":"诚品生活苏州"},{"lat":31.296203055436283,"lng":120.63059731038081,"address":"苏州市泰华商城"},{"lat":31.288771019970895,"lng":120.67844016353672,"address":"苏州市工业园区双湖广场"},{"lat":31.324684997959398,"lng":120.72068459709335,"address":"苏州市工业园区圆融星座"},{"lat":31.310377509583137,"lng":120.65955077493402,"address":"苏州市万科美好广场"},{"lat":31.32171806722683,"lng":120.67155581959992,"address":"苏州市工业园区天虹(金鸡湖店)"}]; // 添加海量点数据<!--for (var i = 0; i < data.data.length; i++) {--><!--points.push(new BMap.Point(data.data[i][0], data.data[i][1]));--><!--}-->var options = {size: BMAP_POINT_SIZE_SMALL,shape: BMAP_POINT_SHAPE_STAR,color: '#d340c3'}var pointCollection = new BMap.PointCollection(points, options); // 初始化PointCollectionpointCollection.addEventListener('click', function (e) {alert('单击点的坐标为:' + e.point.lng + ',' + e.point.lat); // 监听点击事件});map.addOverlay(pointCollection); // 添加Overlay} else {alert('请在chrome、safari、IE8+以上浏览器查看本示例');}</script></body></html>

后记:

根据需求有三点需要改进:

地图上画饼图;地图上的“标注”的颜色、格式、多重格式并存;点击“标注”显示详细信息。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。