关键词:
教你如何拔取百度地图POI兴趣点
通过聚合数据提供的接口,获取百度地图的POI兴趣点,并存储至数据库中。
实现:
1、聚合数据百度POI接口说明
调用聚合数据,首先得注册聚合。聚合数据提供的百度地图POI的接口有三个:数据分类,查询数据和获取周边数据。想要获取百度POI兴趣点,涉及到的接口为数据分类,查询数据。
a、数据分类
名称 | 类型 | 必填 | 说明 | |
key | string | 是 | 应用APPKEY(应用详细页查询) | |
fid | string | 否 | 分类父ID,默认空,即全部分类,否则返回指定分类下的子类 | |
dtype | string | 否 | 返回数据的格式,xml或json,默认json |
名称 | 类型 | 说明 | |
error_code | int | 返回码 | |
reason | string | 返回说明 | |
result | - | 返回结果集 | |
id | int | 分类ID | |
name | string | 分类名称 | |
fid | int | 父类ID,0则为一级分类 |
{ "resultcode":"200", "reason":"Return Successd!", "result":[ { "id":"17", "name":"中式快餐", "fid":"1" }, { "id":"18", "name":"中餐馆", "fid":"1" }, { "id":"19", "name":"休闲餐饮", "fid":"1" }, { "id":"20", "name":"日韩式料理", "fid":"1" }, { "id":"21", "name":"西餐厅", "fid":"1" }, { "id":"22", "name":"西式快餐", "fid":"1" }, { "id":"33", "name":"东南亚菜", "fid":"1" } ] }
b、查询数据
名称 | 类型 | 必填 | 说明 | |
city | string | 是 | 城市的名称,如:上海市 | |
cid | int | 否 | 分类ID,可从分类接口获取到,默认全部 | |
keyword | string | 否 | 名称包含的关键字 | |
page | string | 否 | 页数,默认第一页 最大50. | |
pnums | int | 否 | 每次返回数据数目,默认20,最大20 | |
key | string | 是 | 应用APPKEY(应用详细页查询) | |
dtype | string | 否 | 返回数据的格式,xml或json,默认json |
名称 | 类型 | 说明 | |
error_code | int | 返回码 | |
reason | string | 返回说明 | |
data | - | 返回结果集 | |
id | INT | 餐厅的标识符 | |
name | string | 餐厅名称 | |
province | string | 省份 | |
city | string | 城市 | |
address | string | 详细地址 | |
phoneNumber | string | 联系电话 | |
tags | string | 标签 | |
type1 | INT | 所属一级分类ID | |
type2 | int | 所属二级分类ID | |
tag | string | 商圈 | |
lng | string | 经度(适合百度地图) | |
lat | string | 纬度 | |
pageinfo | - | - | |
nums | int | 记录总数 | |
pnums | int | 每页显示条数 | |
current | int | 当前页 | |
pageall | int | 总页数 |
{ "resultcode":"200", "reason":"Return Successd!", "result":{ "data":[ { "id":"493567", "title":"生良饭店", "province":"上海市", "city":"上海市", "address":"上海市", "tags":"餐饮", "type1":"1", "type2":"0", "tag":"", "lng":"121.375458", "lat":"31.794554" }, { "id":"493568", "title":"永兴饭店", "province":"上海市", "city":"上海市", "address":"上海市", "tags":"餐饮", "type1":"1", "type2":"0", "tag":"", "lng":"121.421982", "lat":"31.767340" }, { "id":"493569", "title":"猛东饭店", "province":"上海市", "city":"上海市", "address":"庙镇镇合作社区竖星路210号", "tags":"餐饮", "type1":"1", "type2":"0", "tag":"小吃", "lng":"121.372307", "lat":"31.747095" }, { "id":"493570", "title":"百顺酒家", "province":"上海市", "city":"上海市", "address":"宏海公路2010", "tags":"餐饮,中餐馆", "type1":"1", "type2":"18", "tag":"", "lng":"121.352936", "lat":"31.720875" }, { "id":"493571", "title":"群丰酒楼", "province":"上海市", "city":"上海市", "address":"上海市", "tags":"餐饮", "type1":"1", "type2":"0", "tag":"", "lng":"121.354179", "lat":"31.720181" } ], "pageinfo":{ "nums":93720, "pnums":"5", "current":"2", "pageall":18744 } } }
根据提供的接口,获取数据全部分类的地址为:
http://apis.juhe.cn/baidu/getCategory?key=您的key&dtype=json
为方便使用,我将返回的数据整理成了表格形式,如下:
id | fid | name |
1 | 0 | 餐饮 |
2 | 0 | 汽车服务 |
3 | 0 | 地产小区 |
4 | 0 | 公司企业 |
5 | 0 | 宾馆 |
6 | 0 | 金融 |
7 | 0 | 交通设施 |
8 | 0 | 教育 |
9 | 0 | 生活服务 |
10 | 0 | 旅游景点 |
11 | 0 | 名称标注类 |
12 | 0 | 购物 |
13 | 0 | 休闲娱乐 |
14 | 0 | 行政地标 |
15 | 0 | 政府机构 |
16 | 0 | 医疗 |
17 | 1 | 中式快餐 |
18 | 1 | 中餐馆 |
19 | 1 | 休闲餐饮 |
20 | 1 | 日韩式料理 |
21 | 1 | 西餐厅 |
22 | 1 | 西式快餐 |
23 | 13 | 洗浴按摩 |
24 | 13 | 歌舞厅/夜总会/娱乐城 |
25 | 12 | 批发市场/集市 |
26 | 12 | 电器商场 |
27 | 7 | 停车场/停车区 |
28 | 15 | 党派团体 |
29 | 13 | ktv |
30 | 5 | 星级宾馆酒店 |
31 | 9 | 便利店 |
32 | 15 | 机关单位 |
33 | 1 | 东南亚菜 |
34 | 4 | 厂矿 |
35 | 13 | 度假村/度假区 |
36 | 4 | 运输 |
37 | 7 | 飞机场 |
38 | 8 | 培训机构 |
39 | 8 | 高等教育 |
40 | 6 | 银行 |
41 | 4 | 物业管理 |
42 | 13 | 文化馆/文化宫/活动中心 |
43 | 5 | 旅店 |
44 | 3 | 小区/楼盘 |
45 | 4 | 文化媒体 |
46 | 12 | 综合商场/购物中心 |
47 | 13 | 休闲广场 |
48 | 13 | 体育场馆 |
49 | 4 | 职业介绍/人才交流 |
50 | 6 | 证券公司 |
51 | 16 | 综合医院 |
52 | 9 | 美容美发 |
53 | 9 | 邮局 |
54 | 13 | 健身中心 |
55 | 8 | 初等教育(小学) |
56 | 15 | 福利机构 |
57 | 14 | 村庄 |
58 | 8 | 学前教育 |
59 | 12 | 家居建材 |
60 | 8 | 中等教育 |
61 | 12 | 烟酒茶叶 |
62 | 5 | 招待所 |
63 | 7 | 公交车站 |
64 | 7 | 地铁/轻轨 |
65 | 3 | 售楼处 |
66 | 9 | 洗衣/干洗 |
67 | 2 | 汽车配件/装饰 |
68 | 4 | 旅行社 |
69 | 8 | 科研机构/教育 |
70 | 5 | 连锁快捷酒店 |
71 | 9 | 摄影冲印 |
72 | 6 | 保险公司 |
73 | 12 | 服装鞋帽 |
74 | 10 | 风景区/旅游区 |
75 | 12 | 超市 |
76 | 16 | 社区医疗/诊所/卫生所 |
77 | 6 | atm |
78 | 6 | 农村信用社/城市信用社 |
79 | 2 | 汽车维修/养护/洗车 |
80 | 10 | 公园 |
81 | 4 | 公用事业 |
82 | 4 | 高新科技 |
83 | 12 | 文化办公 |
84 | 12 | 钟表眼镜 |
85 | 4 | 事务所 |
86 | 7 | 出入口 |
87 | 9 | 房屋租售中介 |
88 | 4 | 农林园艺 |
89 | 15 | 各级政府 |
90 | 12 | 珠宝饰品 |
91 | 12 | 礼品花卉 |
92 | 6 | 投资公司 |
93 | 14 | 乡镇 |
94 | 6 | 典当/当铺 |
95 | 4 | 婚介婚庆 |
96 | 4 | 新闻出版 |
97 | 10 | 美术馆/艺术馆 |
98 | 13 | 图书馆 |
99 | 4 | 工商业区 |
100 | 12 | 文物古玩 |
101 | 12 | 电子数码 |
102 | 7 | 交叉路口 |
103 | 10 | 博物馆 |
104 | 4 | 保安 |
105 | 16 | 药店/药房 |
106 | 9 | 彩票发行 |
107 | 13 | 迪吧 |
108 | 13 | 电影院 |
109 | 4 | 电信公司 |
110 | 10 | 展览馆/纪念馆 |
111 | 15 | 公检法机构 |
112 | 9 | 售票处 |
113 | 4 | 建筑装修 |
114 | 2 | 4s/汽车销售 |
115 | 2 | 汽车检验场 |
116 | 2 | 驾校 |
117 | 2 | 汽车租赁 |
118 | 7 | 长途汽车站 |
119 | 7 | 出租车站 |
120 | 9 | 电信营业厅 |
121 | 12 | 图书音像 |
122 | 4 | 高科技园区 |
123 | 13 | 网吧 |
124 | 7 | 加油站 |
125 | 7 | 火车站 |
126 | 16 | 医疗保健 |
127 | 15 | 涉外机构 |
128 | 9 | 家政服务 |
129 | 7 | 服务区 |
130 | 9 | 文印图文 |
131 | 12 | 母婴儿童 |
132 | 12 | 体育户外 |
133 | 12 | 摄影器材 |
134 | 9 | 家电维修 |
135 | 3 | 别墅 |
136 | 4 | 房地产开发 |
137 | 4 | 殡葬 |
138 | 4 | 出国留学 |
139 | 9 | 公厕 |
140 | 9 | 搬家 |
141 | 15 | 驻地机构 |
142 | 10 | 游乐园 |
143 | 13 | diy手工 |
144 | 13 | 音乐厅 |
145 | 7 | 港口/码头 |
146 | 9 | 送水 |
147 | 9 | 报亭 |
148 | 10 | 文物古迹 |
149 | 10 | 动物园 |
150 | 10 | 植物园 |
151 | 10 | 教堂 |
152 | 13 | 剧院 |
153 | 11 | 道路名称 |
154 | 10 | 水族馆 |
155 | 7 | 桥 |
156 | 13 | 电子游戏 |
157 | 16 | 私人诊所 |
158 | 5 | 青年旅舍 |
159 | 15 | 中央机构 |
160 | 7 | 收费处/收费站 |
161 | 7 | 环岛 |
162 | 7 | 红绿灯 |
163 | 10 | 科技馆 |
164 | 4 | 教育 |
165 | 12 | 箱包日用 |
166 | 14 | 区县 |
167 | 14 | 地级市 |
168 | 14 | 商圈 |
169 | 16 | 专科医院 |
170 | 9 | 宠物 |
171 | 16 | 急救中心 |
172 | 16 | 下属科室机构 |
173 | 16 | 防疫站 |
174 | 16 | 中医医院 |
175 | 16 | 职工医院 |
3、获取POI
根据提供的接口,获取POI的地址为:
http://apis.juhe.cn/baidu/getData?key=您的key&dtype=json&city=北京市&page=1&cid=1
其中:
city:城市名称;
page:当前页;
cid:获取到的数据分类的id
为了能将获取到的数据保存下来,用java+oracle写了一段小程序,实现了数据的获取与保存。
a、数据库表
根据获取到的json数据,建立表BDPOI,表结构设计如下:
b、获取并保存数据
package com.lzugis.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.sql.SQLException; import com.lzugis.db.ConOrcl; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class GetPoiData { public static void main(String[] args) throws SQLException { String poiUrl = "http://apis.juhe.cn/baidu/getData"; String poiParam = "key=7ea83e6f1e025782c47229b49865111b&dtype=json&city=北京市"+ "&page="+1+"&cid=1"; String poiResult = SendGET(poiUrl,poiParam); JSONObject poiJson = JSONObject.fromObject(poiResult); System.out.println(poiJson); int pageAll = poiJson.getJSONObject("result").getJSONObject("pageinfo").getInt("pageall"); for(int i=0;i<pageAll;i++){ System.out.println("—————————————————————————————————————————————"); System.out.println("第"+(i+1)+"页"); String poiParam = "key=7ea83e6f1e025782c47229b49865111b&dtype=json&city=北京市"+ "&page="+(i+1)+"&cid=1"; String poiResult = SendGET(poiUrl,poiParam); JSONObject poiJson = JSONObject.fromObject(poiResult); JSONArray data = poiJson.getJSONObject("result").getJSONArray("data"); int size = data.size(); for(int j=0;j<size;j++){ JSONObject item = data.getJSONObject(j); //id,title,addr,pro,city,tags,ty1,ty2,lng,lat String sql = "insert into bdpoi values(‘"+item.getString("id")+"‘,‘" +item.getString("title")+"‘,‘" +item.getString("address")+"‘,‘" +item.getString("province")+"‘,‘" +item.getString("city")+"‘,‘" +item.getString("tags")+"‘," +item.getInt("type1")+"," +item.getInt("type2")+"," +item.getDouble("lng")+"," +item.getDouble("lat")+")"; System.out.println(" "+sql); ConOrcl.runSql(sql); } } } public static String SendGET(String url,String param){ String result="";//访问返回结果 BufferedReader read=null;//读取访问结果 try { //创建url URL realurl=new URL(url+"?"+param); //打开连接 URLConnection connection=realurl.openConnection(); // 设置通用的请求属性 connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); //建立连接 connection.connect(); // 定义 BufferedReader输入流来读取URL的响应 read = new BufferedReader(new InputStreamReader( connection.getInputStream(),"UTF-8")); String line;//循环读取 while ((line = read.readLine()) != null) { result += line; } } catch (IOException e) { e.printStackTrace(); } finally{ if(read!=null){//关闭流 try { read.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } }
这样,就将百度地图的POI数据获取并保存了下来。
注:聚合数据是有请求次数限制的,想获取更多的话就自己想办法掏钱吧!
如何运用百度地图weburiapi
参考技术A1. 功能介绍开发者只需按照URIAPI接口规范构造一条标准的URI,便可在PC&移动浏览器端或者移动开发应用中直接调起百度地图产品(如百度web地图、百度地图客户端)进行地图显示或检索、线路查询、导航等功能,满足... 查看详情
获取当前在 GoogleMap 上可见的 POI(兴趣点)列表?
...34:33【问题描述】:使用GoogleMapsSDK,是否可以获得当前在地图上作为“图标”可见的所有POI的列表?我知道我可以使用PlacesAPI来做类似的事情,但就我而言,我真的只想获得目前在用户屏 查看详情
与谷歌地图上的兴趣点互动
】与谷歌地图上的兴趣点互动【英文标题】:InteractwithPointsofInterestonGoogleMaps【发布时间】:2020-01-1000:35:28【问题描述】:我正在使用MapsApi开发AndroidStudio。在显示的地图上,有谷歌已经放置的标记(见下图)。有没有办法通过点... 查看详情
OSMdroid 兴趣点
...做它。有没有人做过或知道一些很好的教程,其中解释了如何做?提前致谢!【问题讨论】:【参考方案1】:https://github.com/MKergall/ 查看详情
百度地图开发之poi检索,线路规划
...k/guide/key先去官方文档申请秘钥下载压缩文件等操作,参考百度地图的秘钥申请与sdk下载,显示地图(1)公交,步行,驾车路线查询,附近POI查询参考文档导入所需jar包和so文件 标注点,覆盖物的实现见官方文档 poi检索:1.首 查看详情
如何实现在h5里调起高德地图app?(上)
这一篇文章,将讲述如何在H5里调起高德地图APP,并展示兴趣点。适合于展示某个餐馆,商场等,让用户自行选择前往方式。场景一、在高德地图上展示Marker点或者POI标记在一些基于位置分享的应用开发中,我们会在地图上标记m... 查看详情
如何在 Flutter 中的 Google 地图上绘制多边形并获取其中的所有 POI?
】如何在Flutter中的Google地图上绘制多边形并获取其中的所有POI?【英文标题】:HowcanIdrawapolygononGooglemapsinFlutterandgetallPOIsinsideofit?【发布时间】:2019-06-1418:42:47【问题描述】:给定一组兴趣点,如何让Flutter应用的用户在Google地图... 查看详情
poi是啥如何使用
参考技术APOI 中国POI(PointofInterest)数据库 什么是POI? POI是“PointofInterest”的缩写,可以翻译成“兴趣点”吧,每个POI包含四方面信息,名称、类别、经度、纬度。 这个计划的远景目标是建立全国的POI数据库,并且... 查看详情
如何在百度地图中查看周边商家优惠信息呀
最近在最一个项目,需要有定位,和查找周边的功能,老总让我做查看周边商家优惠信息,我不知道怎么做,忘各位好心人帮忙解答图吧地图查找周边的餐馆、宾馆、商店、景点等兴趣点信息的速度相当的快,而且还很准确。建... 查看详情
GMaps API - 删除默认 POI
...emovedefaultPOI【发布时间】:2014-06-1621:29:28【问题描述】:如何通过始终呈现的API从谷歌地图中删除兴趣点?我的意思是这些点:http://j.mp/1ktcaeB我已经在几个网站上看到它被删除了,但我找不到如何去做。感谢您的建议。【问题... 查看详情
如何选择苹果默认兴趣点
】如何选择苹果默认兴趣点【英文标题】:Howtoselectappledefaultpointsofinterest【发布时间】:2017-01-2617:03:25【问题描述】:我有一个关于默认兴趣点的问题。我可以使用mapView.showsPointsOfInterest=true显示默认兴趣点但我无法点击/选择那... 查看详情
如何调用百度地图api
1.进入:http://dev.baidu.com/wiki/static/map/API/tool/creatMap/(创建地图-百度地图API所见即所得工具,百度官方地址,大家放心使用)切换城市,搜索需标注位置。(如下图:)设置地图:大家可以对网站显示地图的宽高进行设置,其余选... 查看详情
获取百度地图poi数据二(准备搜索关键词)
...数据需要准备尽可能多的搜索关键字 那么这些关键字如何得来呢? 本人使用的方法是通过一些网站来获取这些关键词 http://poi.mapbar.com/这个网站有全国各地的POI数据 对各个城市的POI数据都有归类 我便是... 查看详情
获取百度地图poi数据三(模拟关键词搜索)
上一篇博文中讲到如何获取用于搜索的关键词,并且已经准备好了一百五十万的关键词 这其中有门牌号码,餐馆酒店名称,公司名称,道路名称等。有了这些数据,我们就可以通过代码,模拟我们在百... 查看详情
在谷歌地图中做“沿途的兴趣点”
...有这些位置在一两英里内的路线他们将采取。问题是,我如何有效地获取从谷歌返回的“行车路线”信息(本质上是一组纬度/经度对) 查看详情
poi是啥意思
...wtouseJavatechnologyandtheApachePOItoreadfromEmployee_List.xls.本文演示如何使用Java技术和ApachePOI来读取Em 查看详情
如何利用百度地图获取一种类型poi的统计数据
参考技术A12345678/***根据中心点、半径和检索词发起周边检索*异步函数,返回结果在BMKPoiSearchDelegate的onGetPoiResult通知*@paramoption周边搜索的搜索参数类(BMKNearbySearchOption)*@paramindex页码,如果是第一次发起搜索,填0,根据返回的... 查看详情
如何在特定半径内的地图上显示点
】如何在特定半径内的地图上显示点【英文标题】:howtoshowpointsonamapwithinaspecificradius【发布时间】:2015-02-2002:33:53【问题描述】:我一直在寻找如何解决这个问题的明确方向。我正在考虑让用户能够使用特定半径(例如5、10、25... 查看详情