Swift - 验证与GMS一起使用的地址

时间:2017-03-05 05:22:50

标签: ios swift google-maps

我有一个应用程序,我正在用户将创建一个事件。用户将在4个字段中输入事件的地址,“号码”,“街道”,“城镇/城市”和“邮政编码”。

地址将存储在数据库中,然后从数据库调用,用于使用google maps sdk在地图上放置标记。

我试图通过使用CLLocation验证地址并对地址进行地理编码以查看它是否返回命中,如果不是,则会返回错误,但即使输入实际地址,我仍然会收到错误。

我现在离开了我的电脑,所以如果以后需要可以发布代码,但是现在,有没有人有办法肯定会有效?有没有办法验证地址,以确保它是真实的?

编辑**

func forwardGeocoding(address: String) {
    CLGeocoder().geocodeAddressString(address) { (placemarks, error) in
        if error != nil {
            self.alert(message: "Have you entered your address correctly?", title: "Invalid Address")
            self.coordinates.latitude = 0.0
            self.coordinates.longitude = 0.0
        }
        if (placemarks?.count)! > 0 {
            let placemark = placemarks?[0]
            let location = placemark?.location
            let coordinate = location?.coordinate
            self.coordinates = (location?.coordinate)!

    }
    }

}


@IBAction func didTapCreate(_ sender: Any) {

    if ((houseNumber.text?.characters.count)! > 0 && (streetInput.text?.characters.count)! > 0 && (cityInput.text?.characters.count)! > 0 && (postcodeInput.text?.characters.count)! > 0)
    {
        let address = "\(houseNumber.text) \(streetInput.text), \(cityInput.text)"

        self.forwardGeocoding(address: address)

        if (coordinates.latitude == 0.0 && coordinates.longitude == 0.0)
        {
            self.alert(message: "Have you entered your address correctly?", title: "Invalid Address")
        }
        else
        {
            let key = self.dbRef.child("events").childByAutoId().key

            let childUpdates = ["/events/\(self.loggedInUser!.uid)/\(key)/address":address, "/events/\(self.loggedInUser!.uid)/\(key)/date":dateInput.text] as [String : Any]

            self.dbRef.updateChildValues(childUpdates)

            dismiss(animated: true, completion: nil)

        }
    }
}

我已经更改了警报,以便在每个警报的末尾都有一个数字来调试它被捕获,并且它似乎被捕获到创建按钮警报,这意味着lat和long被设置为0.0即使没有错误

0 个答案:

没有答案