تطوير iPhone - CllocationManager مقابل MapKit
-
25-09-2019 - |
سؤال
إذا كنت أرغب في إظهار وضع المستخدم على الخريطة ، وفي الوقت نفسه ، سجل موقع المستخدم ، فهل من الجيد إضافة مراقب إلى Userlocation.location وتسجيل المواقع ، أو إذا ما زلت أستخدم CllocationManager لتسجيل موقع المستخدم واستخدامه MapView.ShowUserLocation لإظهار موقع المستخدم الحالي (المؤشر الأزرق)؟ أريد أن أعرض المؤشر الأزرق الافتراضي الذي يدعمه واجهة برمجة تطبيقات MAPKIT.
أيضًا ، إليك رمز عينة تقريبي:
- (void)viewDidLoad {
...
locationManager = [[CLLocationManager alloc] init];
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.distanceFilter = DISTANCE_FILTER_VALUE;
locationManager.delegate = self;
[locationManager startUpdatingLocation];
myMapView.showUserLocation = YES;
[myMapView addObserver:self forKeyPath:@"userLocation.location" options:0 context:nil];
...
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
// Record the location information
// ...
}
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
NSLog(@"%s begins.", __FUNCTION__);
// Make sure that the location returned has the desired accuracy
if (newLocation.horizontalAccuracy <= manager.desiredAccuracy)
return;
// Record the location information
// ...
}
تحت الغطاء ، أعتقد أن MkMapview يستخدم أيضًا CllocationManager للحصول على موقع المستخدم الحالي؟ لذا ، هل سيخلق هذا أي مشاكل لأنني أعتقد أن كلا من CllocationManager و MapView سيحاولان استخدام خدمات الموقع نفسها؟ هل سيكون هناك أي تعارض ونقص في البيانات الدقيقة/المطلوبة أو الحالية؟
المحلول
انظر الى هذا حتى الدخول: يستخدم CllocationManager نفس البيانات عبر جميع حالاتها ، لذلك لا يوجد تعارض.