使用谷歌地图 API iOS 进行反向地理编码

2024-04-15

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

- (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) 

通过你的纬度和经度它会给你正确的地址......

[[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);
            }
        }];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用谷歌地图 API iOS 进行反向地理编码 的相关文章

随机推荐