Get location name from Latitude & Longitude in iOS

前端 未结 12 1019
遥遥无期
遥遥无期 2020-11-28 07:30

I want to find current location name from latitude and longitude,

Here is my code snippet I tried but my log shows null value in all the places except in place

12条回答
  •  再見小時候
    2020-11-28 07:58

    In Swift 4.1 and Xcode 9.4.1, this is one of my solution. Here i'm using geocode API to get the complete address. With this api i can get the village names also.

    I'm using reverseGeocodeLocation but it's not getting village address details or village names, it's getting only near by city names. It's one of the finest solution....

    func getAddressForLatLng(latitude: String, longitude: String)  { // Call this function
    
         let url = NSURL(string: "https://maps.googleapis.com/maps/api/geocode/json?latlng=\(latitude),\(longitude)")//Here pass your latitude, longitude
         print(url!)
         let data = NSData(contentsOf: url! as URL)
    
         if data != nil {
            let json = try! JSONSerialization.jsonObject(with: data! as Data, options: JSONSerialization.ReadingOptions.allowFragments) as! NSDictionary
            print(json)
    
            let status = json["status"] as! String
            if status == "OK" {
    
                if let result = json["results"] as? NSArray   {
    
                    if result.count > 0 {
                        if let addresss:NSDictionary = result[0] as? NSDictionary {
                            if let address = addresss["address_components"] as? NSArray {
                                var newaddress = ""
                                var number = ""
                                var street = ""
                                var city = ""
                                var state = ""
                                var zip = ""
                                var country = ""
    
                                if(address.count > 1) {
                                    number =  (address.object(at: 0) as! NSDictionary)["short_name"] as! String
                                }
                                if(address.count > 2) {
                                    street = (address.object(at: 1) as! NSDictionary)["short_name"] as! String
                                }
                                if(address.count > 3) {
                                    city = (address.object(at: 2) as! NSDictionary)["short_name"] as! String
                                }
                                if(address.count > 4) {
                                    state = (address.object(at: 4) as! NSDictionary)["short_name"] as! String
                                }
                                if(address.count > 6) {
                                    zip =  (address.object(at: 6) as! NSDictionary)["short_name"] as! String
                                }
                                newaddress = "\(number) \(street), \(city), \(state) \(zip)"
                                print(newaddress)
    
                                // OR 
                                //This is second type to fetch pincode, country, state like this type of data
    
                                for i in 0..

    Call this function like this

    self.getAddressForLatLng(latitude: "\(self.lat!)", longitude: "\(self.lng!)")
    

提交回复
热议问题