1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > php 百度地图api获取经纬度 调用百度地图API接口获取地铁站的经纬度信息

php 百度地图api获取经纬度 调用百度地图API接口获取地铁站的经纬度信息

时间:2024-01-15 07:48:28

相关推荐

php 百度地图api获取经纬度 调用百度地图API接口获取地铁站的经纬度信息

今天我们来看一下,如何通过百地图API来获取地点的经纬度。首先百度地图提供了强大的API接口,我们可以通过调用它来实现目的。这是网址:/。首先想要调用API接口,先要注册账号,注册成功后,会有一个开发者认证,输入邮箱,手机号就可以了。认证通过之后呢,我们就可以创建应用来获取AK了。AK就是调用API接口的凭证。打开控制台,点击创建应用,在应用类型那选择浏览器端,因为我们要通过浏览器来获取嘛,界面应该就是下面的样子。

填完之后呢,在我的应用里会出现你刚刚设置的,复制一下AK,一会儿用的到。好了,准备工作基本上就完成了,下面我们就可以去调用API了。我们先来获取北京地铁1号线的所有站点,通过一个简单的爬虫程序就可以搞定。from bs4 import BeautifulSoupfrom urllib.request import urlopencity_subway = {}url = "/item/%E5%8C%97%E4%BA%AC%E5%9C%B0%E9%93%811%E5%8F%B7%E7%BA%BF"def subway_station_1(subway,url):bsObj_1 = BeautifulSoup(urlopen(url).read())for i in bsObj_1.find_all("table"):if i.find().text == subway + "首末车时刻表":station_list = []for tr in i.find_all("tr"):for td in tr.find_all("td"):if (td.get("colspan") == "1" and td.get("rowspan") == "1"):station = td.get_text()station_list.append(station)city_subway[subway] = station_listreturn city_subway这样我们就得到了一个city_subway的字典,里面包含着地铁一号线的各种信息。{"北京地铁1号线":["苹果园","古城","八角游乐园","八宝山","玉泉路","五棵松","万寿路","公主坟","军事博物馆","木樨地","南礼士路","复兴门","西单","天安门西","天安门东","王府井","东单","建国门","永安里","国贸","大望路","四惠","四惠东"]}接下来,我们就来获取每个站点的经纬度。百度地图已经给出了参考文档,我们根据这个文档来做就行。网址是/index.php?title=webapi/guide/webservice-geocoding。它给出了一个url,这个url就可以返回我们想要的经纬度信息。如下所示:

我们只需要获取上面这个页面就可以了,address=后面加上我们想要查询的地址,ak=后面加上刚刚申请好的AK。import requestsimport restation_long_lat = {}pathen = pile(r""lng":(\d+.\d+),"lat":(\d+.\d+)")for station in city_subway.values():for line in station:api_url="http://api./geocoding/v3/address="+line_name+line+"&output=json&city=北京市&ak=换成你的&callback=showLocation"r = requests.get(api_url).textlng,lat = pathen.findall(r)[0]station_long_lat[line] = (float(lng),float(lat))然后我们就可以得到站点的经纬度了。{"苹果园": (116.18963446946083, 39.934641008155275),"古城": (116.500019005, 39.91496364870823),"八角游乐园": (116.2188417158, 39.91306522416191),"八宝山": (116.2250072350697, 39.91305851389836),"玉泉路": (116.500019005, 39.91496364870823),"五棵松": (116.27795244196295, 39.916132266625176),"万寿路": (116.28651600994891, 39.91380009777728),"公主坟": (116.500019005, 39.91496364870823),"军事博物馆": (116.33078176654712, 39.91560053332307),"木樨地": (116.500019005, 39.91496364870823),"南礼士路": (116.500019005, 39.91496364870823),"复兴门": (116.500019005, 39.91496364870823),"西单": (116.500019005, 39.91496364870823),"天安门西": (116.500019005, 39.91496364870823),"天安门东": (116.500019005, 39.91496364870823),"王府井": (116.500019005, 39.91496364870823),"东单": (116.500019005, 39.91496364870823),"建国门": (116.44226799215203, 39.91453005191511),"永安里": (116.45905573752259, 39.910516038804346),"国贸": (116.46783149874459, 39.91879959387437),"大望路": (116.46116905872637, 39.914107935722996),"四惠": (116.51463108233885, 39.91166587774982),"四惠东": (116.52252188776905, 39.91423992513861)}是不是很简单,很方便。下面我来说一下我刚开始用的时候遇到的问题,给大家个参考。

1.如果你直接用在notebook中用requests.get(api_url),会返回,看到这个不要觉得是哪里有问题了,这是正常的。我们可以获取它的文本就好。

2.为什么我在address=后面加了一个line_name+line,这个line_name就是北京地铁1号线。因为之前我直接加站名的话,有时候会出现定位不准的情况,所以加上路线名会更准确。

这就是全部的内容了,如果有什么错误的话,欢迎给我留言,互相学习!

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