qua*_*ato 2 iphone geocoding google-api reverse-geocoding
试试:http://maps.googleapis.com/maps/api/geocode/json?address =Őrbottyán,Hungary&sensor = true
在iPhone 4和模拟器上,
-(void)requestFailed:(ASIHTTPRequest *)request {
NSLog(@"geocode fail code: %d",[request responseStatusCode]);
NSLog(@"geocoding failed: %@",[request responseString]);
}
2011-06-01 11:36:27.343 app[1174:307] geocode fail code: 0
2011-06-01 11:36:27.345 app[1174:307] geocoding failed: (null)
Run Code Online (Sandbox Code Playgroud)
在浏览器中,我得到:
"results" : [
{
"address_components" : [
{
"long_name" : "?rbottyán",
"short_name" : "?rbottyán",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Pest",
"short_name" : "Pest",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Hungary",
"short_name" : "HU",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "?rbottyán, Hungary",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 47.7138950,
"lng" : 19.34353090
},
"southwest" : {
"lat" : 47.63339999999999,
"lng" : 19.2051070
}
},
"location" : {
"lat" : 47.6846190,
"lng" : 19.2883260
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 47.7138950,
"lng" : 19.34353090
},
"southwest" : {
"lat" : 47.63339999999999,
"lng" : 19.2051070
}
}
},
"types" : [ "locality", "political" ]
}
Run Code Online (Sandbox Code Playgroud)
],"状态":"确定"}
其他带有标准英文字符的请求可以在设备上正常工作和返回.
在您的代码中的某个时刻,您可能正在使用NSURL该类,并且:
该NSURL类将无法创建一个新的NSURL对象,如果传递的路径是没有很好地形成,该路径必须符合RFC是不会得逞的案件2396实例是包含空格字符和高比特字符的字符串.如果创建NSURL对象失败,则创建方法返回nil,您必须准备好处理它.
[NSString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]在将字符串传递给之前,您需要将"Őrbottyán"中的高位字符转换为百分比转义符NSURL.当您将不合规的字符串放入URL字段时,现代浏览器将默默地为您进行此转换,但在代码中您必须明确地执行此操作.
编辑包括quantumpotato的调查结果如下:谷歌地图会做正确的事情,如果"Őrbottyán"转换为"Orbottyan"(一个"有损"转换为ASCII编码),并转换能够往返通过执行NSData:
NSData *data = [urlString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *dataString = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSURL *url = [NSURL URLWithString:dataString];
[dataString release];
Run Code Online (Sandbox Code Playgroud)
我怀疑"有损转换为ASCII"可能不适用于所有网站,但它已经过Google地图测试和验证,所以你有它.:-)
| 归档时间: |
|
| 查看次数: |
3546 次 |
| 最近记录: |