forked from itsmattking/dm-geokit
-
Notifications
You must be signed in to change notification settings - Fork 2
/
README
52 lines (39 loc) · 1.71 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
dm-geokit
=========
A mixin for Datamapper models that enables geographic functionality.
* Search for content via DataMapper-style query methods, e.g. Location.all(:address.near => {:origin => 'Portland, OR', :distance => 5.mi})
* Sort by distance easily: Location.all(:address.near => {:origin => 'Portland, OR', :distance => 5.mi}, :order => [:address_distance.desc])
* Ability to specify multiple fields that are geocodable (mostly)
Usage
=====
Basic Class Definition:
class Location
include DataMapper::Resource
include DataMapper::GeoKit
property :id, Serial
has_geographic_location :address
end
This will automatically generate fields and methods for use with the DM Object, prefixed with the field name specified.
Since the above example used the field :address, the following fields would be generated:
* address_street_address
* address_city
* address_state
* address_zip
* address_country_code
* address_full_address
* address_lat
* address_lng
You can either reference those fields directly, or use the proxy object returned by calling .address on your object:
l = Location.all(:address.near => {:origin => 'Portland, OR', :distance => 5.mi})
l.each do |loc|
puts loc.address # .to_s yields string representation of full address, e.g. "12345 My St. Portland, OR USA"
puts loc.address.inspect # the proxy object, GeographicLocation, with matching methods for each property
puts loc.address.street_address # getting the street_address from the proxy object
puts loc.address_street_address # directly access the SQL column
end
The GeographicLocation proxy object is a convenience to allow you to compare and sort results in Ruby.
Requirements
===========
* geokit >= 1.5.0
* dm-core >= 0.10.1
* dm-aggregates >= 0.10.1