2 yue1liang1chuan yue1liang1chuan 于 2013.04.15 13:59 提问

从邮政编码或者城市获取坐标

使用MAP KIT和 CORE LOCATION。需要从邮政编码或者city/state中获取位置。

有什么实现方法么?谢谢。

2个回答

xinyoulingxi1_tong
xinyoulingxi1_tong   2013.04.15 14:55
已采纳

你可以使用 CLGeocoder 类来实现,这个类就是用来转换地址到经纬度的。

[geocoder geocodeAddressString:@"<postcode here>"
             completionHandler:^(NSArray* placemarks, NSError* error){
                 for (CLPlacemark* aPlacemark in placemarks)
                 {
                     // Process the placemark.
                 }
}];

这里面有很多方法,包括可以限制搜索区域等

loveiflower
loveiflower   2013.04.15 15:34

可以用到Google API接口:

-(CLLocationCoordinate2D) getLocationFromAddressString:(NSString*) addressStr {

double latitude = 0, longitude = 0;
NSString *esc_addr =  [addressStr 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];
if (result) {
    NSScanner *scanner = [NSScanner scannerWithString:result];
    if ([scanner scanUpToString:@"\"lat\" :" intoString:nil] && [scanner scanString:@"\"lat\" :" intoString:nil]) {
        [scanner scanDouble:&latitude];
        if ([scanner scanUpToString:@"\"lng\" :" intoString:nil] && [scanner scanString:@"\"lng\" :" intoString:nil]) {
            [scanner scanDouble:&longitude];
        }
    }
}
CLLocationCoordinate2D center;
center.latitude = latitude;
center.longitude = longitude;
return center;
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!