靠近我的距离Objective-C

时间:2011-10-08 17:47:35

标签: objective-c google-maps-api-3 core-location

我正试图在附近这样的地方做: Example

我用谷歌api和其他一些人搜索了互联网上各种各样的tuturials,但我不能得到一个很好的方法去做,我想我必须向google api发送请求,它会返回一些数据,但我完全迷失在这一部分...我有我想发送的所有地址,但只有它。 任何人都知道一个好的教程或方向看?

2 个答案:

答案 0 :(得分:4)

您可以使用Core Location API计算两个地理点之间的距离。

根据地址查找地理位置的过程称为前向地理编码,iOS不支持。

apple documentation

  

许多地理编码服务允许您在其中任何一个中执行转换   方向,但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