百度地图api poi检索poi检索会限制手机吗

百度地图的检索功能,这个方法不知道怎么用,希望可以帮忙解决下,谢谢 - 开源中国社区
当前访客身份:游客 [
当前位置:
你好,想跟你请教个问题:
- (BOOL)poiSearchInbounds:(BMKBoundSearchOption*)option
这个方法你是怎么用的?
共有1个答案
<span class="a_vote_num" id="a_vote_num_
根据范围和检索词发起范围检索 异步函数,返回结果在BMKPoiSearchDelegate的onGetPoiResult通知
范围搜索的搜索参数类(BMKBoundSearchOption)
返回成功返回YES,否则返回NO
--- 共有 1 条评论 ---
我没太理解,,我的qq,麻烦加一下,谢谢
(1年前)&nbsp&
更多开发者职位上
有什么技术问题吗?
类似的话题【“零起点”--百度地图手机SDK】如何进行三种POI搜索? - 推酷
【“零起点”--百度地图手机SDK】如何进行三种POI搜索?
摘要:POI即关键兴趣点,比如人民大学、新世界华联、306医院、沙县小吃、百度大厦,这些都是POI点。百度地图SDK查询POI有三种接口,分别是城市内搜索
、周边搜索
、范围搜索
。其中周边和范围搜索还分别有多关键搜索,支持1-10个多关键词。
----------------------------------------------------------------------
系列阅读:
1、【百度地图-安卓SDK】从头开始写android程序
2、【“零起点”--百度地图手机SDK】如何创建一张地图
3、【“零起点”--百度地图手机SDK】如何使用离线地图?
4、【“零起点”--百度地图手机SDK】如何添加地图图层+按钮事件+水平垂直布局?
-----------------------------------------------------------------------
一、选择一个POI搜索接口
官网的类参考上有全部接口的说明:
以范围检索为例,我们查询一个矩形范围内的味多美有多少。
第一个参数是关键词,这里写的是味多美。
第二个参数,是矩形的左下角坐标。第三个参数,是矩形右上角坐标。
取坐标的可视化工具:
myMKSearch.poiSearchInbounds(&味多美&,new GeoPoint((int) (39.863116 * 1E6), (int) (116.199024 * 1E6)),new GeoPoint((int) (39.90298 * 1E6), (int) (116.338728 * 1E6)));
二、初始化
需要申明变量,然后初始化搜索接口。
/** 写在activity里面顶部 **/
MKSearch myMKSearch = null;
//POI搜索变量申明
/** 写在oncreate里面 **/
myMKSearch = new MKSearch();
//初始化。
三、设置回调函数
onGetPoiResult是POI搜索的回调函数。在里面设置了,如果查询到结果,就将结果添加到地图上。
myMKSearch.init(mBMapMan, new MKSearchListener(){
public void onGetPoiResult(MKPoiResult result, int type, int iError) {
if (result == null) {
PoiOverlay poioverlay = new PoiOverlay(SearchPOIActivity.this, mMapView);
poioverlay.setData(result.getAllPoi());
mMapView.getOverlays().add(poioverlay);
       
不过,觉得百度地图SDK在这里有个很奇怪的地方。我明明只使用POI搜索啊,可是在回调函数里,必须要写出公交、驾车等的回调函数,即使是空的,也必须写,不然就会报错。如下图:
1、把驾车回调函数注释了,就报错
2、必须要将其他回调函数代码补齐,才不报错。(总觉得,这个有点儿不合理……)
四、效果图
五、其他POI搜索接口
以下三个接口,选一个写就可以了。
//1、城市poi检索
myMKSearch.poiSearchInCity(&北京&, &德庄火锅&);
//2、根据范围和检索词发起范围检索|多关键词poiMultiSearchInbounds
myMKSearch.poiSearchInbounds(&味多美&,new GeoPoint((int) (39.863116 * 1E6), (int) (116.199024 * 1E6)),new GeoPoint((int) (39.90298 * 1E6), (int) (116.338728 * 1E6)));
//3、中心点5000米内的KFC有多少|多关键词poiMultiSearchNearBy
myMKSearch.poiSearchNearBy(&KFC&, new GeoPoint((int) (39.920 * 1E6), (int) (116.410 * 1E6)), 5000);
六、关于布局
这个教程的布局和上一个教程保持不变,我就把按钮的layout注释了。
布局的详细代码可以参见上一个教程~
七、全部源代码
package com.baidu.
import android.app.A
import android.os.B
/** 引入类 **/
import java.util.ArrayL
import java.util.L
import android.content.C
import android.graphics.C
import android.graphics.P
import android.graphics.P
import android.graphics.drawable.D
import android.location.L
import android.os.B
import android.util.L
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import android.widget.T
import com.baidu.mapapi.BMapM
import com.baidu.mapapi.GeoP
import com.baidu.mapapi.ItemizedO
import com.baidu.mapapi.LocationL
import com.baidu.mapapi.MKAddrI
import com.baidu.mapapi.MKBusLineR
import com.baidu.mapapi.MKDrivingRouteR
import com.baidu.mapapi.MKGeneralL
import com.baidu.mapapi.MKLocationM
import com.baidu.mapapi.MKOLUpdateE
import com.baidu.mapapi.MKOfflineM
import com.baidu.mapapi.MKOfflineMapL
import com.baidu.mapapi.MKPlanN
import com.baidu.mapapi.MKPoiR
import com.baidu.mapapi.MKS
import com.baidu.mapapi.MKSearchL
import com.baidu.mapapi.MKTransitRouteR
import com.baidu.mapapi.MKWalkingRouteR
import com.baidu.mapapi.MapA
import com.baidu.mapapi.MapC
import com.baidu.mapapi.MapV
import com.baidu.mapapi.MyLocationO
import com.baidu.mapapi.O
import com.baidu.mapapi.OverlayI
import com.baidu.mapapi.PoiO
import com.baidu.mapapi.RouteO
import com.baidu.mapapi.TransitO
/** activity **/
public class SearchPOIActivity extends MapActivity {
//申明变量
BMapManager mBMapMan = null;
MapView mMapView = null;
MKOfflineMap mOffline = null;
//离线地图变量
MapController mMapController = null; //缩放平移地图
MKSearch myMKSearch = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mBMapMan = new BMapManager(getApplication());
mBMapMan.init(&4AAC37CDCA05A0035D&, null);
super.initMapActivity(mBMapMan);
mMapView = (MapView) findViewById(R.id.bmapsView);
mMapView.setBuiltInZoomControls(true);
//设置启用内置的缩放控件
mMapController = mMapView.getController();
// 得到mMapView的控制权,可以用它控制和驱动平移和缩放
GeoPoint point = new GeoPoint((int) (39.93 * 1E6),
(int) (116.42 * 1E6));
//用给定的经纬度构造一个GeoPoint,单位是微度 (度 * 1E6)
mMapController.setCenter(point);
//设置地图中心点
mMapController.setZoom(13);
//设置地图zoom级别
//mMapView.getOverlays().add(new MyOverlay());
//添加覆盖物
/** 离线地图初始化
mOffline = new MKOfflineMap();
mOffline.init(mBMapMan, new MKOfflineMapListener() {
public void onGetOfflineMapState(int type, int state) {
switch (type) {
case MKOfflineMap.TYPE_DOWNLOAD_UPDATE:
MKOLUpdateElement update = mOffline.getUpdateInfo(state);
//mText.setText(String.format(&%s : %d%%&, update.cityName, update.ratio));
case MKOfflineMap.TYPE_NEW_OFFLINE:
Log.d(&OfflineDemo&, String.format(&add offlinemap num:%d&, state));
case MKOfflineMap.TYPE_VER_UPDATE:
Log.d(&OfflineDemo&, String.format(&new offlinemap ver&));
/** 离线地图导入离线包 **/
int num = mOffline.scan();
//if (num != 0)
mText.setText(String.format(&已安装%d个离线包&, num));
/** POI搜索
myMKSearch = new MKSearch();
//1、城市poi检索
//myMKSearch.poiSearchInCity(&北京&, &德庄火锅&);
//2、根据范围和检索词发起范围检索|多关键词poiMultiSearchInbounds
myMKSearch.poiSearchInbounds(&味多美&,new GeoPoint((int) (39.863116 * 1E6), (int) (116.199024 * 1E6)),new GeoPoint((int) (39.90298 * 1E6), (int) (116.338728 * 1E6)));
//3、中心点5000米内的KFC有多少|多关键词poiMultiSearchNearBy
//myMKSearch.poiSearchNearBy(&KFC&, new GeoPoint((int) (39.920 * 1E6), (int) (116.410 * 1E6)), 5000);
myMKSearch.init(mBMapMan, new MKSearchListener(){
public void onGetPoiResult(MKPoiResult result, int type, int iError) {
if (result == null) {
PoiOverlay poioverlay = new PoiOverlay(SearchPOIActivity.this, mMapView);
poioverlay.setData(result.getAllPoi());
mMapView.getOverlays().add(poioverlay);
//疑问1,如果是外省,如何设置覆盖物的最佳显示区域?
//疑问2,为何不能直接显示搜索结果,要先点击一下地图?
public void onGetDrivingRouteResult(MKDrivingRouteResult res,
int error) {
public void onGetTransitRouteResult(MKTransitRouteResult res,
int error) {
public void onGetWalkingRouteResult(MKWalkingRouteResult res,
int error) {
public void onGetAddrResult(MKAddrInfo res, int error) {
public void onGetBusDetailResult(MKBusLineResult result, int iError) {
});//注意,MKSearchListener只支持一个,以最后一次设置为准
protected boolean isRouteDisplayed() {
return false;
protected void onDestroy() {
if (mBMapMan != null) {
mBMapMan.destroy();
mBMapMan = null;
super.onDestroy();
protected void onPause() {
if (mBMapMan != null) {
mBMapMan.stop();
super.onPause();
protected void onResume() {
if (mBMapMan != null) {
mBMapMan.start();
super.onResume();
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致百度地图开发(四)之POI检索
罢了。 & & 百度地图SDK提供了三种类型的POI检索:周边检索、区域检索和城市内检索。 & & 还是从API看起。找到com.baidu.mapapi.search.poi程序包:
& & 看到这个包中有一个回调接口,用于接收检索结果
17:28&&&[]
) { currentPage = 0; } } return super.onKeyDown(keyCode, event); } }
运行结果为开封市33路的线路
下图为百度搜索的结果
14:18&&&[]
http://zanderzhang.gitcafe.io//iOS-Andriod百度地图仿百度外卖-饿了么-选择我的地址-POI检索/ 百度外卖选择送货地址: 饿了么选择送货地址: 百度地图api官网 第一个图,就是放一个UIImageView在MapView的中间,然后
10:03&&&[]
;match_parent&/&
AutoCompleteTextView可以换成EditTextView,都是可以的,既然是城市poi检索,就会有需要的城市名,可以是定位得到的也可以是传值过来的,这里我就以Intent传值的形式了,先初始化城市检索核心类
/** * 城市内搜索
19:30&&&[]
百度,google POI下载工具是可以对任意矩形范围,以及任意省市级区域的兴趣点数据进行下载,可以支持多线程下载,按分类下载,以及按关键字下载。 线程数可以自由设置16线程之内。下载格式为excel格式。数据内容包括百度(火星坐标,百度坐标,名称,地址,电话,类型,所属省市),google(火星
18:25&&&[]
本篇主要讲述百度地图的导航功能: 第一步:在使用百度导航之前,我们需要在百度地图开放平台上下载导航的 SDK,共85.8M,网速不好的同学可提前准备好。
第二步:引入导航所需的系统包   将AudioToolbox.framework、ImageIO.framework
00:05&&&[]
目前我们在做IOS开发中绝大多数用的是GoogleMap地图,IOS本身自带的也是googleMap,但是如果我们希望在地图上实时显示路况信息等部分功能,googlemap则没有,所以有时候我们可以应用百度地图做应用程序。下面我简单介绍一下BMapKit的应用: 一:首先我们有一点与用
02:23&&&[]
BMapManager:地图引擎管理类,负责初始化,开启地图API,终止百度地图API等工作&MKSearch:搜索服务.用于位置检索、周边检索、范围检索、公交检索、驾乘检索、步行检索&MKSearchListener搜索结果通知接口。该接口返回poi搜索,公交搜索,驾乘路线
10:13&&&[]
百度地图添加标记点的问题同一经纬度在两个地图实例上位置有偏差
求高手指教
回复讨论(解决方案)
不知道你说的两个地图是什么意思,一般我们都是用GPS坐标,然后转化成百度坐标,之后才添加到地图显示
&var&centerId&=&nbsp
10:38&&&[]
最近&研究百度地图开发,遇到了问题。&下载官方的Demo,申请了KEY填在AndroidManifest后,运行一直提示
AndroidManifest.xml&文件输入正确的授权Key,并检查您的网络连接是否正常!error:&
不知道什么原因。从提示
12:22&&&[]
一.在使用百度地图定位之前需要到百度开发者平台注册一个账号然后获取开发者资格,进行申请百度地图的key,注册地址为:/apiconsole/key?application=key& 二.申请key之后记得下载百度地图定位所需的jar包地址
11:46&&&[]
1、百度自带的路径规划 var myP1 = new BMap.Point(116..913285); & &//起点 var myP2 = new BMap.Point(116..914668); & &//终点 var
15:19&&&[]查看: 902|回复: 7
关于百度地图poi检索
签到天数: 1 天连续签到: 1 天[LV.1]初来乍到主题帖子e币
各位大哥,请问下如何检索附近的poi,比如,我在广州天河华景新城附近,通过百度地图定位,然后检索这附近的poi(不是通过关键字检索),该如何实现,有源代码最好,在线等,急急急! 谢谢!
签到天数: 1 天连续签到: 1 天[LV.1]初来乍到主题帖子e币
忘了加上一句,poi检索返回下一组数据如何实现,就像微信发表动态的时候,选择地理位置,下拉列表,刷新poi检索的数据,现在的问题是,如何或许下一组数据,求解
签到天数: 21 天连续签到: 1 天[LV.4]偶尔看看III主题帖子e币
没关键字怎么搜索附近,poi是points of interesting,不可能搜索位置附近所有的东西吧,poi不是某一种东西,而是一个统称
那像微博和微信那样是怎么做到的,发了一条动态,然后选择发布地理位置,会弹出很多选项让你选择的那种&
签到天数: 1 天连续签到: 1 天[LV.1]初来乍到主题帖子e币
没关键字怎么搜索附近,poi是points of interesting,不可能搜索位置附近所有的东西吧,poi不是某一种东西 ...
那像微博和微信那样是怎么做到的,发了一条动态,然后选择发布地理位置,会弹出很多选项让你选择的那种
微信这个只是通过定位获取经纬度,然后反地理编码得到地址,一般提供多个地址供你选择,跟poi搜索不是一个概念,LZ你说下你的具体需求,是要搜索附近的什么东西吗?还是类似微信这样的提供几个位置让用户选择&
签到天数: 21 天连续签到: 1 天[LV.4]偶尔看看III主题帖子e币
那像微博和微信那样是怎么做到的,发了一条动态,然后选择发布地理位置,会弹出很多选项让你选择的那种 ...
微信这个只是通过定位获取经纬度,然后反地理编码得到地址,一般提供多个地址供你选择,跟poi搜索不是一个概念,LZ你说下你的具体需求,是要搜索附近的什么东西吗?还是类似微信这样的提供几个位置让用户选择
你好,就是像微信那样提供几个位置给用户选择的,那样该怎么实现&
签到天数: 1 天连续签到: 1 天[LV.1]初来乍到主题帖子e币
微信这个只是通过定位获取经纬度,然后反地理编码得到地址,一般提供多个地址供你选择,跟poi搜索不是一 ...
你好,就是像微信那样提供几个位置给用户选择的,那样该怎么实现
那就是根据你目前获得的经纬度反解位置,地图API都有这个功能,一般叫做Geocoder&
签到天数: 21 天连续签到: 1 天[LV.4]偶尔看看III主题帖子e币
你好,就是像微信那样提供几个位置给用户选择的,那样该怎么实现
那就是根据你目前获得的经纬度反解位置,地图API都有这个功能,一般叫做Geocoder
该用户从未签到主题帖子e币
百度的poi 不是要移除了么
推荐阅读热门话题
620001871415415378324276275259254250224216210715
1&小时前1&小时前2&小时前2&小时前2&小时前3&小时前3&小时前3&小时前3&小时前4&小时前5&小时前6&小时前6&小时前7&小时前7&小时前7&小时前
Powered by一、集成百度地图(傻瓜教程,以网站说明文档为准,此处罗列几项主要步骤)
1、登录& & 百度地图开发者平台,获取SDK和集成文档。
2、百度地图可以提供的一些服务
(1)地图:提供地图展示和地图操作功能;
(2)POI检索:支持周边检索、区域检索和城市内兴趣点检索;&
(3)地理编码:提供经纬度和地址信息相互转化的功能接口;
(4)线路规划:支持公交、驾车、步行、骑行,四种方式的线路规划;
(5)覆盖物图层:支持在地图上添加覆盖物(标注、几何图形、热力图、地形图图层等),展示更丰富的LBS信息;
(6)定位:获取当前位置信息,并在地图上展示(支持普通、跟随、罗盘三种模式);
(7)离线地图:使用离线地图可节省用户流量,提供更好的地图展示效果;
(8)调启百度地图:利用SDK接口,直接在本地打开百度地图客户端或WebApp,实现地图功能;
(9)周边雷达:利用周边雷达功能,开发者可在App内低成本、快速实现查找周边使用相同App的用户位置的功能;
(10)LBS云检索:支持查询存储在LBS云内的自有数据;
(11)瓦片图层: 支持在地图上添加自有瓦片数据。
(12)特色功能:提供短串分享、Place详情检索、热力图等特色功能,帮助开发者搭建功能更加强大的应用;
2、创建应用,获得AppKey (密钥)
(1)这里需要以开发者身份获得key
(2)注意和Bundle Identifier的绑定
3、配置集成前的注意事项
(1)严格参考文档!
(2)几个注意点
&  &1& iOS9.0之后,要在Info.plist配置ATS
&  &2& 在Info.plist配置 百度地图应用的白名单(支持在自己的应用中打开百度地图)
&  &3& 管理地图的生命周期(手动将代理置空)
&  &4&在Info.plist中添加获取定位授权的提醒
     NSLocationWhenInUseUsageDescription ,允许在前台使用时获取GPS的描述&&
&     & NSLocationAlwaysUsageDescription ,允许永久使用GPS的描述&&&
4、配置开发环境
(1)添加百度的静态库(.framework)
(2)导入一大堆的系统库
(3)添加地图包(mapapi.bundle资源文件)
(4)引入所有的头文件
5、初始化地图
(1)初始化BMKMapManager
(2)创建BMKMapView
6、基础地图
(1)参阅文档!/index.php?title=iossdk/guide/basicmap
(2)一些功能的了解
&  &1&地图类型:普通矢量地图、卫星图和空白地图(节省流量)
&  &2&打开实时路况图层
&  &3&热力地图
&  &4&手势、地图控制、底标、折线(几何图形的遮盖)
&  &5&设置地图显示范围
&6& 等等等。。。
二、百度地图POI检索
#import "ViewController.h"
@interface ViewController ()&BMKMapViewDelegate,BMKPoiSearchDelegate&
@property(nonatomic,weak)BMKMapView * mapV
@property(nonatomic,weak)UITextField *
@property(nonatomic,strong)BMKPoiSearch *
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//设置地图
BMKMapView* mapView = [[BMKMapView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
self.mapView = mapV
[self.view addSubview:mapView];
//设置开始查找按钮和输入文本框
UIButton * btn = [[UIButton alloc]initWithFrame:CGRectMake(30, 30, 100, 30)];
[btn setTitle:@"开始查找" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
[btn setBackgroundColor:[UIColor orangeColor]];
[self.view addSubview:btn];
UITextField * tf = [[UITextField alloc]initWithFrame:CGRectMake(150, 30, 100, 30)];
tf.backgroundColor = [UIColor orangeColor];
[self.view addSubview:tf];
//实例POI检索化检索对象,并设置代理
self.poisearch = [[BMKPoiSearch alloc]init];
self.poisearch.delegate =
-(void)btnClick :(UIButton *)btn
//检索参数
BMKCitySearchOption *citySearchOption = [[BMKCitySearchOption alloc]init];
citySearchOption.pageIndex = 0; //当前页码
citySearchOption.pageCapacity = 20; //每页个数
citySearchOption.city= @"北京"; //城市
citySearchOption.keyword = self.tf. //关键字 酒店
//根据检索参数,进行检索,并返回检索结果的标识
BOOL flag = [_poisearch poiSearchInCity:citySearchOption];
NSLog(@"城市内检索发送成功");
NSLog(@"城市内检索发送失败");
#pragma mark implement BMKSearchDelegate
- (void)onGetPoiResult:(BMKPoiSearch *)searcher result:(BMKPoiResult*)result errorCode:(BMKSearchErrorCode)error
// 清除屏幕中所有的annotation
NSArray* array = [NSArray arrayWithArray:_mapView.annotations];
[_mapView removeAnnotations:array];
if (error == BMK_SEARCH_NO_ERROR) {
NSMutableArray *annotations = [NSMutableArray array];
//遍历返回的查询结果
for (int i = 0; i & result.poiInfoList. i++) {
BMKPoiInfo* poi = [result.poiInfoList objectAtIndex:i];
BMKPointAnnotation* item = [[BMKPointAnnotation alloc]init];
item.coordinate = poi.
item.title = poi.
[annotations addObject:item];
//给地图添加大头针模型
[_mapView addAnnotations:annotations];
[_mapView showAnnotations:annotations animated:YES];
} else if (error == BMK_SEARCH_AMBIGUOUS_ROURE_ADDR){
NSLog(@"起始点有歧义");
// 各种情况的判断。。。
#pragma mark implement BMKMapViewDelegate
*根据anntation生成对应的View
*@param mapView 地图View
*@param annotation 指定的标注
*@return 生成的标注View
- (BMKAnnotationView *)mapView:(BMKMapView *)view viewForAnnotation:(id &BMKAnnotation&)annotation
// 生成重用标示identifier
NSString *AnnotationViewID = @"xidanMark";
// 检查是否有重用的缓存
BMKAnnotationView* annotationView = [view dequeueReusableAnnotationViewWithIdentifier:AnnotationViewID];
// 缓存没有,自己构造一个,一般首次添加annotation代码会运行到此处
if (annotationView == nil) {
annotationView = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID];
((BMKPinAnnotationView*)annotationView).pinColor = BMKPinAnnotationColorR
// 设置重天上掉下的效果(annotation)
((BMKPinAnnotationView*)annotationView).animatesDrop = YES;
// 设置位置
annotationView.centerOffset = CGPointMake(0, -(annotationView.frame.size.height * 0.5));
annotationView.annotation =
// 单击弹出泡泡,弹出泡泡前提annotation必须实现title属性
annotationView.canShowCallout = YES;
// 设置是否可以拖拽
annotationView.draggable = NO;
return annotationV
-(void)viewWillAppear:(BOOL)animated
[_mapView viewWillAppear];
_mapView.delegate = // 此处记得不用的时候需要置nil,否则影响内存的释放
-(void)viewWillDisappear:(BOOL)animated
[_mapView viewWillDisappear];
_mapView.delegate = // 不用时,置nil
阅读(...) 评论()}

我要回帖

更多关于 百度地图poi检索列表 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信