我有一个充满名字和地址的pl ..我希望我的iOS应用程序在地图上显示一个带有他所选人员地址的图钉。我可以将地址导入地图视图并获取引脚吗?如何??谢谢。
答案 0 :(得分:0)
使用CLGeocoder类将地址转换为纬度/经度坐标:
Forward Geocode Example using CLGeocoder
您拥有的地址越准确,结果就越好,因此使用精确的地址,您应该获得非常准确的地址。
答案 1 :(得分:0)
另一种选择是使用Google的地理编码网络服务,只需将地址字符串传递给此功能,您将获得一个包含纬度和范围的CLLocationCoordinate2D。经度。
现在它抓住第0个索引处的位置,这是最接近的匹配结果。注销结果以查看Google的JSON响应。
- (CLLocationCoordinate2D) geoCodeUsingAddress:(NSString *)address
{
NSString *esc_addr = [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *req = [NSString stringWithFormat:@"http://maps.google.com/maps/api/geocode/json?sensor=true&address=%@", esc_addr];
CLLocationCoordinate2D center;
NSString *result = [NSString stringWithContentsOfURL:[NSURL URLWithString:req] encoding:NSUTF8StringEncoding error:NULL];
if (result)
{
//NSLog(@"LOC RESULT: %@", result);
NSError *e;
NSDictionary *resultDict = [NSJSONSerialization JSONObjectWithData: [result dataUsingEncoding:NSUTF8StringEncoding]
options: NSJSONReadingMutableContainers
error: &e];
NSArray *resultsArray = [resultDict objectForKey:@"results"];
if(resultsArray.count > 0)
{
resultDict = [[resultsArray objectAtIndex:0] objectForKey:@"geometry"];
resultDict = [resultDict objectForKey:@"location"];
center.latitude = [[resultDict objectForKey:@"lat"] floatValue];
center.longitude = [[resultDict objectForKey:@"lng"] floatValue];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No Results Found" message:@"No locations were found using, please try again." delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[alert show];
}
//goes through each result
/*for(NSDictionary *dict in resultsArray)
{
resultDict = [dict objectForKey:@"geometry"];
resultDict = [resultDict objectForKey:@"location"];
}*/
}
return center;
}
答案 2 :(得分:-1)
这就是所谓的前向地理编码,并没有内置的API来为您执行此操作。您需要使用外部服务,您使用的服务实际上取决于您的应用程序。
我已经使用了Google的服务。 http://code.google.com/apis/maps/documentation/geocoding/
这是一个非常简单的API,但根据您的应用许可证有限制。我知道还有其他一些服务,但我会将其作为练习留给你。