iOS定位 - 普通定位(没有地图) - 反地理编码(得到具体位置),下面通过代码给大家详解,代码如下:
#import <CoreLocation/CoreLocation.h> 使用到的头文件 要引入CoreLocation这个包 <CLLocationManagerDelegate> 使用的代理名称 //1.使用定位服务 //设置app有访问定位服务的权限 //在使用应用期间 / 始终(app在后台) //info.plist文件添加以下两条(或者其中一条): //NSLocationWhenInUseUsageDescription 在使用应用期间 //NSLocationAlwaysUsageDescription 始终 //2.LocationManager 对象管理相关的定位服务 _manager = [[CLLocationManager alloc] init]; //manager判断: 手机是否开启定位 / app是否有访问定位的权限 //[CLLocationManager locationServicesEnabled]; //手机是否开启定位 //[CLLocationManager authorizationStatus]; //app访问定位的权限的状态 if (![CLLocationManager locationServicesEnabled] || [CLLocationManager authorizationStatus] != kCLAuthorizationStatusAuthorizedWhenInUse) { [_manager requestWhenInUseAuthorization]; //向用户请求访问定位服务的权限 } _manager.delegate = self; _manager.desiredAccuracy = kCLLocationAccuracyBest; _manager.distanceFilter = 1.0f; [_manager startUpdatingLocation]; //定位代理经纬度回调 -(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { [_manager stopUpdatingLocation]; CLGeocoder * geoCoder = [[CLGeocoder alloc] init]; [geoCoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks, NSError *error) { for (CLPlacemark * placemark in placemarks) { NSDictionary *test = [placemark addressDictionary]; // Country(国家) State(城市) SubLocality(区) Name全称 NSLog(@"%@", [test objectForKey:@"Name"]); } }]; }
ios百度地图的使用(普通定位、反地理编码)
1.首先接受基本的地图功能
新建一个地图类,xib拖也行,我这边是代码实现的。
_mapView = [[BMKMapView alloc]initWithFrame:CGRectMake(0, 0,self.view.frame.size.width, self.view.frame.size.height)];//添加mapVIew [self.view addSubview:_mapView]; #pragma mark - 设置mapView属性 -(void)setMapViewProperty { _mapView.mapType = BMKUserTrackingModeFollowWithHeading; _mapView.showsUserLocation = YES; //是否显示定位图层(即我的位置的小圆点) _mapView.zoomLevel = 16;//地图显示比例 _mapView.rotateEnabled = NO; //设置是否可以旋转 [self passLocationValue]; } #pragma mark -传入定位坐标 //设置定位到得用户的位置,这里是简单的应用方法(必须打开程序时已经获取到地理位置坐标,为了解决地图定位时总是先显示天安门) -(void)passLocationValue { BMKCoordinateRegion viewRegion = BMKCoordinateRegionMake([UserLocationManager sharedInstance].clloction.coordinate, BMKCoordinateSpanMake(0.02f,0.02f)); BMKCoordinateRegion adjustedRegion = [_mapView regionThatFits:viewRegion]; [_mapView setRegion:adjustedRegion animated:YES]; } #pragma mark -设置定位圆点属性 -(void)setUserImage { //用户位置类 BMKLocationViewDisplayParam* param = [[BMKLocationViewDisplayParam alloc] init]; param.locationViewOffsetY = 0;//偏移量 param.locationViewOffsetX = 0; param.isAccuracyCircleShow =NO;//设置是否显示定位的那个精度圈 param.isRotateAngleValid = NO; [_mapView updateLocationViewWithParam:param]; }
这样基本的地图界面就出来了
如果你需要在地图上做一些请求,可以实现BMKMapViewDelegate,以下是mapView的一些协议方法
** *地图区域即将改变时会调用此接口 *@param mapview 地图View *@param animated 是否动画 */ - (void)mapView:(BMKMapView *)mapView regionWillChangeAnimated:(BOOL)animated { //TODO } /** *地图区域改变完成后会调用此接口 *@param mapview 地图View *@param animated 是否动画 */ - (void)mapView:(BMKMapView *)mapView regionDidChangeAnimated:(BOOL)animated { //TODO } /** *地图状态改变完成后会调用此接口 *@param mapview 地图View */ - (void)mapStatusDidChanged:(BMKMapView *)mapView { //TODO }
2.地图定位
我这边是将定位封装了一个独立的manager类来管理定位和地图上滑动到的位置,是将定位功能和地图mapVIew独立开来,管理地理移动位置的变化
#import <Foundation/Foundation.h> #import "BMapKit.h" @interface UserLocationManager : NSObject <BMKMapViewDelegate,BMKLocationServiceDelegate> { CLLocation *cllocation; BMKReverseGeoCodeOption *reverseGeoCodeOption;//逆地理编码 } @property (strong,nonatomic) BMKLocationService *locService; //城市名 @property (strong,nonatomic) NSString *cityName; //用户纬度 @property (nonatomic,assign) double userLatitude; //用户经度 @property (nonatomic,assign) double userLongitude; //用户位置 @property (strong,nonatomic) CLLocation *clloction; //初始化单例 + (UserLocationManager *)sharedInstance; //初始化百度地图用户位置管理类 - (void)initBMKUserLocation; //开始定位 -(void)startLocation; //停止定位 -(void)stopLocation; @end #import "UserLocationManager.h" @implementation UserLocationManager + (UserLocationManager *)sharedInstance { static UserLocationManager *_instance = nil; @synchronized (self) { if (_instance == nil) { _instance = [[self alloc] init]; } } return _instance; } -(id)init { if (self == [super init]) { [self initBMKUserLocation]; } return self; } #pragma 初始化百度地图用户位置管理类 /** * 初始化百度地图用户位置管理类 */ - (void)initBMKUserLocation { _locService = [[BMKLocationService alloc]init]; _locService.delegate = self; [self startLocation]; } #pragma 打开定位服务 /** * 打开定位服务 */ -(void)startLocation { [_locService startUserLocationService]; } #pragma 关闭定位服务 /** * 关闭定位服务 */ -(void)stopLocation { [_locService stopUserLocationService]; } #pragma BMKLocationServiceDelegate /** *用户位置更新后,会调用此函数 *@param userLocation 新的用户位置 */ - (void)didUpdateUserLocation:(BMKUserLocation *)userLocation { cllocation = userLocation.location; _clloction = cllocation; _userLatitude = cllocation.coordinate.latitude; _userLongitude = cllocation.coordinate.longitude; [self stopLocation];(如果需要实时定位不用停止定位服务) } /** *在停止定位后,会调用此函数 */ - (void)didStopLocatingUser { ; } /** *定位失败后,会调用此函数 *@param error 错误号 */ - (void)didFailToLocateUserWithError:(NSError *)error { [self stopLocation]; }
以上代码就是本文ios百度地图的使用(普通定位、反地理编码),希望对大家今后的工作和学习有所帮助。
本文向大家介绍iOS实现百度地图拖拽后更新位置以及反编码,包括了iOS实现百度地图拖拽后更新位置以及反编码的使用技巧和注意事项,需要的朋友参考一下 前言 最近在开发中遇到了百度地图的开发,功能类似于微信中的发送位置,拖拽从新定位,以及反编码,列表附近的位置。分析出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 效果图: 百度地图拖拽更新位置.gif 实现思路 思路就是将一个UIImag
百度地图 地理编码 http://api.map.baidu.com/geocoding/v3/ 接口获取港澳台地区坐标不准确 个人开发,要商业授权,有其他解决办法?
我们知道,由于臭名昭著的中国GPS偏移问题,GPS(WSG-84)地图坐标与国家批准的中国地图使用的坐标系(GCJ-02)不完全对应。 问题是,如何确保通过百度地图API在导航器报告的坐标处放置标记。地理位置。getCurrentPosition()是否符合现实? 制造或批准在中国使用的设备的GPS芯片是否会返回与用户实际位置不匹配的坐标,以匹配GJC-02地图? 用户运行中文导航器(如Maxth
本文向大家介绍百度地图api如何使用,包括了百度地图api如何使用的使用技巧和注意事项,需要的朋友参考一下 如果想用百度地图api,首先需要先获取一个百度地图api的密钥,然后引入百度地图的api,接下来,我们详细介绍下获取、引入api密钥的技巧,以及通过代码给大家详解下百度地图api如何使用,具体请看下文。 首先 ,如果想调用百度地图api,你需要获取一个百度地图api的密钥。 申请密钥很简单,
本文向大家介绍js调用百度地图及调用百度地图的搜索功能,包括了js调用百度地图及调用百度地图的搜索功能的使用技巧和注意事项,需要的朋友参考一下 js调用百度地图的方法 代码如下: js调用百度地图搜索 引用百度js Api 创建地址解析器: 结合knockout的textInput绑定方法和对象的subscribe属性,实现输入框变化实时查询功能。 以上就是呐喊教程的小编给大家分享的js调用百度地
问题内容: 关闭。 这个问题不能重现,或者是由错别字引起的。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 5年前关闭。 改善这个问题 我输入的是纬度和经度。我需要使用swift 的功能,以便向我提供位置信息的输出。我尝试使用的代码是 在我得到的日志中 似乎该函数正在失败,然后导致该函数中的致命错误。我是否在某处修改了格式? 问题答案: 您永远不会