2011-10-08 57 views
0

我試圖讓附近的地方是這樣的: Example近我通過英里的Objective-C

我找遍各種tuturials在與谷歌API和其他一些互聯網,但我不能獲得良好要做到這一點,我想我必須發送一個請求到谷歌API,它會給我返回一些數據,但即時通訊完全失去了這部分...我有我想要發送的所有地址,但只有它。 任何人都知道一個好的教程或方向看?

回答

4

可以計算使用的核心位置API兩個地理點之間的距離。

根據地址查找地理位置的過程稱爲向前地理編碼,不受iOS支持。

對於apple documentation

許多地理編碼服務,讓您在任何 方向進行轉換,但iOS版目前僅支持反地理編碼,其中 緯度和經度轉換成標。如果您想要 將地標信息轉換爲經度和緯度(稱爲向前地理編碼的過程 ),則需要找到合適的第三方服務才能使用。

由於您有地址,因此您可以使用google api執行正向地理編碼。 您可以發送一個請求,如:

http://maps.google.com/maps/api/geocode/json?address=Padre+Chagas+Porto+Alegre&sensor=false

,然後分析該地點的位置,並創建一個經度和緯度一個CLLocation對象。

此時您解決了查找目標地理位置的問題。現在,所有你需要做的是讓使用核心定位用戶當前的位置,使用類似的創建位置管理器:當你的用戶位置的更新

- (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]; 
} 

返回的距離將以米爲單位。它測量從用戶位置到目的地點的直線。

+0

好的,我明白了,我的問題是,最新的發送方式我想知道什麼?我有這個「Av Brigadeiro法利亞利馬,1568,Itaim比比,聖保羅 - SP」但是當我嘗試我只是回報我零結果 –

+0

http://maps.google.com/maps/api/geocode/json?address=Av+Brigadeiro+Faria+Lima,+1568,Itaim+Bibi,+Sao+Paulo+SP&sensor=false。This should work :)。這個電話需要地址和傳感器參數才能工作 –

+0

對不起,重新打開帖子,但我有最後一個問題,我已經做出了幾乎所有的事情,但是當我計算出距離時,它返回給我:8261。522013,當我嘗試這樣除以1000:NSLog(@「Distance =%f」,(distance/1000));它給出了這樣的:-000100.000 ... –

0

您可以使用Web服務將地址轉換爲經緯度座標,然後給出與用戶當前位置一樣的其他座標對,您可以計算它們之間的距離。

我不知道該bethink計算數學,但快速搜索打開此設置:http://www.movable-type.co.uk/scripts/latlong.html