mapkit 中有一个MKReverseGeocoder的类,你如果你知道某地的经纬度,你可以通过这个来获得地点的更多信息
,如:国家、城市和街道名等。这个类使用的是google map的服务。
有reverseGeocoding,google同时也提供了google geocoing api的服务,如果我们想通过地名查询来获取这个地方的
更多信息,可以使用这个api。
它可以返回很多种格式的信息,如:json,xml,kml,csv等。方便用户根据需要来使用。
使用格式如下:
http://maps.google.com/maps/api/geocode/json?address=taiguo&sensor=true
返回的json:
{ "results" : [ { "address_components" : [ { "long_name" : "泰国", "short_name" : "TH", "types" : [ "country", "political" ] } ], "formatted_address" : "泰国", "geometry" : { "bounds" : { "northeast" : { "lat" : 20.4651430, "lng" : 105.6368120 }, "southwest" : { "lat" : 5.6127870, "lng" : 97.3433960 } }, "location" : { "lat" : 15.8700320, "lng" : 100.9925410 }, "location_type" : "APPROXIMATE", "viewport" : { "northeast" : { "lat" : 21.28280940, "lng" : 109.1883420 }, "southwest" : { "lat" : 10.30798720, "lng" : 92.796740 } } }, "types" : [ "country", "political" ] } ], "status" : "OK" }
通过这个接口,我们也可以用mapkit framework编写自己的地点查询程序。
cocoa中我没有发现解析json的工具,可能了解的不太深吧,到网上找到一个叫stig-json-framework的工具,
可以使用这个很方便的把json解析成一个NSDictionary。
下载好这个工具,在需要使用json的文件里引用相应的头文件(我的是引用了JSON.h的文件)
然后使用如下代码将json解析成NSDictionary:
NSURL * url = [NSURL URLWithString:@"http://maps.google.com/maps/api/geocode/json?address=gulou&sensor=true"]; NSString *jsonString = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil]; NSDictionary * jsonDic = [jsonString JSONValue];
这个获得的NSDictionary里有经纬度等各种信息,信息还是很全的,
接下来就可以根据需要编写程序代码了。