日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ios 百度地图指定区域_ios百度地图的使用(普通定位、反地理编码)

發(fā)布時間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ios 百度地图指定区域_ios百度地图的使用(普通定位、反地理编码) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

iOS定位 - 普通定位(沒有地圖) - 反地理編碼(得到具體位置),下面通過代碼給大家詳解,代碼如下:

#import 使用到的頭文件 要引入CoreLocation這個包

使用的代理名稱

//1.使用定位服務(wù)

//設(shè)置app有訪問定位服務(wù)的權(quán)限

//在使用應(yīng)用期間 / 始終(app在后臺)

//info.plist文件添加以下兩條(或者其中一條):

//NSLocationWhenInUseUsageDescription 在使用應(yīng)用期間

//NSLocationAlwaysUsageDescription 始終

//2.LocationManager 對象管理相關(guān)的定位服務(wù)

_manager = [[CLLocationManager alloc] init];

//manager判斷: 手機是否開啟定位 / app是否有訪問定位的權(quán)限

//[CLLocationManager locationServicesEnabled]; //手機是否開啟定位

//[CLLocationManager authorizationStatus]; //app訪問定位的權(quán)限的狀態(tài)

if (![CLLocationManager locationServicesEnabled] || [CLLocationManager authorizationStatus] != kCLAuthorizationStatusAuthorizedWhenInUse) {

[_manager requestWhenInUseAuthorization]; //向用戶請求訪問定位服務(wù)的權(quán)限

}

_manager.delegate = self;

_manager.desiredAccuracy = kCLLocationAccuracyBest;

_manager.distanceFilter = 1.0f;

[_manager startUpdatingLocation];

//定位代理經(jīng)緯度回調(diào)

-(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(區(qū)) Name全稱

NSLog(@"%@", [test objectForKey:@"Name"]);

}

}];

}

ios百度地圖的使用(普通定位、反地理編碼)

1.首先接受基本的地圖功能

新建一個地圖類,xib拖也行,我這邊是代碼實現(xiàn)的。

_mapView = [[BMKMapView alloc]initWithFrame:CGRectMake(0, 0,self.view.frame.size.width, self.view.frame.size.height)];//添加mapVIew

[self.view addSubview:_mapView];

#pragma mark - 設(shè)置mapView屬性

-(void)setMapViewProperty

{

_mapView.mapType = BMKUserTrackingModeFollowWithHeading;

_mapView.showsUserLocation = YES; //是否顯示定位圖層(即我的位置的小圓點)

_mapView.zoomLevel = 16;//地圖顯示比例

_mapView.rotateEnabled = NO; //設(shè)置是否可以旋轉(zhuǎn)

[self passLocationValue];

}

#pragma mark -傳入定位坐標(biāo)

//設(shè)置定位到得用戶的位置,這里是簡單的應(yīng)用方法(必須打開程序時已經(jīng)獲取到地理位置坐標(biāo),為了解決地圖定位時總是先顯示天安門)

-(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 -設(shè)置定位圓點屬性

-(void)setUserImage

{

//用戶位置類

BMKLocationViewDisplayParam* param = [[BMKLocationViewDisplayParam alloc] init];

param.locationViewOffsetY = 0;//偏移量

param.locationViewOffsetX = 0;

param.isAccuracyCircleShow =NO;//設(shè)置是否顯示定位的那個精度圈

param.isRotateAngleValid = NO;

[_mapView updateLocationViewWithParam:param];

}

這樣基本的地圖界面就出來了

如果你需要在地圖上做一些請求,可以實現(xiàn)BMKMapViewDelegate,以下是mapView的一些協(xié)議方法

**

*地圖區(qū)域即將改變時會調(diào)用此接口

*@param mapview 地圖View

*@param animated 是否動畫

*/

- (void)mapView:(BMKMapView *)mapView regionWillChangeAnimated:(BOOL)animated

{

//TODO

}

/**

*地圖區(qū)域改變完成后會調(diào)用此接口

*@param mapview 地圖View

*@param animated 是否動畫

*/

- (void)mapView:(BMKMapView *)mapView regionDidChangeAnimated:(BOOL)animated

{

//TODO

}

/**

*地圖狀態(tài)改變完成后會調(diào)用此接口

*@param mapview 地圖View

*/

- (void)mapStatusDidChanged:(BMKMapView *)mapView

{

//TODO

}

2.地圖定位

我這邊是將定位封裝了一個獨立的manager類來管理定位和地圖上滑動到的位置,是將定位功能和地圖mapVIew獨立開來,管理地理移動位置的變化

#import

#import "BMapKit.h"

@interface UserLocationManager : NSObject

{

CLLocation *cllocation;

BMKReverseGeoCodeOption *reverseGeoCodeOption;//逆地理編碼

}

@property (strong,nonatomic) BMKLocationService *locService;

//城市名

@property (strong,nonatomic) NSString *cityName;

//用戶緯度

@property (nonatomic,assign) double userLatitude;

//用戶經(jīng)度

@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 打開定位服務(wù)

/**

* 打開定位服務(wù)

*/

-(void)startLocation

{

[_locService startUserLocationService];

}

#pragma 關(guān)閉定位服務(wù)

/**

* 關(guān)閉定位服務(wù)

*/

-(void)stopLocation

{

[_locService stopUserLocationService];

}

#pragma BMKLocationServiceDelegate

/**

*用戶位置更新后,會調(diào)用此函數(shù)

*@param userLocation 新的用戶位置

*/

- (void)didUpdateUserLocation:(BMKUserLocation *)userLocation

{

cllocation = userLocation.location;

_clloction = cllocation;

_userLatitude = cllocation.coordinate.latitude;

_userLongitude = cllocation.coordinate.longitude;

[self stopLocation];(如果需要實時定位不用停止定位服務(wù))

}

/**

*在停止定位后,會調(diào)用此函數(shù)

*/

- (void)didStopLocatingUser

{

}

/**

*定位失敗后,會調(diào)用此函數(shù)

*@param error 錯誤號

*/

- (void)didFailToLocateUserWithError:(NSError *)error

{

[self stopLocation];

}

以上代碼就是本文ios百度地圖的使用(普通定位、反地理編碼),希望對大家今后的工作和學(xué)習(xí)有所幫助。

總結(jié)

以上是生活随笔為你收集整理的ios 百度地图指定区域_ios百度地图的使用(普通定位、反地理编码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。