Iphone 如何实现获取纬度和经度的代码?
大家好,如何获取位置的纬度和经度值?我尝试使用下面的代码,但我得到了错误的回应,我需要你的帮助来解决这个问题Iphone 如何实现获取纬度和经度的代码?,iphone,ios5,geocoding,Iphone,Ios5,Geocoding,大家好,如何获取位置的纬度和经度值?我尝试使用下面的代码,但我得到了错误的回应,我需要你的帮助来解决这个问题 - (CLLocationCoordinate2D) geoCodeUsingAddress:(NSString *)address { NSString *city,*state,*zip; city=@"Hyderabad"; state=@"Andrapradesh"; zip=@"22345"; address=city,state,zip; NSLog(@"#####
- (CLLocationCoordinate2D) geoCodeUsingAddress:(NSString *)address
{
NSString *city,*state,*zip;
city=@"Hyderabad";
state=@"Andrapradesh";
zip=@"22345";
address=city,state,zip;
NSLog(@"##########%@",address);
double latitude = 0, longitude = 0;
NSString *esc_addr = [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *req = [NSString stringWithFormat:@"http://maps.google.com/maps/api/geocode/json?sensor=false&address=%@", esc_addr];
NSString *result = [NSString stringWithContentsOfURL:[NSURL URLWithString:req] encoding:NSUTF8StringEncoding error:NULL];
NSLog(@"333333%@",result);
if (result) {
NSScanner *scanner = [NSScanner scannerWithString:result];
NSLog(@"##########%@",scanner);
if ([scanner scanUpToString:@"\"lat\":" intoString:nil] && [scanner scanString:@"\"lat\":" intoString:nil]) {
[scanner scanDouble:&latitude];
NSLog(@"4444444%@",scanner);
NSLog(@"5555%@",latitude);
if ([scanner scanUpToString:@"\"lng\":" intoString:nil] && [scanner scanString:@"\"lng\":" intoString:nil]) {
[scanner scanDouble:&longitude];
NSLog(@"6666%@",scanner);
NSLog(@"7777%@",longitude);
}
}
}
CLLocationCoordinate2D center;
center.latitude = latitude;
NSLog(@"##########%@",latitude);
center.longitude = longitude;
return center;
}
333333 {
"results" : [
{
"address_components" : [
{
"long_name" : "Hyderabad",
"short_name" : "Hyderabad",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Ranga Reddy",
"short_name" : "R.R. District",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Andhra Pradesh",
"short_name" : "Andhra Pradesh",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "India",
"short_name" : "IN",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Hyderabad, Andhra Pradesh, India",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 17.57944810,
"lng" : 78.69135810
},
"southwest" : {
"lat" : 17.23837080,
"lng" : 78.24014110
}
},
"location" : {
"lat" : 17.3850440,
"lng" : 78.4866710
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 17.55533690,
"lng" : 78.74278980
},
"southwest" : {
"lat" : 17.21459250,
"lng" : 78.23055219999999
}
}
},
"types" : [ "locality", "political" ]
}
],
"status" : "OK"
}
2012-03-29 23:56:58.577 SVGeocoder[670:11603]
####
2012-03-29 23:56:58.578 SVGeocoder[670:11603](空)
试试这个:
- (CLLocationCoordinate2D) geoCodeUsingAddress: (NSString *) address
{
CLLocationCoordinate2D myLocation;
NSString *esc_addr = [address stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
NSString *req = [NSString stringWithFormat: @"http://maps.google.com/maps/api/geocode/json?sensor=false&address=%@", esc_addr];
NSDictionary *googleResponse = [[NSString stringWithContentsOfURL: [NSURL URLWithString: req] encoding: NSUTF8StringEncoding error: NULL] JSONValue];
NSDictionary *resultsDict = [googleResponse valueForKey: @"results"];
NSDictionary *geometryDict = [resultsDict valueForKey: @"geometry"];
NSDictionary *locationDict = [geometryDict valueForKey: @"location"];
NSArray *latArray = [locationDict valueForKey: @"lat"]; NSString *latString = [latArray lastObject];
NSArray *lngArray = [locationDict valueForKey: @"lng"]; NSString *lngString = [lngArray lastObject];
myLocation.latitude = [latString doubleValue];
myLocation.longitude = [lngString doubleValue];
LogInfo(@"lat: %f\tlon:%f", myLocation.latitude, myLocation.longitude);
return myLocation;
}
这一行应该做什么:
address=city,state,zip代码>?这甚至都不是有效的目标c。这是编译吗?你到底在问什么,这一点都不清楚。您正在列出一个响应,这是您得到的吗?你的问题是什么?我得到了那个响应,但我想提取数值(纬度和经度)我得到如下异常,如何解决它?[\uu NSCFString JSONValue]:未识别的选择器发送到实例0x83a1000 2012-03-30 01:21:19.812 SVGeocoder[940:11603]***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[\uu NSCFString JSONValue]:发送到实例0x83a1000的无法识别的选择器'***第一次抛出调用堆栈:(0x16ee052 0x13d9d0a 0x16efced 0x0x16efec9 0x3945c2 0x39455a 0x439b76 0x43a03f 0x4392fe 0x3B9A330 0x3b9c56 0x3a0384 0x393aa9 0x1de4fa9 0x16c21c5 0x1627022 0x162590a 0x1624db4 0x1624CB 0x1de3879 0x1de393e 0x391a9b 0x1dcd 0x1d45)终止调用引发异常(lldb)