使用Google Maps API iOS进行反向地理编码 [英] Reverse Geocoding using google maps api iOS

查看:75
本文介绍了使用Google Maps API iOS进行反向地理编码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用以下代码进行反向地址编码

I am doing reverse geocoding using following code

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
    {   
    curLoc=newLocation;
    if (curLoc != nil) {
        latitude=curLoc.coordinate.latitude;
        longitude=curLoc.coordinate.longitude;
        //[self loadMap:latitude second:longitude];
        [self MarkerPoint:latitude+0.04 second:longitude+0.1 third:latitude-0.04 forth:longitude-0.1];

        NSError *error;
        NSString *lookupString = [NSURL URLWithString:[NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/geocode/json?latlng=%f,%f&sensor=false",latitude,longitude]];
        NSLog(@"URL: %@",lookupString);
        lookupString = [lookupString stringByReplacingOccurrencesOfString:@" " withString:@"+"];

        NSData *jsonResponse = [NSData dataWithContentsOfURL:[NSURL URLWithString:lookupString]];

        NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonResponse options:kNilOptions error:&error];

        self.locationArray = [[jsonDict valueForKey:@"results"] valueForKey:@"formatted_address"];
        int total = self.locationArray.count;
        NSLog(@"locationArray count: %d", self.locationArray.count);

        for (int i = 0; i < total; i++)
        {
            NSString *statusString = [jsonDict valueForKey:@"status"];
            NSLog(@"JSON Response Status:%@", statusString);
            NSLog(@"Address: %@", [self.locationArray objectAtIndex:i]);
        }
    }
}    

现在我遇到此错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSURL stringByReplacingOccurrencesOfString:withString:]: unrecognized selector sent to instance 0xbce98c0'
*** First throw call stack:
(
    0   CoreFoundation                      0x034551e4 __exceptionPreprocess + 180
    1   libobjc.A.dylib                     0x031a98e5 objc_exception_throw + 44
    2   CoreFoundation                      0x034f2243 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275
    3   CoreFoundation                      0x0344550b ___forwarding___ + 1019
    4   CoreFoundation                      0x034450ee _CF_forwarding_prep_0 + 14
    5   MatchPoint                          0x00017fad -[ICSViewController locationManager:didUpdateToLocation:fromLocation:] + 813
    6   CoreLocation                        0x0164655e CLLocationCoordinate2DGetDistanceFrom + 18294
    7   CoreLocation                        0x01645af4 CLLocationCoordinate2DGetDistanceFrom + 15628
    8   CoreLocation                        0x01642e40 CLLocationCoordinate2DGetDistanceFrom + 4184
    9   CoreLocation                        0x0163c680 CLClientInvalidate + 996
    10  CoreFoundation                      0x034140b0 __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 16
    11  CoreFoundation                      0x033dd339 __CFRunLoopDoBlocks + 361
    12  CoreFoundation                      0x033fb753 __CFRunLoopRun + 2355
    13  CoreFoundation                      0x033fa9d3 CFRunLoopRunSpecific + 467
    14  CoreFoundation                      0x033fa7eb CFRunLoopRunInMode + 123
    15  GraphicsServices                    0x051f05ee GSEventRunModal + 192
    16  GraphicsServices                    0x051f042b GSEventRun + 104
    17  UIKit                               0x01e69f9b UIApplicationMain + 1225
    18  MatchPoint                          0x0001d9fd main + 141
    19  libdyld.dylib                       0x03d206d9 start + 1
    20  ???                                 0x00000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

推荐答案

传递您的纬度和经度,它将为您提供正确的地址...

Pass your lattitude and longitude It will give you correct address...

[[GMSGeocoder geocoder] reverseGeocodeCoordinate:CLLocationCoordinate2DMake(coordinate.latitude, coordinate.longitude) completionHandler:^(GMSReverseGeocodeResponse* response, NSError* error) {
            NSLog(@"reverse geocoding results:");
           for(GMSAddress* addressObj in [response results])
            {
                NSLog(@"%@",[response results]);

                NSLog(@"coordinate.latitude=%f", addressObj.coordinate.latitude);
                NSLog(@"coordinate.longitude=%f", addressObj.coordinate.longitude);
                NSLog(@"thoroughfare=%@", addressObj.thoroughfare);
                NSLog(@"locality=%@", addressObj.locality);
                NSLog(@"subLocality=%@", addressObj.subLocality);
                NSLog(@"administrativeArea=%@", addressObj.administrativeArea);
                NSLog(@"postalCode=%@", addressObj.postalCode);
                NSLog(@"country=%@", addressObj.country);
                NSLog(@"lines=%@", addressObj.lines);
            }
        }];

这篇关于使用Google Maps API iOS进行反向地理编码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆