Swift 3 Проблемы с геозонами

Ниже часть моего кода, где у меня от 4 до 5 адресов, и я хочу контролировать его с помощью геозон. Когда он начинает отслеживать регионы, я вижу на своей консоли названия правильных мест.

Проблема в том, что когда имитировать, чтобы добраться до одного места, это дает мне предупреждение о неправильном месте, это всегда дает мне ресторан Чаус, и это должен быть Шрайнер Хоум.

Я поставил точку останова на Введенные регионы, и код останавливается там для всех регионов... Почему он просто срабатывает, когда я вхожу в правильное местоположение? Прямо сейчас, так как я вхожу во все регионы.

это JSON, что я вернусь

[
{
locationid: 1,
latitude: 37.8037522,
longitude: -121.9871216,
islocationactive: 1,
locationtitle: "Schreiner's Home",
locationsubtitle: "Danville"
},
{
locationid: 2,
latitude: 37.8191921,
longitude: -122.0071005,
islocationactive: 1,
locationtitle: "Montair",
locationsubtitle: "Elementary School"
},
{
locationid: 3,
latitude: 37.8186077,
longitude: -121.999046,
islocationactive: 1,
locationtitle: "Chaus Restaurant",
locationsubtitle: "Americas Eats"
},
{
locationid: 4,
latitude: 37.7789669,
longitude: -121.9829908,
islocationactive: 1,
locationtitle: "Valley",
locationsubtitle: "Cheer & Dance"
}
]

Спасибо родриго

func GetAllILocations(){
        if let url = URL(string: "http://www.goemobile.com/mobile/liquidnitro/getlocations.php"){
            var request = URLRequest(url:url)
            request.httpMethod = "POST";// Compose a query string
            let postString = ""
            request.httpBody = postString.data(using: String.Encoding.utf8)
            let task = URLSession.shared.dataTask(with:request) { data, response, error in

                if error != nil{

                    return
                }
                do {
                    if let convertedJson = try JSONSerialization.jsonObject(with: data!, options: []) as? [[String:Any]] {

                        for location in convertedJson {
                            if  ((location["locationid"] as? Int)! > 0) {
                                let latitude = location["latitude"] as! Double
                                let longitude = location["longitude"] as! Double
                                let title = location["locationtitle"] as! String
                                let subtitle = location["locationsubtitle"] as? String

                                let annotation = MKPointAnnotation()

                                annotation.title = title
                                annotation.subtitle = subtitle
                                annotation.coordinate = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
                                self.mapView.addAnnotation(annotation)
                                let region = CLCircularRegion(center: (self.locationManger.location?.coordinate)!, radius: 0.5, identifier: title)
                                self.locationManger .startMonitoring(for: region)
                            }
                        }
                    }
                }
                catch let error as NSError {
                    print(error.localizedDescription)
                }
            }
            task.resume()
        }
    }

    func locationManager(_ manager: CLLocationManager, didStartMonitoringFor region: CLRegion) {
        print("Hi \(region.identifier)")

    }

    func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) {
        if region is CLCircularRegion {
            let alert = UIAlertController(title: "Alert", message: region.identifier, preferredStyle: .alert)
            let action = UIAlertAction(title: "OK", style: .cancel, handler: nil)
            alert.addAction(action)
            present(alert, animated: true, completion: nil)
        }
    }

1 ответ

Я узнал.

Проблема была на этой линии

let region = CLCircularRegion(center: (self.locationManger.location?.coordinate)!, radius: 0.5, identifier: title)

Я всегда использовал информацию о местоположении пользователей вместо тех, которые пришли из JSON.

Я изменился с этим

let center = CLLocationCoordinate2DMake(latitude, longitude)
let region = CLCircularRegion.init(center: center, radius: 0.025, identifier: title)
Другие вопросы по тегам