IOS百度地图定位总结
来源:互联网 发布:用友软件合同 编辑:程序博客网 时间:2024/04/29 11:39
在网上有很多关于谷歌定位的方法在这里就不写了,这个主要是百度的配置,定位,获取城市的方法,本博文是参考百度地图官方文档以及自己手动操作写的,开发环境是XCode7.3
一 、 配置.framework形式开发包
第一步:适配iOS9.2,iOS8等
NSLocationWhenInUseUsageDescription BOOL 类型 数值为YES(使用期间)
NSLocationAlwaysUsageDescription BOOL 类型 数值为YES(始终使用)二者选择其一,如果两个都用默认使用NSLocationAlwaysUsageDescription
第三步:配置环境
1 在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC。
2 静态库中采用Objective-C++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即将Xcode的Project -> Edit Active Target -> Build -> GCC4.2 - Language -> Compile Sources As设置为"Objective-C++”,但是实际应用中前者的方法可用,后者的方法会引起其他语言的不可用,所以使用前者的方法为佳。
二、 注册百度地图(授权百度地图)
第一步:在APPDelete.h文件里加入
#import "BMapKit.h"
BMKGeneralDelegate
BMKMapManager *mapManager;
第二步:在APPDelete.m文件里加入
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
// Override point for customization after application launch.
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
//注册百度地图
[self reguestBaiduMap];
return YES;
}
#pragma mark 注册百度地图
- (void)reguestBaiduMap
{
// 要使用百度地图,请先启动BaiduMapManager
mapManager = [[BMKMapManager alloc]init];
BOOL ret = [mapManager start:@"3Fo6RpUAQzxT2Cdtg6vKelpV" generalDelegate:self];
if (!ret) {
NSLog(@"启动失败!");
}else{
NSLog(@"启动成功!");
}
}
#pragma mark 百度地图注册回调
- (void)onGetNetworkState:(int)iError
{
if (0 == iError) {
NSLog(@"联网成功");
}
else{
NSLog(@"onGetNetworkState %d",iError);
}
}
- (void)onGetPermissionState:(int)iError
{
if (0 == iError) {
NSLog(@"授权成功");
}
else {
NSLog(@"onGetPermissionState %d",iError);
- (void)reguestBaiduMap
{
// 要使用百度地图,请先启动BaiduMapManager
mapManager = [[BMKMapManager alloc]init];
BOOL ret = [mapManager start:@"3Fo6RpUAQzxT2Cdtg6vKelpV" generalDelegate:self];
if (!ret) {
NSLog(@"启动失败!");
}else{
NSLog(@"启动成功!");
}
}
#pragma mark 百度地图注册回调
- (void)onGetNetworkState:(int)iError
{
if (0 == iError) {
NSLog(@"联网成功");
}
else{
NSLog(@"onGetNetworkState %d",iError);
}
}
- (void)onGetPermissionState:(int)iError
{
if (0 == iError) {
NSLog(@"授权成功");
}
else {
NSLog(@"onGetPermissionState %d",iError);
}
}
二 、 定位城市,获取经纬度,获取城市名
#import "BMapKit.h"
#import "BMKGeocodeSearch.h"
BMKLocationServiceDelegate,BMKGeoCodeSearchDelegate
BMKLocationService *_locService;
//坐标
CLLocationCoordinate2D pt;
BMKGeoCodeSearch *_geocodesearch;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
// Override point for customization after application launch.
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
//注册百度地图
[self reguestBaiduMap];
_locService = [[BMKLocationService alloc]init];
_geocodesearch = [[BMKGeoCodeSearch alloc]init];
_locService.delegate = self;
_geocodesearch.delegate = self;
_geocodesearch.delegate = self;
[_locService startUserLocationService];
return YES;
}
//实现相关delegate 处理位置信息更新
//处理方向变更信息 BMKLocationServiceDelegate的代理
- (void)didUpdateUserHeading:(BMKUserLocation *)userLocation
{
}
- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation
}
- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation
{
//停止定位
[_locService stopUserLocationService];
//把经度纬度保存到本地
NSString *latitude = [NSString stringWithFormat:@"%f",userLocation.location.coordinate.latitude];
NSString *longitude = [NSString stringWithFormat:@"%f",userLocation.location.coordinate.longitude];
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
[defaults setObject:latitude forKey:@"latitude"];
[defaults setObject:longitude forKey:@"longitude"];
[defaults synchronize];
NSString *longitude = [NSString stringWithFormat:@"%f",userLocation.location.coordinate.longitude];
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
[defaults setObject:latitude forKey:@"latitude"];
[defaults setObject:longitude forKey:@"longitude"];
[defaults synchronize];
//根据经度纬度检索经度纬度信息检索成功之后返回城市
[self getData:longitude with:latitude];
}
}
#pragma mark -----根据地理坐标返回信息
-(void)getData:(NSString *)coordinateXText with:(NSString *)coordinateYText
{
pt = (CLLocationCoordinate2D){[coordinateYText floatValue], [coordinateXText floatValue]};
BMKReverseGeoCodeOption *reverseGeocodeSearchOption = [[BMKReverseGeoCodeOption alloc]init];
reverseGeocodeSearchOption.reverseGeoPoint = pt;
BOOL flag = [_geocodesearch reverseGeoCode:reverseGeocodeSearchOption];
if(flag)
{
NSLog(@"反geo检索发送成功");
}
else
{
NSLog(@"反geo检索发送失败");
}
-(void)getData:(NSString *)coordinateXText with:(NSString *)coordinateYText
{
pt = (CLLocationCoordinate2D){[coordinateYText floatValue], [coordinateXText floatValue]};
BMKReverseGeoCodeOption *reverseGeocodeSearchOption = [[BMKReverseGeoCodeOption alloc]init];
reverseGeocodeSearchOption.reverseGeoPoint = pt;
BOOL flag = [_geocodesearch reverseGeoCode:reverseGeocodeSearchOption];
if(flag)
{
NSLog(@"反geo检索发送成功");
}
else
{
NSLog(@"反geo检索发送失败");
}
}
- (void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error
{
//把城市信息保存到本地
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
[defaults setObject:result.addressDetail.city forKey:@"city"];
[defaults synchronize];
NSLog(@"%@",result.addressDetail.city);
}
1 0
- IOS百度地图定位总结
- iOS百度地图定位
- IOS 百度地图定位一片空白
- ios 百度地图定位
- ios百度地图定位实现
- android 百度地图定位总结
- 百度地图的定位+地图显示总结
- 百度地图定位跳转 (iOS)
- iOS百度地图 定位的实现
- iOS百度地图 定位的实现
- iOS百度地图 定位的实现
- ios百度地图api定位不成功原因
- iOS开发 - 百度地图后台持续定位
- IOS 百度地图定位,显示地理位置
- iOS开发 - 百度地图后台持续定位
- iOS百度地图定位功能iOS8+
- IOS 百度地图定位,显示地理位置
- ios百度地图定位反地理编码
- CodeForces580B
- STM32f103 定时器配置和中断处理函数
- HDU:1799 循环多少次?(组合,杨辉三角)
- spring boot文件的上传下载
- 关键概念
- IOS百度地图定位总结
- 数组篇(1):给we are happy的每一个空格加“ ”、字符串逆序:i am a student
- 模拟printf函数,//print("val:s ccccc\n","hello", 'w,'o','r','l','d'); //val:hello world(可变参数列表)
- c++第三次实验
- #leetcode#338. Counting Bits
- 高斯高通滤波器
- javaweb中如果用户没有登录,不能访问别的页面,只能访问登录页面
- bootstrap的table表头固定tbody滚动
- poj2104K-th Number