Tag: clgeocoder

更新从CLGeocoder返回的CLPlacemark的MKMapView

我希望能够通过允许用户在UIAlertView中input地址或位置来更新显示在MKMapView上的区域。 我目前有: if (geocoder.geocoding) [geocoder cancelGeocode]; [geocoder geocodeAddressString:[[alertView textFieldAtIndex:0] text] completionHandler:^(NSArray *placemarks, NSError *error) { if (!error) { NSLog(@"Found a location"); } else { NSLog(@"Error in geocoding"); } NSLog(@"Num found: %d", [placemarks count]); CLPlacemark *placemark = [placemarks objectAtIndex:0]; MKCoordinateRegion region; region.center.latitude = placemark.region.center.latitude; region.center.longitude = placemark.region.center.longitude; MKCoordinateSpan span; double radius = placemark.region.radius / 1000; NSLog(@"Radius […]

iOS Swift – CLGeocoder completionHandler块

我试图parsing一个位置(CLLocation)到一个string。 func locationToString (currentLocation: CLLocation) -> String? { var whatToReturn: String? CLGeocoder().reverseGeocodeLocation(currentLocation, completionHandler: { (placemarks: [AnyObject]!, error: NSError!) in if error == nil && placemarks.count > 0 { let location = placemarks[0] as CLPlacemark whatToReturn = "\(location.locality) \(location.thoroughfare) \(location.subThoroughfare)" } }) return whatToReturn } 显然,whatToReturn总是返回null,因为completionHandler在后台运行。 我很难理解在completionHandler完成时如何更新我的string? 谢谢。

使用CLGeocoder转发地理编码示例

有关如何在Apple文档旁边使用前向地理编码的实际示例或指导的说明。 这是非常通用的(我不明白) 请这将是伟大的! 也有人知道他们是否使用Google API来实现相同或自己的?

使用reverseGeocodeLocation设置地址string:并从方法返回

我尝试本地化一个地址string的开始和结束点,以便我可以将其存储到NSUserDefaults 。 问题是该方法继续执行,并没有设置我的variables。 NSLog(@"Begin"); __block NSString *returnAddress = @""; [self.geoCoder reverseGeocodeLocation:self.locManager.location completionHandler:^(NSArray *placemarks, NSError *error) { if(error){ NSLog(@"%@", [error localizedDescription]); } CLPlacemark *placemark = [placemarks lastObject]; startAddressString = [NSString stringWithFormat:@"%@ %@\n%@ %@\n%@\n%@", placemark.subThoroughfare, placemark.thoroughfare, placemark.postalCode, placemark.locality, placemark.administrativeArea, placemark.country]; returnAddress = startAddressString; //[self.view setUserInteractionEnabled:YES]; }]; NSLog(returnAddress); NSLog(@"Einde"); 这是我的应用程序debugging器显示的内容: 开始 einde 例如,如果我的位置的地址是“Mainstreet 32​​,CITY”。 那么我想看到的是以下几点: 开始 Mainstreet 32​​,CITY […]

CLGeocoder返回错误的结果,当城市名称等于某个国家的名称(而不仅是)

在我的一个应用程序中,我需要添加一个按名称查找城市的function。 我正在使用CLGeocoder来实现这一点,我希望它有一个相同的iOS天气应用程序的行为。 下面是我有的代码: CLGeocoder().geocodeAddressString(searchBar.text!, completionHandler:{ (placemarks, error) -> Void in guard let nonNilMarks = placemarks else {return} for placemark in nonNilMarks { print("locality: \(placemark.locality)") print("name: \(placemark.name)") print("country: \(placemark.country)") print("formatted address: \(placemark.addressDictionary)") } }) 它在大多数情况下运作良好。 但是,最近我注意到一些失败的情况。 以下是一些例子的输出: search“米兰” – 作品 locality: Optional("Milan") name: Optional("Milan") country: Optional("Italy") formatted address: Optional([SubAdministrativeArea: Milan, State: Lombardy, CountryCode: IT, Country: Italy, […]

如何从AddressDictionary获取格式化的地址NSString?

尝试从AddressGeneration获得格式化的地址,我从CLGeocoder获得。 使用下面的代码没有结果: subtitle = [NSString stringWithString:[[addressDict objectForKey:@"FormattedAddressLines"]objectAtIndex:0]]; 还试过: subtitle = [[[ABAddressBook sharedAddressBook] formattedAddressFromDictionary:placemark.addressDictionary] string]; 但是这个代码似乎只适用于Mac OS X。 编译器询问有关ABAdressBook,但我有两个头文件导入。 #import <AddressBook/ABAddressBook.h> #import <AddressBook/AddressBook.h>

与CLGeocoder重复地理编码后,kCLErrorDomain错误2

我在我的应用程序中有一个search栏,用户可以input一个地址,它会提供地理编码的结果。 结果更新为用户types,根据以下代码: – (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { … if (self.geocoder.geocoding) [self.geocoder cancelGeocode]; [self.geocoder geocodeAddressString:searchText completionHandler:^(NSArray *placemarks, NSError *error) { if (error != nil) { NSLog(@"ERROR during geocode: %@", error.description); return; } //update the view }]; } 这适用于用户inputsearch字段的前几个字符。 然而,在用户重复input更多的字符后,地理编码器开始给出以下错误(我知道这意味着networking有问题): ERROR during geocode: Error Domain=kCLErrorDomain Code=2 "The operation couldn't be completed. (kCLErrorDomain error 2.)" 在整个ViewController重新加载之前,地理编码器不能再次工作。 为什么会发生这种情况,我能做些什么来解决呢?

Map上的多个位置(使用MKMapItem和CLGeocoder)

我试图在MKMapItem显示多个位置。 我从CLGeocoder获取这些位置,不幸的是它只接受一个位置。 即使我通过一个NSArray它只是返回一个位置。 以下工作适用于单个位置,但不适用于多个位置。 我怎样才能对多个地点进行地理编码? Class mapItemClass = [MKMapItem class]; if (mapItemClass && [mapItemClass respondsToSelector:@selector(openMapsWithItems:launchOptions:)]) { NSArray *addresses = @[@"Mumbai",@"Delhi","Banglore"]; CLGeocoder *geocoder = [[CLGeocoder alloc] init]; [geocoder geocodeAddressString:@[addresses] completionHandler:^(NSArray *placemarks, NSError *error) { CLPlacemark *geocodedPlacemark = [placemarks objectAtIndex:0]; MKPlacemark *placemark = [[MKPlacemark alloc] initWithCoordinate:geocodedPlacemark.location.coordinate addressDictionary:geocodedPlacemark.addressDictionary]; MKMapItem *mapItem = [[MKMapItem alloc] initWithPlacemark:placemark]; [mapItem setName:geocodedPlacemark.name]; [MKMapItem openMapsWithItems:@[mapItem] […]