• <small id="w8oog"></small>
  • <td id="w8oog"></td>
  • <small id="w8oog"></small><xmp id="w8oog"><td id="w8oog"></td><td id="w8oog"><li id="w8oog"></li></td><xmp id="w8oog"><td id="w8oog"></td>
  • <td id="w8oog"></td><td id="w8oog"><li id="w8oog"></li></td><small id="w8oog"></small>
  • <td id="w8oog"></td>
  • <small id="w8oog"></small>
  • <small id="w8oog"></small><td id="w8oog"></td>
    免費開源的iOS開發學習平臺

    高德地圖SDK:5-定位SDK

    高德定位SDK提供了不依賴于地圖定位的定位功能,開發者可以無地圖顯示的場景中便捷地為應用程序添加定位功能。定位SDK提供了單次定位、連續定位、逆地理信息、地理圍欄等功能。

    本節以單次定位為例介紹一下高德定位SDK的使用方法。定位SDK提供的單次定位方法基于蘋果定位核心,蘋果定位核心會在設備移動時連續返回定位結果,高德在此基礎上封裝了單次定位。當設備可以正常聯網時,還可以返回該定位點的對應的中國境內位置信息(包括:省、市、區/縣以及詳細地址)。

    • 引入頭文件。在調用定位功能的類中引入AMapFoundationKit.h和AMapLocationKit.h這兩個頭文件。
    #import <AMapFoundationKit/AMapFoundationKit.h>
    #import <AMapLocationKit/AMapLocationKit.h>
    
    • 配置Key。在AppDelegate.m文件中,登記提前申請的Key。
    [AMapServices sharedServices].apiKey =@"您的key";
    
    • 設置期望定位精度。由于蘋果系統的首次定位結果為粗定位,其可能無法滿足需要高精度定位的場景。所以,高德提供了 kCLLocationAccuracyBest 參數,設置該參數可以獲取到精度在10m左右的定位結果,但是相應的需要付出比較長的時間(10s左右),越高的精度需要持續定位時間越長。推薦使用kCLLocationAccuracyHundredMeters,偏差在百米左右,基本滿足絕大多數應用的精度要求,超時時間設置在2s-3s左右即可。
    -(AMapLocationManager *)locationManager{
        if (_locationManager == nil) {
            _locationManager = [[AMapLocationManager alloc] init];
            // 帶逆地理信息的一次定位(返回坐標和地址信息)
            [_locationManager setDesiredAccuracy:kCLLocationAccuracyHundredMeters];
            //   定位超時時間,最低2s,此處設置為2s
            _locationManager.locationTimeout =2;
            //   逆地理請求超時時間,最低2s,此處設置為2s
            _locationManager.reGeocodeTimeout = 2;
        }
        return _locationManager;
    }
    
    • 請求定位并拿到結果

    調用AMapLocationManager類的requestLocationWithReGeocode:completionBlock: 方法,請求一次定位。另外,在聯網條件下,還可以選擇在一次定位時是否返回地址信息。以下是請求帶逆地理信息的一次定位,代碼如下:

    -(void)viewDidAppear:(BOOL)animated{
        [super viewDidAppear:animated];
        // 帶逆地理(返回坐標和地址信息)。將下面代碼中的 YES 改成 NO ,則不會返回地址信息。
        [self.locationManager requestLocationWithReGeocode:YES completionBlock:^(CLLocation *location, AMapLocationReGeocode *regeocode, NSError *error) {
            if (error)
            {
                NSLog(@"locError:{%ld - %@};", (long)error.code, error.localizedDescription);
                if (error.code == AMapLocationErrorLocateFailed)
                {
                    return;
                }
            }
            NSLog(@"location:%@", location);
            
            if (regeocode)
            {
                NSLog(@"reGeocode:%@", regeocode);
            }
        }];
    }
    

    ijzzijzzij亚洲大全|天天狠天天透天干天天|日本一本加勒比五月天伊人久久|久久久噜噜噜久久中文字幕色伊伊
  • <small id="w8oog"></small>
  • <td id="w8oog"></td>
  • <small id="w8oog"></small><xmp id="w8oog"><td id="w8oog"></td><td id="w8oog"><li id="w8oog"></li></td><xmp id="w8oog"><td id="w8oog"></td>
  • <td id="w8oog"></td><td id="w8oog"><li id="w8oog"></li></td><small id="w8oog"></small>
  • <td id="w8oog"></td>
  • <small id="w8oog"></small>
  • <small id="w8oog"></small><td id="w8oog"></td>