2017-02-27 4 views
4

CLGeocoder reverseGeocodeLocation이 주소를 조회 할 때 다른 위도/경도로 장소 표시를 반환하는 이유는 무엇입니까?CLGeocoder reverseGeocodeLocation에서 위도/경도가 다른 장소 표시를 반환하고 있습니까? (놀이터 예제 첨부)

배경 :지도를 길게 누르면 핀을 놓을 수 있지만 코드를 역 지오 코딩하면 핀에 영역 이름을 넣을 수 있지만 핀을 놓으면 다른 위치에 놓이게됩니다. 위치 (즉, 좋은 사용자 경험). 그래서 사용자가 실제로 선택한 위도/경도를 활용하는 방법을 찾고 있지만 위치 이름을 찾으십시오.

예 : 코드 나는 아래 참조 :

  • 입력 : -28.7780218895614, 152.978574011267
  • 가 출력 : -28.864405, 153.0001191는

코드 :

import UIKit 
import CoreLocation 
import PlaygroundSupport 

// Initial Test Co-ordinate 
let locInput = CLLocation(latitude: -28.778021889561444, longitude: 152.97857401126666) 
print("Input: \(locInput.coordinate.latitude), \(locInput.coordinate.longitude)") 

// Initiate Reverse Geocoding 
let geocoder: CLGeocoder = CLGeocoder() 
print("About to call reverse geocoding function") 
geocoder.reverseGeocodeLocation(locInput) { placemarks, error in 
    guard let placemarks = placemarks else {fatalError("No Placemarks Provided \(error?.localizedDescription)")} 
    for p in placemarks { 
     print("OUTPUT: \(p.location!.coordinate.latitude), \(p.location!.coordinate.longitude)") 
    } 
} 

// Enable Asynch 
PlaygroundPage.current.needsIndefiniteExecution = true 
+0

추 신 : 또는이 경우 reverseGeocodeLocation에서 반환 한 장소 표시를 사용하고 지역, 하위 지역, 국가 문자열을 사용하지만 위치/좌표는 아니지만 "긴 보도 자료"의 좌표를 사용하는 방식입니다. – Greg

답변

1

그것은이다 올바른 행동. 장소 표시는 연결된 위치를 반환합니다. 분명히 입력 된 것과 다를 수 있습니다. 지오 코더에 위치 정보를 제공하면이 위치 표시기는 원하는 위치 표시를 "추론합니다".

이 있다고 가정하자 :

 
a: Associated location with the empire state building. 
b: Location you provided from an long press for instance. 

    ------- 
    |  | 
    | a | --> CLPlacemark: Empire state building, location: a 
    | b| 
    ------- 

당신이 바로 당신의 가정에 있었다. :)