我正在使用Objective-C开发FitnessApp。 此应用程序具有跟踪步行用户的位置和绘制用户路径的功能。 我使用CLocationManager并在其委托中获取用户位置。 这是我的代码。
myLocation.desiredAccuracy = kCLLocationAccuracyBest ;
myLocation.distanceFilter = 12 ;
myLocation.activityType = CLActivityTypeAutomotiveNavigation;
myLocation.delegate = self;
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
CLLocation *newLocation = locations.lastObject;
GMSMarker *marker = [[GMSMarker alloc] init];
marker.position = newLocation.coordinate;
marker.map = mapView;
GMSCameraPosition *camera = [GMSCameraPosition cameraWithTarget:newLocation.coordinate zoom:ZOOM];
[mapView animateToCameraPosition:camera];
}
但结果是非常错误的,它非常震动和ZIGZAG甚至我在街上奔跑。顺便说一句,我把它与谷歌地图导航比较,这是正确的, 我错了什么?我该如何开发像Uber这样的GPS跟踪模块,谷歌地图没有摇晃?
Plz帮助我。
答案 0 :(得分:0)
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
if ([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)])
{
[self.locationManager requestWhenInUseAuthorization];
[self.locationManager startUpdatingLocation];
self.locationManager.pausesLocationUpdatesAutomatically = NO;
[self updateMapWithCoordinates:self.userLocationcoordinates];
}
首先询问系统是否提供位置,然后询问cal startupdatinglocation,并将其设置为Stop to Know, 现在,每次更新位置时,都可以了解您的位置..
答案 1 :(得分:0)
你必须发展核心动作。一般上面的方法有很长的延迟和错误的位置。
当你保持一个位置时,你会得到几个位置。
所以你必须使用核心动作。