2015年6月26日星期五

[笔记] CLLocationManager

Demo上传到GitHub了:
https://github.com/1992chenlu/CLLocationManagerDemo

(1)开始以为很好用(但实际上还没有拿来抄的水平)的CLLocationManager的demo:
https://github.com/alienjun/CLLocationManager-iOS8

(2)真正可抄的Map + locationManager的代码(感觉代码很简洁):
http://stackoverflow.com/questions/25848125/ios-8-mkmapview-user-location-request-failure
上面这个链接里的代码唯一的问题是少了一句这个(不加这一句的话,那个叫做didUpdateLocations的回调函数是不会被调用的)
[self.locationManager startUpdatingLocation];

(3)加Marker,抄的下面这个链接Marker部分的代码:
http://www.appcoda.com/ios-programming-101-drop-a-pin-on-map-with-mapkit-api/
// Add an annotation
    MKPointAnnotation *point = [[MKPointAnnotation alloc] init];
    point.coordinate = userLocation.coordinate;
    point.title = @"Where am I?";
    point.subtitle = @"I'm here!!!";
    
    [self.mapView addAnnotation:point];

另外,关于清空Marker:
[mapView removeAnnotations:mapView.annotations];

(4)用NSTimer实现每隔1秒钟向控制台输出一次当前位置:
NSTimer的资料:
http://stackoverflow.com/questions/6152963/how-to-display-seconds-using-nstimer
初始化一个这样的NSTimer变量:
_timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES];
再写一下这个函数里面:
- (void)timerFireMethod:(NSTimer*)theTimer {
    //remove a second from the display
    NSLog(@"Latitude:%f Longitude:%f", self.locationManager.location.coordinate.latitude, self.locationManager.location.coordinate.longitude);
}
就可以实现一秒钟输出一次当前的坐标了。

(5)给一个坐标,用Geocoder的reverseGeocodeLocation把它转换成对应的地址。

没有评论:

发表评论