在我的应用程序中,我打算使用前向GeoCoding来允许用户在搜索栏中输入地址,然后在地图上放置标记。
我可以仔细检查以下方法是否适用于我打算做的事情吗?
-(CLLocationCoordinate2D) addressLocation {
NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv",
[searchBar.text stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
//NSString *locationString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString]];
NSError* error;
NSString *locationString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString] encoding:NSASCIIStringEncoding error:&error];
NSArray *listItems = [locationString componentsSeparatedByString:@","];
double latitude = 0.0;
double longitude = 0.0;
if([listItems count] >= 4 && [[listItems objectAtIndex:0] isEqualToString:@"200"]) {
latitude = [[listItems objectAtIndex:2] doubleValue];
longitude = [[listItems objectAtIndex:3] doubleValue];
}
else {
//Show error
}
CLLocationCoordinate2D location;
location.latitude = latitude;
location.longitude = longitude;
return location;
}
我将调用上述方法来获取纬度和经度,然后相应地在地图上添加注释。我是否需要为此注册APIKey?如果是的话,我在哪里可以包含它,在这种情况下我仍可以为我的应用收取费用吗?
谢谢!
Zhen Hoe
答案 0 :(得分:3)
虽然api中包含反向地理编码,但正常的地理编码不是,并且需要Google的许可。可悲的是,我可以告诉你这也不便宜,每年大约8,000英镑以上,具体取决于音量。
另一种方法是使用免费的地理编码服务,只需谷歌它,你会发现一些。此外,其他地图服务提供商(如CloudMade)只需花费一小部分费用即可完成类似工作...... CloudMade