iOS 百度地圖集成簡談

讀懂人心.jpg
   目前我正在為一款關(guān)于車險的APP上線工作而忙碌著,里面有一個需要打開地圖導(dǎo)航及定位功能的模塊。所以今天我們來談一談有關(guān)于這方面集成的幾個要點。。。
   第一步,很常規(guī)就不多說了,大家可以打開官網(wǎng)將這個SDK通過文件下載或者pod來獲取相關(guān)SDK文件。
   第二步,集成定位功能的時候按照需求來下載是單次定位還是常定位的SDK

現(xiàn)在就給大家演示一下相關(guān)操作吧:
單次定位:

[[BMKLocationAuth sharedInstance] checkPermisionWithKey:@"RumL0R5SashrOBmzuI41BkL0FASiyiWk" authDelegate:self];
   //初始化實例
   _locationManager = [[BMKLocationManager alloc] init];
   //設(shè)置delegate
   _locationManager.delegate = self;
   //設(shè)置返回位置的坐標(biāo)系類型
   _locationManager.coordinateType = BMKLocationCoordinateTypeBMK09LL;
   //設(shè)置距離過濾參數(shù)
   _locationManager.distanceFilter = kCLDistanceFilterNone;
   //設(shè)置預(yù)期精度參數(shù)
   _locationManager.desiredAccuracy = kCLLocationAccuracyBest;
   //設(shè)置應(yīng)用位置類型
   _locationManager.activityType = CLActivityTypeAutomotiveNavigation;
   //設(shè)置是否自動停止位置更新
   _locationManager.pausesLocationUpdatesAutomatically = NO;
   //設(shè)置是否允許后臺定位
   //_locationManager.allowsBackgroundLocationUpdates = YES;
   //設(shè)置位置獲取超時時間
   _locationManager.locationTimeout = 10;
   //設(shè)置獲取地址信息超時時間
   _locationManager.reGeocodeTimeout = 10;
//這個方法是獲取對應(yīng)的location的值
[_locationManager requestLocationWithReGeocode:YES withNetworkState:YES completionBlock:^(BMKLocation * _Nullable location, BMKLocationNetworkState state, NSError * _Nullable error) {
}];

常定位:

    _locationManager = [[BMKLocationManager alloc] init];
    //設(shè)置delegate
    _locationManager.delegate = self;
    //設(shè)置返回位置的坐標(biāo)系類型
    _locationManager.coordinateType = BMKLocationCoordinateTypeBMK09LL;
    //設(shè)置距離過濾參數(shù)
    _locationManager.distanceFilter = kCLDistanceFilterNone;
    //設(shè)置預(yù)期精度參數(shù)
    _locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    //設(shè)置應(yīng)用位置類型
    _locationManager.activityType = CLActivityTypeAutomotiveNavigation;
    //設(shè)置是否自動停止位置更新
    _locationManager.pausesLocationUpdatesAutomatically = YES;
    //設(shè)置是否允許后臺定位
    _locationManager.allowsBackgroundLocationUpdates = NO;
    //設(shè)置位置獲取超時時間
    _locationManager.locationTimeout = 10;
    //設(shè)置獲取地址信息超時時間
    _locationManager.reGeocodeTimeout = 10;

然后常定位需要實現(xiàn)對應(yīng)的代理方法:

  • (void)BMKLocationManager:(BMKLocationManager *)manager didUpdateLocation:(BMKLocation *)location orError:(NSError *)error {
    };
    如果需求上面還需要獲取對應(yīng)的具體地址,比如說城市等。這時候還得要一個反編譯的操作:
[geocoder reverseGeocodeLocation:location.location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
        if (! error) {
            if ([placemarks count] > 0) {
                CLPlacemark *placemark = [placemarks firstObject];

                // 獲取城市
                NSString *city = placemark.locality;
                if (!city) {
                    // 6
                    city = placemark.administrativeArea;
                }
                self.city = city;

//                [self requestForMyMapAddress];
            } else if ([placemarks count] == 0) {
                //                [TSMessage showNotificationWithTitle:@"GPS故障"
                //                                            subtitle:@"定位城市失敗"
                //                                                type:TSMessageNotificationTypeError];
            }
        } else {
            //            [TSMessage showNotificationWithTitle:@"網(wǎng)絡(luò)錯誤"
            //                                        subtitle:@"請檢查您的網(wǎng)絡(luò)"
            //                                            type:TSMessageNotificationTypeError];
        }
    }];
  第三步,將所有的權(quán)限問題檢查一遍,沒有寫的添加到plist文件上面。(當(dāng)然常定位對應(yīng)的權(quán)限要多幾個,注意添加)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容