soey-geokit 1.2.4

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest.txt ADDED
@@ -0,0 +1,19 @@
1
+ .project
2
+ Manifest.txt
3
+ README.markdown
4
+ Rakefile
5
+ geokit.gemspec
6
+ lib/geokit.rb
7
+ lib/geokit/geocoders.rb
8
+ lib/geokit/mappable.rb
9
+ test/test_base_geocoder.rb
10
+ test/test_bounds.rb
11
+ test/test_ca_geocoder.rb
12
+ test/test_geoloc.rb
13
+ test/test_google_geocoder.rb
14
+ test/test_google_reverse_geocoder.rb
15
+ test/test_ipgeocoder.rb
16
+ test/test_latlng.rb
17
+ test/test_multi_geocoder.rb
18
+ test/test_us_geocoder.rb
19
+ test/test_yahoo_geocoder.rb
data/README.markdown ADDED
@@ -0,0 +1,166 @@
1
+ ## GEOKIT GEM DESCRIPTION
2
+
3
+ The Geokit gem provides:
4
+
5
+ * Distance calculations between two points on the earth. Calculate the distance in miles, kilometers, or nautical miles, with all the trigonometry abstracted away by GeoKit.
6
+ * Geocoding from multiple providers. It supports Google, Yahoo, Geocoder.us, and Geocoder.ca geocoders, and others. It provides a uniform response structure from all of them.
7
+ It also provides a fail-over mechanism, in case your input fails to geocode in one service.
8
+ * Rectangular bounds calculations: is a point within a given rectangular bounds?
9
+ * Heading and midpoint calculations
10
+
11
+ Combine this with gem with the [geokit-rails plugin](http://github.com/andre/geokit-rails/tree/master) to get location-based finders for your Rails app.
12
+
13
+ * Geokit Documentation at Rubyforge [http://geokit.rubyforge.org](http://geokit.rubyforge.org).
14
+ * Repository at Github: [http://github.com/andre/geokit-gem/tree/master](http://github.com/andre/geokit-gem/tree/master).
15
+
16
+ ## INSTALL
17
+
18
+ gem sources -a http://gems.github.com
19
+ sudo gem install andre-geokit
20
+
21
+ ## QUICK START
22
+
23
+ irb> require 'rubygems'
24
+ irb> require 'geokit'
25
+ irb> a=Geokit::Geocoders::YahooGeocoder.geocode '140 Market St, San Francisco, CA'
26
+ irb> a.ll
27
+ => 37.79363,-122.396116
28
+ irb> b=Geokit::Geocoders::YahooGeocoder.geocode '789 Geary St, San Francisco, CA'
29
+ irb> b.ll
30
+ => 37.786217,-122.41619
31
+ irb> a.distance_to(b)
32
+ => 1.21120007413626
33
+ irb> a.heading_to(b)
34
+ => 244.959832435678
35
+ irb(main):006:0> c=a.midpoint_to(b) # what's halfway from a to b?
36
+ irb> c.ll
37
+ => "37.7899239257175,-122.406153503469"
38
+ irb(main):008:0> d=c.endpoint(90,10) # what's 10 miles to the east of c?
39
+ irb> d.ll
40
+ => "37.7897825005142,-122.223214776155"
41
+
42
+ FYI, that `.ll` method means "latitude longitude".
43
+
44
+ See the RDOC more more ... there are also operations on rectangular bounds (e.g., determining if a point is within bounds, find the center, etc).
45
+
46
+ ## CONFIGURATION
47
+
48
+ If you're using this gem by itself, here's how to set configurations:
49
+
50
+ # These defaults are used in Geokit::Mappable.distance_to and in acts_as_mappable
51
+ Geokit::default_units = :miles
52
+ Geokit::default_formula = :sphere
53
+
54
+ # This is the timeout value in seconds to be used for calls to the geocoder web
55
+ # services. For no timeout at all, comment out the setting. The timeout unit
56
+ # is in seconds.
57
+ Geokit::Geocoders::timeout = 3
58
+
59
+ # These settings are used if web service calls must be routed through a proxy.
60
+ # These setting can be nil if not needed, otherwise, addr and port must be
61
+ # filled in at a minimum. If the proxy requires authentication, the username
62
+ # and password can be provided as well.
63
+ Geokit::Geocoders::proxy_addr = nil
64
+ Geokit::Geocoders::proxy_port = nil
65
+ Geokit::Geocoders::proxy_user = nil
66
+ Geokit::Geocoders::proxy_pass = nil
67
+
68
+ # This is your yahoo application key for the Yahoo Geocoder.
69
+ # See http://developer.yahoo.com/faq/index.html#appid
70
+ # and http://developer.yahoo.com/maps/rest/V1/geocode.html
71
+ Geokit::Geocoders::yahoo = 'REPLACE_WITH_YOUR_YAHOO_KEY'
72
+
73
+ # This is your Google Maps geocoder key.
74
+ # See http://www.google.com/apis/maps/signup.html
75
+ # and http://www.google.com/apis/maps/documentation/#Geocoding_Examples
76
+ Geokit::Geocoders::google = 'REPLACE_WITH_YOUR_GOOGLE_KEY'
77
+
78
+ # This is your username and password for geocoder.us.
79
+ # To use the free service, the value can be set to nil or false. For
80
+ # usage tied to an account, the value should be set to username:password.
81
+ # See http://geocoder.us
82
+ # and http://geocoder.us/user/signup
83
+ Geokit::Geocoders::geocoder_us = false
84
+
85
+ # This is your authorization key for geocoder.ca.
86
+ # To use the free service, the value can be set to nil or false. For
87
+ # usage tied to an account, set the value to the key obtained from
88
+ # Geocoder.ca.
89
+ # See http://geocoder.ca
90
+ # and http://geocoder.ca/?register=1
91
+ Geokit::Geocoders::geocoder_ca = false
92
+
93
+ # This is the order in which the geocoders are called in a failover scenario
94
+ # If you only want to use a single geocoder, put a single symbol in the array.
95
+ # Valid symbols are :google, :yahoo, :us, and :ca.
96
+ # Be aware that there are Terms of Use restrictions on how you can use the
97
+ # various geocoders. Make sure you read up on relevant Terms of Use for each
98
+ # geocoder you are going to use.
99
+ Geokit::Geocoders::provider_order = [:google,:us]
100
+
101
+ If you're using this gem with the [geokit-rails plugin](http://github.com/andre/geokit-rails/tree/master), the plugin
102
+ creates a template with these settings and places it in `config/initializers/geokit_config.rb`.
103
+
104
+ ## SUPPORTED GEOCODERS
105
+
106
+ ### "regular" address geocoders
107
+ * Yahoo Geocoder - requires an API key.
108
+ * Geocoder.us - may require authentication if performing more than the free request limit.
109
+ * Geocoder.ca - for Canada; may require authentication as well.
110
+ * Geonames - a free geocoder
111
+
112
+ ### address geocoders that also provide reverse geocoding
113
+ * Google Geocoder - requires an API key.
114
+
115
+ ### IP address geocoders
116
+ * IP Geocoder - geocodes an IP address using hostip.info's web service.
117
+ * Geoplugin.net -- another IP address geocoder
118
+
119
+ ### The Multigeocoder
120
+ * Multi Geocoder - provides failover for the physical location geocoders.
121
+
122
+ ## NOTES ON WHAT'S WHERE
123
+
124
+ mappable.rb contains the Mappable module, which provides basic
125
+ distance calculation methods, i.e., calculating the distance
126
+ between two points.
127
+
128
+ mappable.rb also contains LatLng, GeoLoc, and Bounds.
129
+ LatLng is a simple container for latitude and longitude, but
130
+ it's made more powerful by mixing in the above-mentioned Mappable
131
+ module -- therefore, you can calculate easily the distance between two
132
+ LatLng ojbects with `distance = first.distance_to(other)`
133
+
134
+ GeoLoc (also in mappable.rb) represents an address or location which
135
+ has been geocoded. You can get the city, zipcode, street address, etc.
136
+ from a GeoLoc object. GeoLoc extends LatLng, so you also get lat/lng
137
+ AND the Mappable modeule goodness for free.
138
+
139
+ geocoders.rb contains all the geocoder implemenations. All the gercoders
140
+ inherit from a common base (class Geocoder) and implement the private method
141
+ do_geocode.
142
+
143
+ ## LICENSE
144
+
145
+ (The MIT License)
146
+
147
+ Copyright (c) 2007-2009 Andre Lewis and Bill Eisenhauer
148
+
149
+ Permission is hereby granted, free of charge, to any person obtaining
150
+ a copy of this software and associated documentation files (the
151
+ 'Software'), to deal in the Software without restriction, including
152
+ without limitation the rights to use, copy, modify, merge, publish,
153
+ distribute, sublicense, and/or sell copies of the Software, and to
154
+ permit persons to whom the Software is furnished to do so, subject to
155
+ the following conditions:
156
+
157
+ The above copyright notice and this permission notice shall be
158
+ included in all copies or substantial portions of the Software.
159
+
160
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
161
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
162
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
163
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
164
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
165
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
166
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,20 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rubygems'
4
+ require 'hoe'
5
+ require './lib/geokit'
6
+
7
+ Hoe.new('Geokit', Geokit::VERSION) do |p|
8
+ # p.rubyforge_name = 'Geokitx' # if different than lowercase project name
9
+ p.developer('Andre Lewis and Bill Eisenhauer', 'andre@earthcode.com / bill_eisenhauer@yahoo.com')
10
+ end
11
+
12
+ task :generate_gemspec do
13
+ system "rake debug_gem | grep -v \"(in \" > `basename \\`pwd\\``.gemspec"
14
+ end
15
+
16
+ task :update_manifest do
17
+ system "touch Manifest.txt; rake check_manifest | grep -v \"(in \" | patch"
18
+ end
19
+
20
+ # vim: syntax=Ruby