是 GeoFilter 中的地址

Is Address Within GeoFilter

我正在 Swift 中创建一个交付应用程序,我试图将订购限制在用户所在的状态。我已经对大部分状态进行了地理围栏,但我不确定它是否可以检查是否:

现在,我已经对用户输入的地址进行了反向地理编码,并将它们保存在变量中,但是,我没有看到太多关于此或如何进行检查的文档。如果您对如何执行此操作有任何想法或是否可行,我们将不胜感激。

围栏一个州的不规则边界很复杂。您可以根据用户输入地址的地理编码坐标创建 CLPlacemark。然后,访问其 administrativeArea 变量以获取状态。

var userLocation: CLLocation!

  // Then, when your view loads or elswhere:

        guard userLocation != nil else { return }

   // Geocode the location for setting the user placemark.
        let geocoder: CLGeocoder = CLGeocoder()
        geocoder.reverseGeocodeLocation(userLocation,
              completionHandler: { (placemarks, error) -> Void in

            DispatchQueue.main.async {
                guard let placemarks = placemarks,
                     placemarks.count > 0 else { return }
                self.setUserPlacemark(placemarks)
            }
        })
    }


   private func setUserPlacemark(_ placemarks: [CLPlacemark]) {


        guard (placemarks.count > 0) else { return }

        let placemark: CLPlacemark = placemarks[0]
        if placemark.administrativeArea != nil
        {
            // Do something with  placemark.administrativeArea  
         }
        }