是否可以通过在iPhone中提供地点名称来获取坐标?我不想使用任何Web服务,因为它们没有什么限制。我可以使用iPhone SDK吗?
提前致谢。
答案 0 :(得分:0)
正如 @ raj2raaz 所提到的,我们无法通过指定地点的名称来获取坐标,您必须在iPhone中使用Web服务来获取坐标。
http://iphonesdksnippets.com/post/2010/02/15/Get-Coordinates-from-Address.aspx
答案 1 :(得分:0)
简短的回答是否定的,你不能给出一个地址并获得经度/纬度位置。有些人编写了使用不同Web服务的库,有关详细信息,请参阅此答案:Forward geocoding from the iPhone。
我知道你说你不想使用各种网络服务,但是,你不能免费获得所有东西。有人的CPU周期将不得不进行搜索。在我看来,大多数人都有适合大多数应用程序的条款。
答案 2 :(得分:0)
是的,这是可能的,但你必须做一些工作。我目前正在将这项工作投入到我的一个项目中。 GeoNames地理数据库涵盖所有国家/地区,包含800多万个可免费下载的地名。我正在将cites with population over 1,000 3.9M压缩文件添加到我的项目中。它包含每个城市的长/纬。我将把每个城市解析成一个自定义的NSObject并将它们加载到Core Data。
在我的项目中,我将找到一个特定纬度/经度坐标的壁橱城市,而不是进行城市名称搜索。 Haversine formula用于计算球体上两点之间的距离。以下是Objective-C和Perl中的公式。 我可以找到解析该数据的当前进度here。我还有工作要做。
答案 3 :(得分:0)
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:YOUR_LOCATION completionHandler:^(NSArray* placemarks, NSError* error)
{
NSLog(@"completed");
if ( error )
{
NSLog(@"error = %@", error );
}
else
{
//Here you get information about the place in placemarks array
}
}];
答案 4 :(得分:-1)
你可以通过调用这个方法获得坐标。这个方法需要地址(地名)。
-(CLLocationCoordinate2D) addressLocation:(NSString *)addrss {
NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv",
[addrss stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSString *locationString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString]];
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;
}