将地址转换为经度和纬度

Posted

技术标签:

【中文标题】将地址转换为经度和纬度【英文标题】:Convert address to longitude and latitude 【发布时间】:2013-05-22 14:26:35 【问题描述】:

我想做以下事情 - 允许用户在 ios 应用中输入物理地址。 - 此地址转换为经度/纬度 - Django 服务器代码检查以查看附近的位置。

我怎样才能最有效地做到这一点?

我应该在ios app中将地址转换为经纬度,然后将坐标发送到django服务器代码,还是应该将地址发送到django服务器代码,然后?

任何帮助将不胜感激!

【问题讨论】:

看看GeoDjango - 它使您能够进行地理空间查找...为了将地址转换为坐标,您最需要外部 API。 我正在使用这个 javascript,它工作得很好:github.com/ubilabs/geocomplete/#populate-form-data 【参考方案1】:

根据 Apple 的 Location Awareness Programming Guide 您可以使用 CLGeocoder 对象来实现这一点:

CLGeocoder* geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:@"Your Address"
     completionHandler:^(NSArray* placemarks, NSError* error)
         for (CLPlacemark* aPlacemark in placemarks)
         
         // Process the placemark.
         
];

CLPlacemark 对象有一个名为 location 的属性,该属性产生该地点的纬度和经度。

【讨论】:

请记住,CLGeocoder 是在 iOS 5.0 中添加的,并且此问题已被标记为 4.0。此解决方案不适用于 iOS 4.x。 我的错,我没有注意到标签!我只是希望作者在问题本身中指出这种需要。 没关系,反正iOS 4真的没必要再支持了。 没关系。无论如何,IOS 5.0 就是我的意思。 :)【参考方案2】:

你可以使用这个函数在django端获取(latitude, longitude)元组

import urllib, urllib2
import simplejson as json

def getLatLng( address ):
    """ Native address format is House Number, Street Direction, Street Name, 
    Street Suffix, City, State, Zip, Country """

    TIMEOUT = 3

    try:
        url = "http://maps.google.com/maps/api/geocode/json?address=" + urllib.quote_plus( address.encode('utf-8') ) + "&sensor=false"
        opener = urllib2.build_opener()
        req = urllib2.Request( url )

        data = json.load( opener.open(req, None, TIMEOUT) )
        results = data['results']
        if len( results ):
            location = results[0]['geometry']['location']
            return  ( location['lat'], location['lng'] )
        else:
            return None
    except:
        return None

【讨论】:

【参考方案3】:

使用下面的链接,这将返回由物理地址的纬度和经度组成的json。

http://maps.google.com/maps/api/geocode/json?address=Newyork&sensor=false

【讨论】:

以上是关于将地址转换为经度和纬度的主要内容,如果未能解决你的问题,请参考以下文章

将地址转换为纬度和经度

将纬度/经度转换为地址 [重复]

R - 如何将纬度和经度坐标转换为地址/人类可读的位置?

我们如何将纬度和经度转换为网站中的地址?

当互联网关闭时,如何将纬度,经度转换为地址?

将地址转换为纬度/经度(使用php)