新增的poi点什么时候可以显示在百度地图poi上

转载请注明出处:
POI~~~ Point of Interest,翻译过来就是“兴趣点”。我们在使用地图的时候,搜索周边的ktv,饭店,或者宾馆的时候,输入关键字,然后地图展示给我们很多个点,这些点就是我需要的信息。这就是所谓的兴趣点,也就是一个普通的查询,然后结果的反馈罢了。
百度地图SDK提供了三种类型的POI检索:周边检索、区域检索和城市内检索。
还是从API看起。找到com.baidu.mapapi.search.poi程序包:
看到这个包中有一个回调接口,用于接收检索结果;PoiSearch类用于检索请求;PoiResult类表示搜索结果,相比它应该在OnGetPoiSearchResultListener这个接口的某个函数中最为参数~~
最后还有4个xxxOption参数类,分别对应周边检索、城市内检索、区域检索、poi详情检索。
PoiSearch :POI检索接口,是我们应该重点关注的类。
从api中可以看出,此类是一个静态类,构造方法被私有化处理,只能通过newInstance()获得实例。看到它的方法,就发现正好有4个方法对应上面四个检索参数类。
searchInBound()
PoiBoundSearchOption
城市内检索
searchInCity()
PoiCitySearchOption
searchInNearby()
PoiNearbySearchOption
searchPoiDetail()
PoiDetailSearchOption
实际上,详情检索与其他三种类型不算一类,它是在通过其他三种检索类型得到的结果在去查询得到详细的信息。
通过这几个类可以对不同的类型设置检索参数,下面看一下监听接口:
该接口有两个回调函数,一个用于接收返回的poi查询结果,一个用于接收返回的详情查询结果。而结果分别封装在PoiResult和PoiDetailResult这两个类中了。
PoiResult:
从这里可以看出,百度对检索结果进行了分页处理。所以在设置参数的时候,需要设置单页容量和页号。
// 实例化PoiSearch对象
poiSearch = PoiSearch.newInstance();
// 设置检索监听器
poiSearch.setOnGetPoiSearchResultListener(poiSearchListener);/**
* POI检索监听器
OnGetPoiSearchResultListener poiSearchListener = new OnGetPoiSearchResultListener() {
public void onGetPoiResult(PoiResult poiResult) {
if (poiResult == null
|| poiResult.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {// 没有找到检索结果
Toast.makeText(PoiSearchActivity.this, "未找到结果",
Toast.LENGTH_LONG).show();
if (poiResult.error == SearchResult.ERRORNO.NO_ERROR) {// 检索结果正常返回
bdMap.clear();
MyPoiOverlay poiOverlay = new MyPoiOverlay(bdMap);
poiOverlay.setData(poiResult);// 设置POI数据
bdMap.setOnMarkerClickListener(poiOverlay);
poiOverlay.addToMap();// 将所有的overlay添加到地图上
poiOverlay.zoomToSpan();
totalPage = poiResult.getTotalPageNum();// 获取总分页数
Toast.makeText(
PoiSearchActivity.this,
"总共查到" + poiResult.getTotalPoiNum() + "个兴趣点, 分为"
+ totalPage + "页", Toast.LENGTH_SHORT).show();
* 城市内搜索
private void citySearch(int page) {
// 设置检索参数
PoiCitySearchOption citySearchOption = new PoiCitySearchOption();
citySearchOption.city(editCityEt.getText().toString());// 城市
citySearchOption.keyword(editSearchKeyEt.getText().toString());// 关键字
citySearchOption.pageCapacity(15);// 默认每页10条
citySearchOption.pageNum(page);// 分页编号
// 发起检索请求
poiSearch.searchInCity(citySearchOption);
* 范围检索
private void boundSearch(int page) {
PoiBoundSearchOption boundSearchOption = new PoiBoundSearchOption();
LatLng southwest = new LatLng(latitude - 0.01, longitude - 0.012);// 西南
LatLng northeast = new LatLng(latitude + 0.01, longitude + 0.012);// 东北
LatLngBounds bounds = new LatLngBounds.Builder().include(southwest)
.include(northeast).build();// 得到一个地理范围对象
boundSearchOption.bound(bounds);// 设置poi检索范围
boundSearchOption.keyword(editSearchKeyEt.getText().toString());// 检索关键字
boundSearchOption.pageNum(page);
poiSearch.searchInBound(boundSearchOption);// 发起poi范围检索请求
* 附近检索
private void nearbySearch(int page) {
PoiNearbySearchOption nearbySearchOption = new PoiNearbySearchOption();
nearbySearchOption.location(new LatLng(latitude, longitude));
nearbySearchOption.keyword(editSearchKeyEt.getText().toString());
nearbySearchOption.radius(1000);// 检索半径,单位是米
nearbySearchOption.pageNum(page);
poiSearch.searchNearby(nearbySearchOption);// 发起附近检索请求
通过以上代码,就可以完成三种类型的检索,分组的时候只不过是改一下pageNum()参数。
查询出这一组组的结果之后,可以通过的方式显示在地图上。但是如果按照之前的添加覆盖物的方式进行添加的话,需要在得到的List&PoiInfo&中得到经纬度数据,然后循环构造出覆盖物对象,添加到地图上。
这样做未尝不可,但是百度提供了更简便的方式给我们。
打开com.baidu.mapapi.overlayutil这个包,看到有一个类用于显示poi的overlay。
从api中得知,该类已经实现了marker点击事件的接口了。我们在接口的毁掉函数onGetPoiResult()中得到了PoiResult对象,然后可以通过setData(PoiResult poiResult)这个方法设置poi数据显示在地图上。
API中说明onPoiClick(int i)可以覆写,这样我们可覆写此方法,当点击底图上覆盖物的时候查询POI详细信息。
class MyPoiOverlay extends PoiOverlay {
public MyPoiOverlay(BaiduMap arg0) {
super(arg0);
public boolean onPoiClick(int arg0) {
super.onPoiClick(arg0);
PoiInfo poiInfo = getPoiResult().getAllPoi().get(arg0);
// 检索poi详细信息
poiSearch.searchPoiDetail(new PoiDetailSearchOption()
.poiUid(poiInfo.uid));
PoiOverlay从OverlayManager这个类中继承了:
1. addToMap() -- 将所有overlay添加到地图上
2. removeFromMap() -- 将所有overlay从地图上移除
3. zoomToSpan() -- 缩放地图,使所有overlay都在合适的视野内
这样可以在返回poi结果的时候,把poi标注在地图上了:
if (poiResult.error == SearchResult.ERRORNO.NO_ERROR) {// 检索结果正常返回
bdMap.clear();
MyPoiOverlay poiOverlay = new MyPoiOverlay(bdMap);
poiOverlay.setData(poiResult);// 设置POI数据
bdMap.setOnMarkerClickListener(poiOverlay);
poiOverlay.addToMap();// 将所有的overlay添加到地图上
poiOverlay.zoomToSpan();
totalPage = poiResult.getTotalPageNum();// 获取总分页数
Toast.makeText(
PoiSearchActivity.this,
"总共查到" + poiResult.getTotalPoiNum() + "个兴趣点, 分为"
+ totalPage + "页", Toast.LENGTH_SHORT).show();
}当我们点击一个覆盖物的时候,去查询详细信息:
public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {
if (poiDetailResult.error != SearchResult.ERRORNO.NO_ERROR) {
Toast.makeText(PoiSearchActivity.this, "抱歉,未找到结果",
Toast.LENGTH_SHORT).show();
} else {// 正常返回结果的时候,此处可以获得很多相关信息
Toast.makeText(
PoiSearchActivity.this,
poiDetailResult.getName() + ": "
+ poiDetailResult.getAddress(),
Toast.LENGTH_LONG).show();
短串分享时指:用户查询得到的地理位置对应到一个url链接地址,百度将这种地址做短了,就俗称短串。我们可以把这个短传通过短信、邮箱或者第三方分享给其他用户,当其他用户可以点击短串可以打开手机上的百度地图客户端或者手机浏览器进行查看。
目前短串分享开放了【poi搜索结果分享】和【反向地理编码结果分享】。
打开com.baidu.mapapi.search.share这个包:
我们看到这个包结构与POI的包结构非常相似。按照之前的经验,可以猜想:ShareUrlSearch是用来发起短串检索请求的;2个xxxOption()方法用来对不同的请求类型设置参数的;onGetShareUrlResultListener是用来监听返回结果的;ShareUrlShare就是返回结果的包装类。
// 实例化共享URL查询接口对象
shareUrlSearch = ShareUrlSearch.newInstance();
// 设置共享URL结果监听函数
shareUrlSearch.setOnGetShareUrlResultListener(shareUrlResultListener);/**
* 短串检索监听器
OnGetShareUrlResultListener shareUrlResultListener = new OnGetShareUrlResultListener() {
public void onGetPoiDetailShareUrlResult(ShareUrlResult shareUrlResult) {
if (shareUrlResult.error != SearchResult.ERRORNO.NO_ERROR) {
Toast.makeText(PoiSearchActivity.this, "抱歉,未搜索到短串",
Toast.LENGTH_SHORT).show();
Toast.makeText(PoiSearchActivity.this, "poi详情分享url:" + shareUrlResult.getUrl(),
Toast.LENGTH_LONG).show();
public void onGetLocationShareUrlResult(ShareUrlResult shareUrlResult) {
if (shareUrlResult.error != SearchResult.ERRORNO.NO_ERROR) {
Toast.makeText(PoiSearchActivity.this, "抱歉,未搜索到短串",
Toast.LENGTH_SHORT).show();
Toast.makeText(PoiSearchActivity.this,
"请求位置信息分享url:" + shareUrlResult.getUrl(),
Toast.LENGTH_LONG).show();
};发起请求:
// 请求位置信息分享URL
shareUrlSearch.requestLocationShareUrl(new LocationShareURLOption()
.location(poiInfo.location).name("共享点名称").snippet("123"));
// 共享点位置 --- 共享点名称 --- 通过短URL调起客户端时作为附加信息显示在名称下面
//请求poi详情分享URL的时候参数xxxOption中只有一个uid
shareUrlSearch
.requestPoiDetailShareUrl(new PoiDetailShareURLOption()
.poiUid(poiInfo.uid));
在线建议查询
指根据关键词查询在线建议词。
实现方式与短串分享大同小异。代码就略了吧~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
百度地图开发(一)之初体验:
百度地图开发(二)之添加覆盖物+地理编码和反地理编码:
百度地图开发(三)之地图控制+定位:
关于百度地图poi检索不出数据,onGetPoiResult不执行(其他功能类似)
前两天需要百度周边地址检索功能,代码测试调试结束后实际可用了,没过两天测试提交检索不出数据。。然后就蛋疼。检查比对了svn代码没做过调整,如下:(结果逗比了 , 是百度校验key失效了。坑啊以前没发现...
Android百度地图(六):百度地图POI检索,行政区边界、公交、线路规划查询,地理编码介绍
上一篇文章介绍了百度鹰眼sdk监控进出围栏的功能,本篇将详细介绍百度地图中POI检索、公交查询、行政区边界坐标获取、两点之间的路径规划和地理编码(坐标和地址之间的转换)。
一 POI检索
android百度地图开发V4.5最新版(8)---POI搜索之周边搜索
这篇博客介绍周边搜索,全城搜索请看我的博文。
android百度地图开发V4.5最新版(7)---POI搜索之全城搜索
周边搜索主要做以下几件事情:
1:实现位置的定位功能。并且将...
百度地图POI检索实例
百度地图POI检索实例
(1)百度地图key和权限自己去参照百度地图文档
(2)布局文件:
1、activity_main.xml
Android百度地图开发POI(三)
百度地图开发POI开发
百度地图开发( 基于新版本V2_1_1)— 覆盖物(2)_Poi搜索结果图层(PoiOverlay)
继上一次讲到百度地图开发中的覆盖物,说到如何在地图上显示我的位置,现在,继续覆盖物的学习,这次是Poi搜索结果图层(PoiOverlay)。
Poi搜索结果图层(PoiOverlay)的学...
关于百度地图SDK Poi检索找不到PoiOverlay类的解决方法.
在接入百度SDK的过程中会下载百度的开发包BaiduLBS_AndroidSDK_Lib和示例代码BaiduLBS_AndroidSDK_Sample,一开始我用的jar包和so文件都是开发包的lib...
没有更多推荐了,如何下载百度地图中的矢量POI兴趣点如何下载百度地图中的矢量POI兴趣点水经注地图下载器百家号一、什么是POI兴趣点POI是“Point of Interest”的缩写,中文可以翻译为“兴趣点”。在地理信息系统中,一个POI可以是一栋房子、一个商铺、一个邮筒、一个公交站等。传统的地理信息采集方法需要地图测绘人员采用精密的测绘仪器去获取一个兴趣点的经纬度,然后再标记下来。正因为POI的采集是一个非常费时费事的工作,对一个地理信息系统来说,POI的数量在一定程度代表着整个系统的价值。每个POI包含四方面信息,名称、类别、经度、纬度,全面的POI讯息是丰富导航地图的必备资讯,及时的POI兴趣点能提醒用户路况的分支及周边建筑的详尽信息,也能方便导航中查到你所需要的各个地方,选择最为便捷和通畅的道路来进行路径规划,因此,导航地图POI多少状况直接影响到导航的好用程度。二、如何下载百度地图POI兴趣点百度地图是国内很常用的地图之一,POI兴趣点非常丰富详实,我们可以从以下几个步骤来下载百度地图的POI兴趣点,请确保你的万能地图下载器软件版本在X3.0build1620及以上。第一步:切换到矢量地图在地图类型中选择切换到“矢量地图”,如果没有该选项请选择“更多”可以加载,如下图所示。第二步:下载百度POI框选需要下载的范围,然后在范围中双击显示矢量下载对话框即可新建下载任务。在矢量下载对话框中选择需要下载的矢量数据类型,如餐饮、宾馆、购物、生活服务、旅游景点、休闲娱乐、医疗、汽车服务、交通设施、金融、商务大厦、地产小区、公司企业、道路和政府机构等,然后点击“查询”按钮可以下载框选范围内的POI兴趣点,并显示下载进度。下载的POI兴趣点结果会在列表中显示,如当前下载了15097个餐饮类的矢量POI兴趣点数据。由于万能地图下载器的用户越来越多,有时会因为下载POI的累计次数在一天之内超过300万次而导致无法下载,但用户可以通过自行申请百度Key并设置之后继续下载。百度Key的申请方法请参阅:http://www.rivermap.cn/docs/show-1863.html矢量POI兴趣点下载完成后,点击“确定”按钮会自动保存数据到本地并打开存储目录。可以保存的数据包括SHP/TXT/KML/KMZ/DXF/TAB等多种格式,这里以SHP格式为例。第三步:查看下载结果矢量文件需要用专业GIS软件打开才能显示,如ArcGIS、MapGIS或GlobalMapper等。在ArcMap中打开矢量POI兴趣点之后,默认显示效果如下图所示。右键单击图层名称,并选择“打开属性表”菜单可以查看矢量POI的属性数据。在属性表中,可以查看到每个矢量POI兴趣点的名称和地址属性。右键单击图层名称,并选择“属性”菜单可以打开“图层属性”对话框。在“图层属性”对话框中,选择“标注”功能项后,勾选“标注些图层中的要素”,并选择“标注字段”为“NAME”,最后点击“确定”可以进行对矢量POI兴趣点进行名称标注。设置标注之后,矢量POI兴趣点的名称会在地图中显示出来,由于数据点太多,标注的文本之间会有碰撞检测,因此只显示了部分标注。视图放大之后,会逐渐显示其它的标注内容,缩小视图之后会自动隐藏部分标注。矢量POI兴趣点数据也可以在GlobalMapper中打开,效果如下图所示。矢量POI兴趣点数据在视图中放大后,显示效果如下图所示。下载的shp文件可以用ArcGIS或GlobalMapper等专业软件打开查看,这里以GlobalMapper为例,打开后的浏览效果如下图所示。相关教程:百度地图Key的设置方法ArcGIS Desktop 10.2 安装与破解图文教程GlobalMapper破解汉化版下载安装图文教程本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。水经注地图下载器百家号最近更新:简介:软件产品数据处理地理信息系统研发服务。作者最新文章相关文章拒绝访问 | www.vipzhuanli.com | 百度云加速
请打开cookies.
此网站 (www.vipzhuanli.com) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(44f3bfb-ua98).
重新安装浏览器,或使用别的浏览器豆丁微信公众号
君,已阅读到文档的结尾了呢~~
suunto ambit2 r 2.0
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
suunto ambit2 r 2.0
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 百度地图poi 的文章

 

随机推荐