我正试图在附近这样的地方做:
我用谷歌api和其他一些人搜索了互联网上各种各样的tuturials,但我不能得到一个很好的方法去做,我想我必须向google api发送请求,它会返回一些数据,但我完全迷失在这一部分...我有我想发送的所有地址,但只有它。 任何人都知道一个好的教程或方向看?
答案 0 :(得分:4)
您可以使用Core Location API计算两个地理点之间的距离。
根据地址查找地理位置的过程称为前向地理编码,iOS不支持。
许多地理编码服务允许您在其中任何一个中执行转换 方向,但iOS目前仅支持反向地理编码,其中 将经度和纬度转换为地标。如果你想 将地标信息转换为纬度和经度 - 一个过程 称为前向地理编码 - 您需要找到合适的地理编码 第三方服务使用。
由于您拥有该地址,因此您可以使用google api执行转发地理编码。 您可以发送如下请求:
http://maps.google.com/maps/api/geocode/json?address=Padre+Chagas+Porto+Alegre&sensor=false
然后解析该位置的位置并创建一个具有纬度和经度的CLLocation对象。
此时您解决了查找目标地理位置的问题。现在,您需要做的就是使用Core Location获取用户当前位置,使用类似创建位置管理器的内容:
- (void)getLocation
{
_clManager = [[CLLocationManager alloc] init];
_clManager.delegate = self;
if (! [CLLocationManager locationServicesEnabled])
return;
[_clManager startUpdatingLocation];
}
计算用户位置更新时的距离:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
CLLocationDistance distance = [newLocation distanceFromLocation:<destiny_location>];
[_clManager stopUpdatingLocation];
[self.tableView reloadData];
}
返回的距离以米为单位。它测量从用户位置到目标点的直线。
答案 1 :(得分:0)
您可以使用将地址转换为纬度和经度坐标的Web服务,然后根据用户的当前位置给出任何其他坐标对,您可以计算它们之间的距离。
我不知道数学会想到这个计算,但快速搜索可以解决这个问题:http://www.movable-type.co.uk/scripts/latlong.html