graticule 0.2.6 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.txt +8 -0
- data/Manifest.txt +2 -1
- data/lib/graticule.rb +2 -0
- data/lib/graticule/geocoder/geocoder_ca.rb +2 -0
- data/lib/graticule/geocoder/geocoder_us.rb +2 -0
- data/lib/graticule/geocoder/google.rb +26 -32
- data/lib/graticule/geocoder/local_search_maps.rb +1 -1
- data/lib/graticule/geocoder/map_quest.rb +109 -0
- data/lib/graticule/version.rb +1 -1
- data/test/fixtures/responses/google/only_coordinates.xml +1 -0
- data/test/test_helper.rb +0 -3
- data/test/unit/graticule/distance_test.rb +1 -1
- data/test/unit/graticule/geocoder/geocoder_us_test.rb +1 -1
- data/test/unit/graticule/geocoder/google_test.rb +11 -1
- data/test/unit/graticule/geocoder/host_ip_test.rb +1 -1
- data/test/unit/graticule/geocoder/local_search_maps_test.rb +1 -1
- data/test/unit/graticule/geocoder/meta_carta_test.rb +1 -1
- data/test/unit/graticule/geocoder/multi_test.rb +2 -2
- data/test/unit/graticule/geocoder/multimap_test.rb +53 -0
- data/test/unit/graticule/geocoder/postcode_anywhere_test.rb +1 -1
- data/test/unit/graticule/geocoder/yahoo_test.rb +1 -1
- data/test/unit/graticule/geocoder_test.rb +1 -1
- data/test/unit/graticule/location_test.rb +1 -1
- metadata +75 -63
data/CHANGELOG.txt
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
0.2.7 (2008-10-03)
|
2
|
+
* Adding Multimap geocoder [Tom Taylor]
|
3
|
+
* Added MapQuest geocoder [Andrew Selder]
|
4
|
+
* Fix google geocoder for responses that only return coordinates [Andrew Selder]
|
5
|
+
|
6
|
+
0.2.5
|
7
|
+
* fixed address mapping for local search maps (again)
|
8
|
+
|
1
9
|
0.2.4 (2007-05-15)
|
2
10
|
* fixed address mapping for local search maps (Tom Taylor)
|
3
11
|
|
data/Manifest.txt
CHANGED
@@ -19,6 +19,7 @@ lib/graticule/geocoder/geocoder_us.rb
|
|
19
19
|
lib/graticule/geocoder/google.rb
|
20
20
|
lib/graticule/geocoder/host_ip.rb
|
21
21
|
lib/graticule/geocoder/local_search_maps.rb
|
22
|
+
lib/graticule/geocoder/map_quest.rb
|
22
23
|
lib/graticule/geocoder/meta_carta.rb
|
23
24
|
lib/graticule/geocoder/multi.rb
|
24
25
|
lib/graticule/geocoder/postcode_anywhere.rb
|
@@ -35,6 +36,7 @@ test/fixtures/responses/geocoder_us/unknown.xml
|
|
35
36
|
test/fixtures/responses/google/badkey.xml
|
36
37
|
test/fixtures/responses/google/limit.xml
|
37
38
|
test/fixtures/responses/google/missing_address.xml
|
39
|
+
test/fixtures/responses/google/only_coordinates.xml
|
38
40
|
test/fixtures/responses/google/partial.xml
|
39
41
|
test/fixtures/responses/google/server_error.xml
|
40
42
|
test/fixtures/responses/google/success.xml
|
@@ -69,4 +71,3 @@ test/unit/graticule/geocoder/postcode_anywhere_test.rb
|
|
69
71
|
test/unit/graticule/geocoder/yahoo_test.rb
|
70
72
|
test/unit/graticule/geocoder_test.rb
|
71
73
|
test/unit/graticule/location_test.rb
|
72
|
-
|
data/lib/graticule.rb
CHANGED
@@ -10,6 +10,7 @@ require 'graticule/geocoder/bogus'
|
|
10
10
|
require 'graticule/geocoder/rest'
|
11
11
|
require 'graticule/geocoder/google'
|
12
12
|
require 'graticule/geocoder/host_ip'
|
13
|
+
require 'graticule/geocoder/map_quest'
|
13
14
|
require 'graticule/geocoder/multi'
|
14
15
|
require 'graticule/geocoder/yahoo'
|
15
16
|
require 'graticule/geocoder/geocoder_ca'
|
@@ -17,6 +18,7 @@ require 'graticule/geocoder/geocoder_us'
|
|
17
18
|
require 'graticule/geocoder/local_search_maps'
|
18
19
|
require 'graticule/geocoder/meta_carta'
|
19
20
|
require 'graticule/geocoder/postcode_anywhere'
|
21
|
+
require 'graticule/geocoder/multimap'
|
20
22
|
require 'graticule/distance'
|
21
23
|
require 'graticule/distance/haversine'
|
22
24
|
require 'graticule/distance/spherical'
|
@@ -13,6 +13,8 @@ module Graticule #:nodoc:
|
|
13
13
|
get :locate => address.is_a?(String) ? address : location_from_params(address).to_s(:country => false)
|
14
14
|
end
|
15
15
|
|
16
|
+
private
|
17
|
+
|
16
18
|
def parse_response(xml) #:nodoc:
|
17
19
|
returning Location.new do |location|
|
18
20
|
location.latitude = xml.elements['geodata/latt'].text.to_f
|
@@ -5,15 +5,11 @@ module Graticule #:nodoc:
|
|
5
5
|
# First you need a Google Maps API key. You can register for one here:
|
6
6
|
# http://www.google.com/apis/maps/signup.html
|
7
7
|
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
# require 'rubygems'
|
11
|
-
# require 'graticule'
|
12
|
-
#
|
13
|
-
# gg = Graticule.service(:google).new(:key => MAPS_API_KEY)
|
8
|
+
# gg = Graticule.service(:google).new(MAPS_API_KEY)
|
14
9
|
# location = gg.locate '1600 Amphitheater Pkwy, Mountain View, CA'
|
15
10
|
# p location.coordinates
|
16
|
-
#
|
11
|
+
# #=> [37.423111, -122.081783
|
12
|
+
#
|
17
13
|
class Google < Rest
|
18
14
|
# http://www.google.com/apis/maps/documentation/#Geocoding_HTTP_Request
|
19
15
|
|
@@ -30,10 +26,7 @@ module Graticule #:nodoc:
|
|
30
26
|
8 => :address # Address level accuracy. (Since 2.59)
|
31
27
|
}
|
32
28
|
|
33
|
-
# Creates a new GoogleGeocode that will use Google Maps API
|
34
|
-
# can sign up for an API key here:
|
35
|
-
#
|
36
|
-
# http://www.google.com/apis/maps/signup.html
|
29
|
+
# Creates a new GoogleGeocode that will use Google Maps API +key+.
|
37
30
|
def initialize(key)
|
38
31
|
@key = key
|
39
32
|
@url = URI.parse 'http://maps.google.com/maps/geo'
|
@@ -44,21 +37,24 @@ module Graticule #:nodoc:
|
|
44
37
|
get :q => address.is_a?(String) ? address : location_from_params(address).to_s
|
45
38
|
end
|
46
39
|
|
40
|
+
private
|
41
|
+
|
47
42
|
# Extracts a Location from +xml+.
|
48
43
|
def parse_response(xml) #:nodoc:
|
49
|
-
address = REXML::XPath.first(xml, '//xal:AddressDetails', 'xal' => "urn:oasis:names:tc:ciq:xsdschema:xAL:2.0")
|
50
|
-
|
51
44
|
longitude, latitude, = xml.elements['/kml/Response/Placemark/Point/coordinates'].text.split(',').map { |v| v.to_f }
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
45
|
+
returning Location.new(:latitude => latitude, :longitude => longitude) do |l|
|
46
|
+
address = REXML::XPath.first(xml, '//xal:AddressDetails',
|
47
|
+
'xal' => "urn:oasis:names:tc:ciq:xsdschema:xAL:2.0")
|
48
|
+
|
49
|
+
if address
|
50
|
+
l.street = value(address.elements['//ThoroughfareName/text()'])
|
51
|
+
l.locality = value(address.elements['//LocalityName/text()'])
|
52
|
+
l.region = value(address.elements['//AdministrativeAreaName/text()'])
|
53
|
+
l.postal_code = value(address.elements['//PostalCodeNumber/text()'])
|
54
|
+
l.country = value(address.elements['//CountryNameCode/text()'])
|
55
|
+
l.precision = PRECISION[address.attribute('Accuracy').value.to_i] || :unknown
|
56
|
+
end
|
57
|
+
end
|
62
58
|
end
|
63
59
|
|
64
60
|
# Extracts and raises an error from +xml+, if any.
|
@@ -92,15 +88,13 @@ module Graticule #:nodoc:
|
|
92
88
|
super params
|
93
89
|
end
|
94
90
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
element.text if element
|
103
|
-
end
|
91
|
+
def value(element)
|
92
|
+
element.value if element
|
93
|
+
end
|
94
|
+
|
95
|
+
def text(element)
|
96
|
+
element.text if element
|
97
|
+
end
|
104
98
|
end
|
105
99
|
end
|
106
100
|
end
|
@@ -20,7 +20,7 @@ module Graticule #:nodoc:
|
|
20
20
|
private
|
21
21
|
|
22
22
|
def map_attributes(location)
|
23
|
-
mapping = {:street => :
|
23
|
+
mapping = {:street => :street, :locality => :city, :region => :state, :postal_code => :zip, :country => :country}
|
24
24
|
mapping.keys.inject({}) do |result,attribute|
|
25
25
|
result[mapping[attribute]] = location.attributes[attribute] unless location.attributes[attribute].blank?
|
26
26
|
result
|
@@ -0,0 +1,109 @@
|
|
1
|
+
module Graticule #:nodoc:
|
2
|
+
module Geocoder #:nodoc:
|
3
|
+
|
4
|
+
# First you need a Mapquest API key. You can register for one here:
|
5
|
+
# http://www.mapquest.com/features/main.adp?page=developer_tools_oapi
|
6
|
+
#
|
7
|
+
# Then you create a MapquestGeocode object and start locating addresses:
|
8
|
+
#
|
9
|
+
# gg = Graticule.service(:map_quest).new(MAPS_API_KEY)
|
10
|
+
# location = gg.locate :street => '1600 Amphitheater Pkwy', :locality => 'Mountain View', :region => 'CA'
|
11
|
+
# p location.coordinates
|
12
|
+
#
|
13
|
+
class MapQuest < Rest
|
14
|
+
# http://trc.mapquest.com
|
15
|
+
|
16
|
+
PRECISION = {
|
17
|
+
0 => :unknown,
|
18
|
+
'COUNTRY' => :country,
|
19
|
+
'STATE' => :state,
|
20
|
+
'COUNTY' => :state,
|
21
|
+
'CITY' => :city,
|
22
|
+
'ZIP' => :zip,'ZIP7' => :zip,'ZIP9' => :zip,
|
23
|
+
'INTERSECTIONS' => :street,
|
24
|
+
'STREET' => :street,
|
25
|
+
'ADDRESS' => :address
|
26
|
+
}
|
27
|
+
|
28
|
+
# Creates a new MapquestGeocode that will use Mapquest API key +key+.
|
29
|
+
#
|
30
|
+
# WARNING: The MapQuest API Keys tend to be already URI encoded. If this is the case
|
31
|
+
# be sure to URI.unescape the key in the call to new
|
32
|
+
def initialize(key)
|
33
|
+
@key = key
|
34
|
+
@url = URI.parse 'http://web.openapi.mapquest.com/oapi/transaction'
|
35
|
+
end
|
36
|
+
|
37
|
+
# Locates +address+ returning a Location
|
38
|
+
def locate(address)
|
39
|
+
get map_attributes(location_from_params(address))
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def map_attributes(location)
|
45
|
+
mapping = {:street => :address, :locality => :city, :region => :stateProvince, :postal_code => :postalcoe, :country => :country}
|
46
|
+
mapping.keys.inject({}) do |result,attribute|
|
47
|
+
result[mapping[attribute]] = location.attributes[attribute] unless location.attributes[attribute].blank?
|
48
|
+
result
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# Extracts a Location from +xml+.
|
53
|
+
def parse_response(xml) #:nodoc:
|
54
|
+
address = REXML::XPath.first(xml, '/advantage/geocode/locations/location')
|
55
|
+
|
56
|
+
Location.new \
|
57
|
+
:street => value(address.elements['//address/text()']),
|
58
|
+
:locality => value(address.elements['//city/text()']),
|
59
|
+
:region => value(address.elements['//stateProvince/text()']),
|
60
|
+
:postal_code => value(address.elements['//postalCode/text()']),
|
61
|
+
:country => value(address.elements['//country/text()']),
|
62
|
+
:latitude => value(address.elements['//latitude/text()']),
|
63
|
+
:longitude => value(address.elements['//longitude/text()']),
|
64
|
+
:precision => PRECISION[address.elements['//geocodeQuality'].text] || :unknown
|
65
|
+
end
|
66
|
+
|
67
|
+
# Extracts and raises an error from +xml+, if any.
|
68
|
+
def check_error(xml) #:nodoc:
|
69
|
+
return unless xml.elements['//error']
|
70
|
+
status = xml.elements['//error/code'].text.to_i
|
71
|
+
msg = xml.elements['//error/text'].text
|
72
|
+
case status
|
73
|
+
when 255..299 then
|
74
|
+
raise CredentialsError, msg
|
75
|
+
when 400..500 then
|
76
|
+
raise AddressError, msg
|
77
|
+
when 600.699 then
|
78
|
+
raise Error, msg
|
79
|
+
when 900 then
|
80
|
+
raise AddressError, 'invalid latitude'
|
81
|
+
when 901 then
|
82
|
+
raise AddressError, 'invalid longitude'
|
83
|
+
when 902 then
|
84
|
+
raise AddressError, 'error parsing params'
|
85
|
+
when 9902 then
|
86
|
+
raise CredentialsError, 'invalid key'
|
87
|
+
when 9904 then
|
88
|
+
raise CredentialsError, 'key missing'
|
89
|
+
else
|
90
|
+
raise Error, "unknown error #{status}: #{msg}"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
# Creates a URL from the Hash +params+. Automatically adds the key and
|
95
|
+
# sets the output type to 'xml'.
|
96
|
+
def make_url(params) #:nodoc:
|
97
|
+
super params.merge({:key => @key, :transaction => 'geocode', :ambiguities => 0})
|
98
|
+
end
|
99
|
+
|
100
|
+
def value(element)
|
101
|
+
element.value if element
|
102
|
+
end
|
103
|
+
|
104
|
+
def text(element)
|
105
|
+
element.text if element
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
data/lib/graticule/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
<?xml version='1.0' encoding='UTF-8'?><kml xmlns='http://earth.google.com/kml/2.0'><Response><name>15-17 </name><Status><code>200</code><request>geocode</request></Status><Placemark id='p1'><Point><coordinates>-17.000000,15.000000,0</coordinates></Point></Placemark></Response></kml>
|
data/test/test_helper.rb
CHANGED
@@ -1,12 +1,9 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
1
|
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
3
2
|
$:.unshift(File.dirname(__FILE__) + '/mocks')
|
4
|
-
$:.unshift(File.dirname(__FILE__)+ '/extra')
|
5
3
|
|
6
4
|
require 'rubygems'
|
7
5
|
require 'yaml'
|
8
6
|
require 'test/unit'
|
9
|
-
require 'breakpoint'
|
10
7
|
require 'graticule'
|
11
8
|
require 'mocha'
|
12
9
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../../test_helper'
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../test_helper')
|
2
2
|
|
3
3
|
module Graticule
|
4
4
|
module Geocoder
|
@@ -25,6 +25,16 @@ module Graticule
|
|
25
25
|
assert_equal location, @geocoder.locate('1600 Amphitheatre Parkway, Mountain View, CA')
|
26
26
|
end
|
27
27
|
|
28
|
+
# <?xml version='1.0' encoding='UTF-8'?><kml xmlns='http://earth.google.com/kml/2.0'><Response><name>15-17 </name><Status><code>200</code><request>geocode</request></Status><Placemark id='p1'><Point><coordinates>-17.000000,15.000000,0</coordinates></Point></Placemark></Response></kml>
|
29
|
+
def test_only_coordinates
|
30
|
+
return unless prepare_response(:only_coordinates)
|
31
|
+
|
32
|
+
location = Location.new(:longitude => -17.000000, :latitude => 15.000000)
|
33
|
+
assert_equal location, @geocoder.locate('15-17 & 16 Railroad Square, Nashua, NH, 03064')
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
|
28
38
|
def test_partial
|
29
39
|
return unless prepare_response(:partial)
|
30
40
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../../test_helper'
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../test_helper')
|
2
2
|
|
3
3
|
module Graticule
|
4
4
|
module Geocoder
|
@@ -7,7 +7,7 @@ module Graticule
|
|
7
7
|
def setup
|
8
8
|
@mock_geocoders = [mock("geocoder 1"), mock("geocoder 2")]
|
9
9
|
@mock_geocoders.each {|g| g.stubs(:locate) }
|
10
|
-
@geocoder = Multi.new
|
10
|
+
@geocoder = Multi.new(*@mock_geocoders)
|
11
11
|
end
|
12
12
|
|
13
13
|
def test_locate_calls_each_geocoder_and_raises_error
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../test_helper')
|
2
|
+
|
3
|
+
module Graticule
|
4
|
+
module Geocoder
|
5
|
+
class MultimapTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def setup
|
8
|
+
URI::HTTP.responses = []
|
9
|
+
URI::HTTP.uris = []
|
10
|
+
@geocoder = Multimap.new 'API_KEY'
|
11
|
+
@location = Location.new(
|
12
|
+
:street => "Oxford Street",
|
13
|
+
:locality => "London",
|
14
|
+
:region => "London",
|
15
|
+
:postal_code => "W1",
|
16
|
+
:country => "GB",
|
17
|
+
:longitude => -0.14839,
|
18
|
+
:latitude => 51.51452,
|
19
|
+
:precision => :address
|
20
|
+
)
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_locate
|
24
|
+
prepare_response(:success)
|
25
|
+
assert_equal @location, @geocoder.locate('Oxford Street, LONDON, W1')
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_url_from_string
|
29
|
+
prepare_response(:success)
|
30
|
+
@geocoder.locate('Oxford Street, LONDON, W1')
|
31
|
+
assert_equal 'http://clients.multimap.com/API/geocode/1.2/API_KEY?qs=Oxford%20Street,%20LONDON,%20W1', URI::HTTP.uris.first
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_url_from_location
|
35
|
+
prepare_response(:success)
|
36
|
+
@geocoder.locate(:street => 'Oxford Street', :city => 'London')
|
37
|
+
assert_equal 'http://clients.multimap.com/API/geocode/1.2/API_KEY?city=&countryCode=&postalCode=®ion=&street=Oxford%20Street', URI::HTTP.uris.first
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
def test_locate_bad_address
|
42
|
+
prepare_response(:no_matches)
|
43
|
+
assert_raise(Error) { @geocoder.locate('yucksthoeusthaoeusnhtaosu') }
|
44
|
+
end
|
45
|
+
|
46
|
+
protected
|
47
|
+
def prepare_response(id)
|
48
|
+
URI::HTTP.responses << response('multimap', id)
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
metadata
CHANGED
@@ -1,33 +1,54 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.4
|
3
|
-
specification_version: 1
|
4
2
|
name: graticule
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.2.
|
7
|
-
date: 2007-09-12 00:00:00 -04:00
|
8
|
-
summary: API for using all the popular geocoding services.
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: brandon@opensoul.org
|
12
|
-
homepage: http://graticule.rubyforge.org
|
13
|
-
rubyforge_project: graticule
|
14
|
-
description: Graticule is a geocoding API that provides a common interface to all the popular services, including Google, Yahoo, Geocoder.us, and MetaCarta.
|
15
|
-
autorequire:
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
version: 0.2.7
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
6
|
authors:
|
30
7
|
- Brandon Keepers
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-10-03 00:00:00 -04:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: activesupport
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: hoe
|
27
|
+
type: :development
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.7.0
|
34
|
+
version:
|
35
|
+
description: Graticule is a geocoding API that provides a common interface to all the popular services, including Google, Yahoo, Geocoder.us, and MetaCarta.
|
36
|
+
email: brandon@opensoul.org
|
37
|
+
executables:
|
38
|
+
- geocode
|
39
|
+
extensions: []
|
40
|
+
|
41
|
+
extra_rdoc_files:
|
42
|
+
- CHANGELOG.txt
|
43
|
+
- LICENSE.txt
|
44
|
+
- Manifest.txt
|
45
|
+
- README.txt
|
46
|
+
- test/fixtures/responses/host_ip/private.txt
|
47
|
+
- test/fixtures/responses/host_ip/success.txt
|
48
|
+
- test/fixtures/responses/host_ip/unknown.txt
|
49
|
+
- test/fixtures/responses/local_search_maps/empty.txt
|
50
|
+
- test/fixtures/responses/local_search_maps/not_found.txt
|
51
|
+
- test/fixtures/responses/local_search_maps/success.txt
|
31
52
|
files:
|
32
53
|
- CHANGELOG.txt
|
33
54
|
- LICENSE.txt
|
@@ -50,6 +71,7 @@ files:
|
|
50
71
|
- lib/graticule/geocoder/google.rb
|
51
72
|
- lib/graticule/geocoder/host_ip.rb
|
52
73
|
- lib/graticule/geocoder/local_search_maps.rb
|
74
|
+
- lib/graticule/geocoder/map_quest.rb
|
53
75
|
- lib/graticule/geocoder/meta_carta.rb
|
54
76
|
- lib/graticule/geocoder/multi.rb
|
55
77
|
- lib/graticule/geocoder/postcode_anywhere.rb
|
@@ -66,6 +88,7 @@ files:
|
|
66
88
|
- test/fixtures/responses/google/badkey.xml
|
67
89
|
- test/fixtures/responses/google/limit.xml
|
68
90
|
- test/fixtures/responses/google/missing_address.xml
|
91
|
+
- test/fixtures/responses/google/only_coordinates.xml
|
69
92
|
- test/fixtures/responses/google/partial.xml
|
70
93
|
- test/fixtures/responses/google/server_error.xml
|
71
94
|
- test/fixtures/responses/google/success.xml
|
@@ -100,6 +123,33 @@ files:
|
|
100
123
|
- test/unit/graticule/geocoder/yahoo_test.rb
|
101
124
|
- test/unit/graticule/geocoder_test.rb
|
102
125
|
- test/unit/graticule/location_test.rb
|
126
|
+
has_rdoc: true
|
127
|
+
homepage: http://graticule.rubyforge.org
|
128
|
+
post_install_message:
|
129
|
+
rdoc_options:
|
130
|
+
- --main
|
131
|
+
- README.txt
|
132
|
+
require_paths:
|
133
|
+
- lib
|
134
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: "0"
|
139
|
+
version:
|
140
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: "0"
|
145
|
+
version:
|
146
|
+
requirements: []
|
147
|
+
|
148
|
+
rubyforge_project: graticule
|
149
|
+
rubygems_version: 1.2.0
|
150
|
+
signing_key:
|
151
|
+
specification_version: 2
|
152
|
+
summary: API for using all the popular geocoding services.
|
103
153
|
test_files:
|
104
154
|
- test/unit/graticule/distance_test.rb
|
105
155
|
- test/unit/graticule/geocoder/geocoder_us_test.rb
|
@@ -108,46 +158,8 @@ test_files:
|
|
108
158
|
- test/unit/graticule/geocoder/local_search_maps_test.rb
|
109
159
|
- test/unit/graticule/geocoder/meta_carta_test.rb
|
110
160
|
- test/unit/graticule/geocoder/multi_test.rb
|
161
|
+
- test/unit/graticule/geocoder/multimap_test.rb
|
111
162
|
- test/unit/graticule/geocoder/postcode_anywhere_test.rb
|
112
163
|
- test/unit/graticule/geocoder/yahoo_test.rb
|
113
164
|
- test/unit/graticule/geocoder_test.rb
|
114
165
|
- test/unit/graticule/location_test.rb
|
115
|
-
rdoc_options:
|
116
|
-
- --main
|
117
|
-
- README.txt
|
118
|
-
extra_rdoc_files:
|
119
|
-
- CHANGELOG.txt
|
120
|
-
- LICENSE.txt
|
121
|
-
- Manifest.txt
|
122
|
-
- README.txt
|
123
|
-
- test/fixtures/responses/host_ip/private.txt
|
124
|
-
- test/fixtures/responses/host_ip/success.txt
|
125
|
-
- test/fixtures/responses/host_ip/unknown.txt
|
126
|
-
- test/fixtures/responses/local_search_maps/empty.txt
|
127
|
-
- test/fixtures/responses/local_search_maps/not_found.txt
|
128
|
-
- test/fixtures/responses/local_search_maps/success.txt
|
129
|
-
executables:
|
130
|
-
- geocode
|
131
|
-
extensions: []
|
132
|
-
|
133
|
-
requirements: []
|
134
|
-
|
135
|
-
dependencies:
|
136
|
-
- !ruby/object:Gem::Dependency
|
137
|
-
name: activesupport
|
138
|
-
version_requirement:
|
139
|
-
version_requirements: !ruby/object:Gem::Version::Requirement
|
140
|
-
requirements:
|
141
|
-
- - ">"
|
142
|
-
- !ruby/object:Gem::Version
|
143
|
-
version: 0.0.0
|
144
|
-
version:
|
145
|
-
- !ruby/object:Gem::Dependency
|
146
|
-
name: hoe
|
147
|
-
version_requirement:
|
148
|
-
version_requirements: !ruby/object:Gem::Version::Requirement
|
149
|
-
requirements:
|
150
|
-
- - ">="
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: 1.3.0
|
153
|
-
version:
|