graticule 0.2.6 → 0.2.7
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|