def test_reverse_geocode(self):
     lat, lng = 40.714224, -73.961452
     gmaps = GoogleMaps(GMAPS_API_KEY)
     results = gmaps.reverse_geocode(lat, lng)
     first = results[0]
     for info in ({'long_name': '285',
                   'short_name': '285',
                   'types': ['street_number']},
                  {'long_name': 'Bedford Ave',
                   'short_name': 'Bedford Ave',
                   'types': ['route']},
                  {'long_name': 'New York',
                   'short_name': 'New York',
                   'types': ['locality', 'political']},
                  {'long_name': '11211',
                   'short_name': '11211',
                   'types': ['postal_code']},
                  {'long_name': 'New York',
                   'short_name': 'NY',
                   'types': ['administrative_area_level_1', 'political']},
                  {'long_name': 'United States',
                   'short_name': 'US',
                   'types': ['country', 'political']}):
         self.assertIn(info, first['address_components'])
     self.assertEqual(first['formatted_address'],
                      '285 Bedford Ave, Brooklyn, NY 11211, USA')
     location = first['geometry']['location']
     self.assertAlmostEquals(location['lat'], lat, 3)
     self.assertAlmostEquals(location['lng'], lng, 3)
示例#2
0
def to_address(value, google_api_key, min_accuracy=1):
    if value is None:
        return None
    gmaps = GoogleMaps(google_api_key)
    if isinstance(value, (list, tuple)) and len(value) >= 2:
        if isinstance(value[0], (int, float)) and isinstance(value[1], (int, float)):
            result = gmaps.reverse_geocode(value[0], value[1])
        else:
            result = gmaps.geocode(value[0] + ' near ' + value[1])
    else:
        result = gmaps.geocode(value)
    address = result['Placemark'][0]['address']
    details = result['Placemark'][0]['AddressDetails']
    accuracy = details['Accuracy']
    # Raise an error if the accuracy is insufficient.
    if accuracy < min_accuracy:
        raise GoogleMapsError(602) # unknown address
    country = containers.find(details, 'CountryName', '')
    country_code = containers.find(details, 'CountryNameCode', '')
    state = containers.find(details, 'AdministrativeAreaName', '')
    state_code = containers.find(details, 'AdministrativeAreaNameCode', '')
    locality = containers.find(details, 'LocalityName', '')
    postal_code = containers.find(details, 'PostalCodeNumber', '')
    street_address = containers.find(details, 'ThoroughfareName', '')
    try:
        lng, lat = result['Placemark'][0]['Point']['coordinates'][0:2]
    except:
        lng, lat = None, None
    # Run through some common fixups.
    address_dict = dict(
        country=country,
        country_code=country_code,
        state=state,
        state_code=state_code,
        locality=locality,
        street_address=street_address,
        postal_code=postal_code,
        formatted=address,
        latitude=lat,
        longitude=lng,
    )
    address_fixups(address_dict)
    return address_dict
 def test_reverse_geocode(self):
     """Test googlemaps reverse_geocode() and latlng_to_address()"""
     
     lat, lng = 40.714224, -73.961452
     gmaps = GoogleMaps(GMAPS_API_KEY)
     result = gmaps.reverse_geocode(lat, lng)
     self.assertEqual(result['Status']['code'], 200)
     result = result['Placemark'][0]
     self.assertEqual(searchkey(result, 'CountryName'), 'USA')
     self.assertEqual(searchkey(result, 'PostalCodeNumber'), '11211')
     self.assertEqual(searchkey(result, 'ThoroughfareName'), '277 Bedford Ave')
     self.assertEqual(searchkey(result, 'LocalityName'), 'Brooklyn')
     self.assertEqual(searchkey(result, 'AdministrativeAreaName'), 'NY')
     self.assertEqual(searchkey(result, 'CountryNameCode'), 'US')
     addr = searchkey(result, 'address')
     self.assertEqual(addr, '277 Bedford Ave, Brooklyn, NY 11211, USA')
     lat2, lng2 = searchkey(result, 'coordinates')[1::-1]
     self.assertAlmostEquals(lat, lat2, 3)
     self.assertAlmostEquals(lng, lng2, 3)
     
     addr2 = gmaps.latlng_to_address(lat, lng)
     self.assertEqual(addr, addr2)
    def test_reverse_geocode(self):
        """Test googlemaps reverse_geocode() and latlng_to_address()"""
        
        lat, lng = 40.714224, -73.961452
        gmaps = GoogleMaps(GMAPS_API_KEY)
        result = gmaps.reverse_geocode(lat, lng)
        self.assertEqual(result['status'], 'OK')
        result = result['results'][0]
#        self.assertEqual(searchkey(result, 'CountryName'), 'USA')
#        self.assertEqual(searchkey(result, 'PostalCodeNumber'), '11211')
#        self.assertEqual(searchkey(result, 'ThoroughfareName'), '277 Bedford Ave')
#        self.assertEqual(searchkey(result, 'LocalityName'), 'Brooklyn')
#        self.assertEqual(searchkey(result, 'AdministrativeAreaName'), 'NY')
#        self.assertEqual(searchkey(result, 'CountryNameCode'), 'US')
        addr = searchkey(result, 'formatted_address')
        self.assertEqual(addr, '285 Bedford Avenue, Brooklyn, NY 11211, USA')
        loc = searchkey(result, 'location')
        lat2, lng2 = loc['lat'], loc['lng']
        self.assertAlmostEquals(lat, lat2, 3)
        self.assertAlmostEquals(lng, lng2, 3)
        
        addr2 = gmaps.latlng_to_address(lat, lng)
        self.assertEqual(addr, addr2)
示例#5
0
    def test_reverse_geocode(self):
        """Test googlemaps reverse_geocode() and latlng_to_address()"""

        lat, lng = 40.714224, -73.961452
        gmaps = GoogleMaps(GMAPS_API_KEY)
        result = gmaps.reverse_geocode(lat, lng)
        self.assertEqual(result['Status']['code'], 200)
        result = result['Placemark'][0]
        self.assertEqual(searchkey(result, 'CountryName'), 'USA')
        self.assertEqual(searchkey(result, 'PostalCodeNumber'), '11211')
        self.assertEqual(searchkey(result, 'ThoroughfareName'),
                         '277 Bedford Ave')
        self.assertEqual(searchkey(result, 'LocalityName'), 'Brooklyn')
        self.assertEqual(searchkey(result, 'AdministrativeAreaName'), 'NY')
        self.assertEqual(searchkey(result, 'CountryNameCode'), 'US')
        addr = searchkey(result, 'address')
        self.assertEqual(addr, '277 Bedford Ave, Brooklyn, NY 11211, USA')
        lat2, lng2 = searchkey(result, 'coordinates')[1::-1]
        self.assertAlmostEquals(lat, lat2, 3)
        self.assertAlmostEquals(lng, lng2, 3)

        addr2 = gmaps.latlng_to_address(lat, lng)
        self.assertEqual(addr, addr2)