首页 > 解决方案 > 是 GeoFilter 中的地址

问题描述

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

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

标签: iosswiftgeofencing

解决方案


为一个州的不规则边界设置围栏是很复杂的。您可以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  
         }
        }

推荐阅读