百度地图集成 - 2.48 - 检索周围信息

官方文档 --- http://developer.baidu.com/map/index.php?title=iossdk/guide/key

百度地图在2.5之前, 不支持64位手机端.

[注意] 首先成为百度开发者, 然后创建应用,设置bundleID-- http://developer.baidu.com/console;

error :

  • 1. "_SCNetworkReachabilityCreateWithAddress", referenced from  ---- 系统框架依赖库没有添加

    • http://developer.baidu.com/map/index.php?title=iossdk/guide/buildproject
  • 2. "std:: terminate()------"           --------  系统缺少C++支持 (修改一个.mm后缀的文件)
    • .c      --- c代码
    • .cpp  --- c++代码
    • .m     --- c, oc代码
    • .mm  --- c, oc, c++代码
  • 3. "Undefined symbols for architecture x86_64" --- 不支持64位 
    • target -- build setting   --- arm64 armv7 armv7s  - [ $(ARCHS_STANDATD_32_BIT) - $]
  • 4. "引擎初始化失败"  ---  导入mapapi.bundle
  • 5. NSLocationAlwaysUsageDescription
  • 6. Bundle display name

1. 安全码  -- bundleID

2.

第一步、引入BaiduMapAPI.framework

百度地图SDK提供了模拟器和真机两种环境所使用的framework,分别存放在libs/Release-iphonesimulator和libs/Release-iphoneos文件夹下,开发者可根据需要使用真机或模拟器的包,如果需同时使用真机和模拟器的包,可以使用lipo命令将设备和模拟器framwork包中的BaiduMapAPI文件合并成一个通用的文件,命令如下:lipo -create Release-iphoneos/BaiduMapAPI.framework/BaiduMapAPI Release-iphonesimulator/BaiduMapAPI.framework/BaiduMapAPI -output Release-iphoneos/BaiduMapAPI.framework/BaiduMapAPI

此时Release-iphoneos文件夹下的BaiduMapAPI.framework即可同时用于真机和模拟器(可以使用lipo–info 命令检查framework所支持的架构)。

将所需的BaiduMapAPI.framework拷贝到工程所在文件夹下。在 TARGETS->Build Phases-> Link Binary With Libaries中点击“+”按钮,在弹出的窗口中点击“Add Other”按钮,选择BaiduMapAPI.framework文件添加到工程中。

注:静态库中采用ObjectC++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即将Xcode的Project -> Edit Active Target -> Build -> GCC4.2 - Language -> Compile Sources As设置为"Objective-C++"

第二步、引入所需的系统库

百度地图SDK中提供了定位功能和动画效果,v2.0.0版本开始使用OpenGL渲染,因此您需要在您的Xcode工程中引入CoreLocation.framework和QuartzCore.framework、OpenGLES.framework、SystemConfiguration.framework、CoreGraphics.framework、Security.framework。添加方式:在Xcode的Project -> Active Target ->Build Phases ->Link Binary With Libraries,添加这几个framework即可。

第三步、环境配置

在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC。

第四步、引入mapapi.bundle资源文件

如果使用了基础地图功能,需要添加该资源,否则地图不能正常显示

mapapi.bundle中存储了定位、默认大头针标注View及路线关键点的资源图片,还存储了矢量地图绘制必需的资源文件。如果您不需要使用内置的图片显示功能,则可以删除bundle文件中的image文件夹。您也可以根据具体需求任意替换或删除该bundle中image文件夹的图片文件。

方法:选中工程名,在右键菜单中选择Add Files to “工程名”…,从BaiduMapAPI.framework||Resources文件中选择mapapi.bundle文件,并勾选“Copy items if needed”复选框,单击“Add”按钮,将资源文件添加到工程中。

第五步、引入头文件

在使用SDK的类引入头文件:

#import <BaiduMapAPI/BMapKit.h>//引入所有的头文件
 
#import <BaiduMapAPI/BMKMapView.h>//只引入所需的单个头文件

------------------------------------------------------------------------------------------

#import "ViewController.h"

#import <BaiduMapAPI/BMapKit.h>

@interface ViewController ()<BMKMapViewDelegate, BMKPoiSearchDelegate>

@property (nonatomic, strong) BMKPoiSearch *poisearch;

@property (nonatomic, strong) BMKMapView *mapView;

@end

@implementation ViewController

- (BMKMapView *)mapView{

if (!_mapView) {

_mapView = [[BMKMapView alloc] initWithFrame:[UIScreen mainScreen].bounds];

}

return _mapView;

}

- (void)viewDidLoad {

[super viewDidLoad];

//

[self.view addSubview:self.mapView];

//切换为卫星图

//    [self.mapView setMapType:BMKMapTypeSatellite];

//

UIButton *btn = [UIButton buttonWithType:UIButtonTypeContactAdd];

btn.frame = CGRectMake(100, 100, 100, 100);

[self.view addSubview:btn];

[btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];

}

- (void)btnClick

{

// 检索周边的信息

int curPage = 0;

BMKCitySearchOption *citySearchOption = [[BMKCitySearchOption alloc]init];

// 检索的页码

citySearchOption.pageIndex = curPage;

// 检索的条数

citySearchOption.pageCapacity = 10;

// 城市

citySearchOption.city= @"北京";

// 关键字

citySearchOption.keyword = @"KTV";

BOOL flag = [self.poisearch poiSearchInCity:citySearchOption];

if(flag)

{

//        _nextPageButton.enabled = true;

NSLog(@"城市内检索发送成功");

}

else

{

//        _nextPageButton.enabled = false;

NSLog(@"城市内检索发送失败");

}

}

#pragma mark - _poisearch

- (BMKPoiSearch *)poisearch{

if (!_poisearch) {

_poisearch = [[BMKPoiSearch alloc] init];

}

return _poisearch;

}

#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.count; i++) {

BMKPoiInfo* poi = [result.poiInfoList objectAtIndex:i];

BMKPointAnnotation* item = [[BMKPointAnnotation alloc]init];

item.coordinate = poi.pt;

item.title = poi.name;

[annotations addObject:item];

}

[_mapView addAnnotations:annotations];

[_mapView showAnnotations:annotations animated:YES];

} else if (error == BMK_SEARCH_AMBIGUOUS_ROURE_ADDR){

NSLog(@"起始点有歧义");

} else {

// 各种情况的判断。。。

}

}

- (void)viewWillAppear:(BOOL)animated

{

[super viewWillAppear:animated];

[_mapView viewWillAppear];

_mapView.delegate = self; // 此处记得不用的时候需要置nil,否则影响内存的释放

self.poisearch.delegate = self;

}

- (void)viewWillDisappear:(BOOL)animated

{

[super viewWillDisappear:animated];

[_mapView viewWillDisappear];

_mapView.delegate = nil; // 不用时,置nil

self.poisearch.delegate = nil;

}

 
时间: 2024-10-11 17:55:58

百度地图集成 - 2.48 - 检索周围信息的相关文章

Android开放百度地图集成

1.创建应用 获取AK (我理解为Application key)  通过百度账号登录百度地图开放平台,进入API控制台 http://lbsyun.baidu.com/apiconsole/key 创建自己的应用,输入应用名称 ,选择Android SDK 应用类型,选择需要的服务(默认全选) 输入签名文件的SHA1,默认的签名文件debug.keystore 在 C:\Users\你的用户\.android下,然后打开控制台cd到此目录下 键入 keytool -v -list -keyto

百度地图开发之poi检索,线路规划

  官方文档 http://lbsyun.baidu.com/index.php?title=androidsdk/guide/key 先去官方文档申请秘钥下载压缩文件等操作,参考 百度地图的秘钥申请与sdk下载,显示地图(1) 公交,步行,驾车路线查询,附近POI查询 参考文档导入所需jar包和so文件 标注点,覆盖物的实现见官方文档  poi检索:1.首先获取地图,创建poi检索实例: private void initView() { //输入框 etPoi = (EditText) in

百度地图集成(一)

登录百度地图开放平台 同意LBS协议 然后创建应用 Android应用获取包名packagename,根据开发工具不同,获取位置有所不同,这里只讲解eclipse 使用 eclipse 开发 包名是Android应用程序本身在AndroidManifest.xml 中定义的名称,例如: Android签名证书的sha1值获取方式: 使用keytool 第1步:运行进入控制台 然后 第2步:定位到.android文件夹下,输入cd .android 第3步:输入keytool -list -v -

百度地图集成--二

参考官方文档 --> 申请秘钥 --> 配置开发环境 --> Hello BaiduMap --> 注意事项 --> 注意Bundle ID(官方文档没有提示) 先创建一个百度地图文件  进行如下操作 在使用SDK的类 按需 引入下边的头文件:(appdelegte 中  和 viewController 中分别导入以下头文件) #import <BaiduMapAPI_Base/BMKBaseComponent.h>//引入base相关所有的头文件   #imp

IOS第三方地图-百度地图集成

百度地图官网: http://developer.baidu.com/map/index.php?title=iossdk 照上面吧百度地图sdk集成到工程 然后在pilst文件中加入: 如果地图没有显示就是key没有配置对,仔细检查下

百度地图API JavaScript显示人员分布信息

效果图贴下: js代码贴下: <body> <div id="div-map"></div></body></html><script type="text/javascript">$(function(){ // 百度地图API功能 var map = new BMap.Map("div-map"); map.centerAndZoom(new BMap.Point(106

geolocation/ 百度地图api Geolocation 定位当前城市信息

根据当前所处位置 定位所在城市信息 <html> <head> <meta charset="UTF-8" /> <title>js 百度 geolocation 定位当前城市</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="vi

百度地图Api进阶教程-弹出信息窗口5.html

<!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>1

百度地图:通过经纬度获得位置信息和距离

获取位置性息:先通过微信公众号获得经纬度,然后根据经纬度换取位置 <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script> <script> v