我正在使用此代码获取当前位置,希望使用此信息进行共享,例如whatsapp。在共享位置按钮上点击我想向其他用户发送经度和纬度。但它显示出完全不同的位置
CLLocationManager *lm = [[CLLocationManager alloc] init];
lm.delegate = self;
lm.desiredAccuracy = kCLLocationAccuracyBest;
lm.distanceFilter = kCLDistanceFilterNone;
[lm startUpdatingLocation];
CLLocation *location = [lm location];
CLLocationCoordinate2D coord = [location coordinate] ;
Class mapItemClass = [MKMapItem class];
if (mapItemClass && [mapItemClass respondsToSelector:@selector(openMapsWithItems:launchOptions:)])
{
// Create an MKMapItem to pass to the Maps app
CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(coord.longitude, coord.latitude);
MKPlacemark *placemark = [[MKPlacemark alloc] initWithCoordinate:coordinate addressDictionary:nil];
MKMapItem *mapItem = [[MKMapItem alloc] initWithPlacemark:placemark];
[mapItem setName:@"My Place"];
// Pass the map item to the Maps app
[mapItem openInMapsWithLaunchOptions:nil];
}
是否有可能像whatsapp显示附近的街道或地名以分享。
答案 0 :(得分:0)
您可以使用 CLLocationManagerDelegate 更新位置,并将其存储在全局变量中。
将locationManager初始化为
_locationManager = [[CLLocationManager alloc] init];
_locationManager.delegate = _locationObjVC;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[_locationManager startUpdatingLocation]; // start updating it..
//处理delgate
-(void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
CLLocation *location = [[CLLocation alloc] initWithLatitude:_userAnnotationPoint.coordinate.latitude longitude:_userAnnotationPoint.coordinate.longitude];
[_geocoder reverseGeocodeLocation:location completionHandler:
^(NSArray *placemarks, NSError *error)
{
NSLog(@"reverseGeocodeLocation:completionHandler: Completion Handler called!");
if (error){
NSLog(@"Geocode failed with error: %@", error);
//[self displayError:error];
_userAnnotationPoint.subtitle = [NSString stringWithFormat:@"Lati:%f Long:%f",_userAnnotationPoint.coordinate.latitude,_userAnnotationPoint.coordinate.longitude];
}
else
{
CLPlacemark *placemark = [placemarks objectAtIndex:0];
NSLog(@"Received placemarks: %@", [NSString stringWithFormat:@"%@",[[placemark.addressDictionary valueForKey:@"FormattedAddressLines"] componentsJoinedByString:@", "]]);
// clickedAnnotationPoint.subtitle = [NSString stringWithFormat:@"%@ %@ %@ %@ %@ %@ %@ %@ %@",
// placemark.ISOcountryCode,placemark.country,placemark.postalCode,placemark.administrativeArea, placemark.subAdministrativeArea,placemark.locality,placemark.subLocality,placemark.thoroughfare, placemark.subThoroughfare];
_userAnnotationPoint.subtitle = [NSString stringWithFormat:@"%@",[[placemark.addressDictionary valueForKey:@"FormattedAddressLines"] componentsJoinedByString:@", "]];
}
}];
}