将地址转换为经度和纬度
我想要执行以下操作 – 允许用户在iOS应用程序中input物理地址。 – 此地址转换为经度/纬度 – Django服务器代码检查以查看附近的位置。
我怎样才能最有效地做到这一点?
我应该将地址转换为ios应用程序中的经度和纬度,然后将坐标发送到django服务器代码,还是应该将地址发送到django服务器代码,然后将地址转换为经度和纬度?
任何帮助,将不胜感激!
根据苹果的位置感知编程指南您可以使用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的属性,可以为该地点提供经度和纬度。
你可以使用这个函数来获取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
使用下面的链接,这将返回物理地址包含纬度和经度的json。
http://maps.google.com/maps/api/geocode/json?address=Newyork&sensor=false