Login

Google Geocode Lookup

Author:
tonyskyday
Posted:
June 22, 2007
Language:
Python
Version:
.96
Score:
11 (after 11 ratings)

Makes a call to Google's geocoder and returns the latitude and longitude as a string or returns an empty string. Called by the save method to save the lat and long to the db to be used when rendering maps on the frontend. Reduces the number of calls to geocoder by calling only when saving, not on every viewing of the object.

Be sure to import urllib and the project's settings, and to define GOOGLE_API_KEY in settings.py.

Example:

def save(self):
    location = "%s+%s+%s+%s" % (self.address, self.city, self.state, self.zip_code)
    self.lat_long = get_lat_long(location)
    if not self.lat_long:
        location = "%s+%s+%s" % (self.city, self.state, self.zip_code)
        self.lat_long = get_lat_long(location)

    super(Foo, self).save()
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#
# models.py
#
import urllib
import settings

def get_lat_long(location):
    key = settings.GOOGLE_API_KEY
    output = "csv"
    location = urllib.quote_plus(location)
    request = "http://maps.google.com/maps/geo?q=%s&output=%s&key=%s" % (location, output, key)
    data = urllib.urlopen(request).read()
    dlist = data.split(',')
    if dlist[0] == '200':
        return "%s, %s" % (dlist[2], dlist[3])
    else:
        return ''

More like this

  1. codigo alto nivel by MrRocklion 1 month ago
  2. Load template from specific app by Krzysiek555 1 month, 2 weeks ago
  3. PostgreSQL JSON subqueries by dolamroth 1 month, 3 weeks ago
  4. "Magic Link" Management Command by webology 6 months, 3 weeks ago
  5. Closest ORM models to a latitude/longitude point by simonw 6 months, 3 weeks ago

Comments

falsh (on October 30, 2009):

get problems with : location = urllib.quote_plus(location)

when location has some accents

#

falsh (on October 30, 2009):

solution : location = smart_str(urllib.quote_plus(location))

#

anentropic (on November 22, 2009):

does this return "lat, lon" or "lon, lat" ?

#

anentropic (on November 22, 2009):

P.S. great snippet, thanks

#

anentropic (on February 6, 2010):

@falsh ...you mean:

location = urllib.quote_plus(smart_str(location))

(the other way still throws errors if you have foreign chars)

#

Please login first before commenting.