Почему 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