标签: clgeocoder

将坐标转换为城市名称?

如何使用MapKit从坐标获取地址?

当我在地图上长按它获取坐标时,我有这个代码:

func didLongPressMap(sender: UILongPressGestureRecognizer) {

    if sender.state == UIGestureRecognizerState.Began {
        let touchPoint = sender.locationInView(self.mapView)
        let touchCoordinate = self.mapView.convertPoint(touchPoint, toCoordinateFromView: self.mapView)
        var annotation = MKPointAnnotation()
        annotation.coordinate = touchCoordinate
        annotation.title = "Your position"
        self.mapView.addAnnotation(annotation) //drops the pin
        println("lat:  \(touchCoordinate.latitude)")
        var num = (touchCoordinate.latitude as NSNumber).floatValue
        var formatter = NSNumberFormatter()
        formatter.maximumFractionDigits = 4
        formatter.minimumFractionDigits = 4
        var str = formatter.stringFromNumber(num)
        println("long: \(touchCoordinate.longitude)")
        var num1 = (touchCoordinate.longitude as NSNumber).floatValue
        var formatter1 = NSNumberFormatter()
        formatter1.maximumFractionDigits = 4
        formatter1.minimumFractionDigits = 4
        var str1 = formatter1.stringFromNumber(num1) …
Run Code Online (Sandbox Code Playgroud)

mapkit ios clgeocoder swift clplacemark

46
推荐指数
7
解决办法
5万
查看次数

如何从reverseGeocodeLocation本地化地址结果?

我的iphone应用程序应该根据用户的经度和经度来解析地址.reverseGeocodeLocation工作正常,但结果是英文的.

有没有办法将结果本地化为其他语言?

无法在苹果或其他任何地方找到有关它的任何信息.

我使用的代码是:

CLGeocoder *geocoder = [[[CLGeocoder alloc] init] autorelease];
CLLocation *location = [[[CLLocation alloc] 
       initWithLatitude:coord.latitude longitude:coord.longitude] autorelease];

[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];
        return;
    }
    if(placemarks && placemarks.count > 0)
    {
      //do something
        CLPlacemark *topResult = [placemarks objectAtIndex:0];

        NSString *addressTxt = [NSString stringWithFormat:@"%@ %@,%@ %@", 
           [topResult subThoroughfare],[topResult thoroughfare],
           [topResult locality], [topResult administrativeArea]];
    }
}
Run Code Online (Sandbox Code Playgroud)

iphone xcode ios clgeocoder

25
推荐指数
3
解决办法
9184
查看次数

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

我的应用程序中有一个搜索栏,用户可以输入一个地址,它会产生地理编码结果.根据以下代码,结果将根据用户类型进行更新:

- (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
    }];
}
Run Code Online (Sandbox Code Playgroud)

这适用于用户输入搜索字段的前几个字符.但是,在用户重复输入更多字符后,地理编码器开始出现以下错误(我知道这意味着网络存在问题):

ERROR during geocode: Error Domain=kCLErrorDomain Code=2 "The operation couldn’t be completed. (kCLErrorDomain error 2.)"
Run Code Online (Sandbox Code Playgroud)

在重新加载整个ViewController之前,地理编码器不会再次运行.为什么会发生这种情况,我该怎么做才能解决它?

iphone core-location mapkit ios clgeocoder

25
推荐指数
2
解决办法
2万
查看次数

CLPlacemark - 状态缩写?

我想知道是否可以从CLPlacemark获得州缩写?

在Apple的CLPlacemark参考中,它指出:

administrativeArea与地标关联的州或省.(只读)@property(非原子,只读)NSString*administrativeArea讨论例如,如果地标位置是Apple的总部,则此属性的值将是字符串"CA"或"California".

但每当我使用它时,我只获得完整状态(即加利福尼亚州)而不是缩写(即CA).有人能帮我一下吗?

iphone ios clgeocoder

18
推荐指数
2
解决办法
5959
查看次数

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

在我的一个应用程序中,我需要添加一个按名称查找城市的功能.我正在使用它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)")
    }
})
Run Code Online (Sandbox Code Playgroud)

它在大多数情况下都能很好地工作.但是,我最近注意到一些失败的情况.以下是一些示例的输出:

寻找'米兰' - 工作

locality: Optional("Milan")
name: Optional("Milan")
country: Optional("Italy")
formatted address: Optional([SubAdministrativeArea: Milan, State: Lombardy, CountryCode: IT, Country: Italy, Name: Milan, FormattedAddressLines: (
    Milan,
    Italy
), City: Milan])
Run Code Online (Sandbox Code Playgroud)

这是正确的输出

寻找'意大利,德克萨斯州' - 工作

德克萨斯州有一个叫意大利的小镇.如果我键入'Italy,TX',则输出为:

locality: Optional("Italy")
name: Optional("Italy")
country: Optional("United States")
formatted address: Optional([SubAdministrativeArea: Ellis, State: …
Run Code Online (Sandbox Code Playgroud)

objective-c ios clgeocoder swift swift2

16
推荐指数
1
解决办法
3423
查看次数

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

试图从AddressDictionary获取格式化地址,这是我从CLGeocoder获得的.使用以下代码,没有结果:

subtitle = [NSString stringWithString:[[addressDict objectForKey:@"FormattedAddressLines"]objectAtIndex:0]];
Run Code Online (Sandbox Code Playgroud)

还尝试过:

subtitle = [[[ABAddressBook sharedAddressBook] formattedAddressFromDictionary:placemark.addressDictionary] string];
Run Code Online (Sandbox Code Playgroud)

但是这段代码似乎只适用于Mac OS X.

编译器询问ABAdressBook,但我导入了两个头文件.

#import <AddressBook/ABAddressBook.h>
#import <AddressBook/AddressBook.h>
Run Code Online (Sandbox Code Playgroud)

addressbook ios clgeocoder

15
推荐指数
4
解决办法
3万
查看次数

CLGeocoder返回错误:无法完成操作.(kCLErrorDomain错误8.)

我收到addressString后调用此函数:

[[self geocoder] geocodeAddressString:addressString completionHandler:^(NSArray *placemarks, NSError *error) {
            if (error) {
                block(nil, nil, error);
            } else {
                CLPlacemark *placemark = [placemarks onlyObject];
                block(placemark, self.name, error);
            }
        }];
Run Code Online (Sandbox Code Playgroud)

它返回地标为nil,错误为:Error Domain = kCLErrorDomain Code = 8"操作无法完成.(kCLErrorDomain error 8.)"

我的地址字符串是从这个字典中为placeDictionary [@"formatted_address"]检索的:

placeDictionary = 
{
"address_components" =     (
            {
        "long_name" = "Palolem Beach";
        "short_name" = "Palolem Beach";
        types =             (
            "natural_feature",
            establishment
        );
    },
            {
        "long_name" = "South Goa";
        "short_name" = "South Goa";
        types =             (
            "administrative_area_level_2",
            political
        );
    },
            {
        "long_name" = …
Run Code Online (Sandbox Code Playgroud)

objective-c geolocation cllocation ios clgeocoder

14
推荐指数
2
解决办法
2万
查看次数

从CLGeocoder获取当前的城市和国家?

我一直在互联网上试图找到如何从这个城市和国家CLGeocoder.我可以轻松获得经度和纬度,但我需要城市和国家的信息,而且我一直在使用已弃用的方法等等,任何想法?它基本上需要获取位置,然后有一个NSString国家和一个NSString城市,所以我可以使用它们查找更多信息或将它们放在标签上等.

nsstring ios currentlocation clgeocoder ios6

10
推荐指数
1
解决办法
1万
查看次数

在ios中搜索城市名称

我想在我的iPad应用程序中提供用户输入字段,用户可以在其中键入城市或位置的名称,应用程序应显示用户可以选择的可能城市/位置列表,我可以获得地理坐标从(在a上添加标记MKMapView).

我试过了CLGeocoder,但似乎它只给我一个结果,加上结果不准确.例如,将"Stutt"作为地址字符串产生"Straubing,德国"作为结果,wheareas"Stuttgart"将提出"斯图加特"(正确)作为结果(因此我预计"斯图特"至少有2个结果).此外,在美国有一个叫斯图加特的城市,结果也没有给出.(我使用了本页最底部的示例代码:https://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/LocationAwarenessPG/UsingGeocoders/UsingGeocoders.html)

任何人都可以根据用户文本输入指导我找到适合城市名称/位置查找的解决方案吗?

geolocation ipad ios clgeocoder

9
推荐指数
1
解决办法
4511
查看次数

CLGeocodeCompletionHandler只有一个地标条目

的文档

- (void)geocodeAddressString:(NSString *)addressString completionHandler:(CLGeocodeCompletionHandler)completionHandler;
Run Code Online (Sandbox Code Playgroud)

文件明确指出:

在前向地理编码请求的情况下,如果提供的信息产生多个可能的位置,则可以返回多个地标对象.

声明它返回一个地标数组.然而,即使我搜索我确定知道的物品有多个条目(好莱坞,华盛顿,丹麦,主要街道等)我总是只有一个条目.

有些人只是耸耸肩说使用谷歌API,但我担心请求限制.

是否有一些设置或黑客来解决这个问题,还是CLGeocoder简单地破坏了?

iphone geocoding objective-c clgeocoder

9
推荐指数
1
解决办法
387
查看次数