2011-04-27 105 views
7

我需要對地址進行地址解析以顯示在Google地圖上的緯度,經度對,但我需要在Django中執行此服務器端。我只能找到對JavaScript V3 API的參考。我如何從Python做到這一點?如何從Python中獲取地址的座標

回答

11

我建議使用Py-Googlemaps。要使用它很簡單:

from googlemaps import GoogleMaps 
gmaps = GoogleMaps(API_KEY) 
lat, lng = gmaps.address_to_latlng(address) 
+0

是否有可能獲得與此庫的工作了API密鑰使用谷歌的服務?我生成了一個JavaScript v3 API密鑰,但它似乎沒有工作。 – powerj1984 2013-04-23 14:57:42

+2

剛剛結束使用此代替:http://code.xster.net/pygeocoder/wiki/Home – powerj1984 2013-04-23 15:02:00

+0

OP的回購:https://github.com/googlemaps/google-maps-services-python – 2016-11-06 12:19:00

0

下面是谷歌地圖API V3(基於this answer)工作代碼:

import urllib 
import simplejson 

googleGeocodeUrl = 'http://maps.googleapis.com/maps/api/geocode/json?' 

def get_coordinates(query, from_sensor=False): 
    query = query.encode('utf-8') 
    params = { 
     'address': query, 
     'sensor': "true" if from_sensor else "false" 
    } 
    url = googleGeocodeUrl + urllib.urlencode(params) 
    json_response = urllib.urlopen(url) 
    response = simplejson.loads(json_response.read()) 
    if response['results']: 
     location = response['results'][0]['geometry']['location'] 
     latitude, longitude = location['lat'], location['lng'] 
     print query, latitude, longitude 
    else: 
     latitude, longitude = None, None 
     print query, "<no results>" 
    return latitude, longitude 

的參數和其他信息的完整列表,請參閱official documentation

6

我會強烈建議使用geopy。它將返回經緯度,之後您可以在Google JS客戶端中使用它。

>>> from geopy.geocoders import Nominatim 
>>> geolocator = Nominatim() 
>>> location = geolocator.geocode("175 5th Avenue NYC") 
>>> print(location.address) 
Flatiron Building, 175, 5th Avenue, Flatiron, New York, NYC, New York, ... 
>>> print((location.latitude, location.longitude)) 
(40.7410861, -73.9896297241625) 

此外,您可以專門定義要使用GoogleV3類作爲geolocator

>>> from geopy.geocoders import GoogleV3 
>>> geolocator = GoogleV3()