geo_point 0.2.0 → 0.2.1
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/README.textile +1 -1
- data/VERSION +1 -1
- data/geo_point.gemspec +3 -2
- data/lib/geo_point/core_extension.rb +31 -0
- data/lib/geo_point.rb +8 -5
- data/spec/geo_point/coord_mode_spec.rb +36 -0
- metadata +16 -15
data/README.textile
CHANGED
@@ -3,7 +3,7 @@ h1. Geo Point
|
|
3
3
|
Adds the concept of a GeoPoint for geo libraries. A GeoPoint encapsulates latitude and longitude, and:
|
4
4
|
|
5
5
|
* a coordinates mode (coord_mode) that can be set to either :lng_lat or :lat_lng
|
6
|
-
* calculations such as
|
6
|
+
* calculations such as: distance_to, bearing_to, midpoint, intersection and destination point
|
7
7
|
* parsing from various String, Hash or Array formats, including from DMS string format, such as "58 38 38N, 003 04 12W"
|
8
8
|
|
9
9
|
Using GeoPoints makes it much easier and more efficient to transport location point data and various geo libraries adds additional functionality such as
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.1
|
data/geo_point.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{geo_point}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = [%q{Kristian Mandrup}]
|
12
|
-
s.date = %q{2011-06-
|
12
|
+
s.date = %q{2011-06-14}
|
13
13
|
s.description = %q{Allows for easy parsing of Strings, Hashes and Arrays into a GeoPoint with lat/long}
|
14
14
|
s.email = %q{kmandrup@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -31,6 +31,7 @@ Gem::Specification.new do |s|
|
|
31
31
|
"lib/geo_point/core_extension.rb",
|
32
32
|
"lib/geo_point/shared.rb",
|
33
33
|
"spec/geo_point/class_methods_spec.rb",
|
34
|
+
"spec/geo_point/coord_mode_spec.rb",
|
34
35
|
"spec/geo_point/initializer_spec.rb",
|
35
36
|
"spec/geo_point/lat_lon.rb",
|
36
37
|
"spec/geo_point_spec.rb",
|
@@ -14,3 +14,34 @@ end
|
|
14
14
|
cls.send :include, GeoPoint::CoreExtension
|
15
15
|
end
|
16
16
|
|
17
|
+
class Array
|
18
|
+
def to_lat
|
19
|
+
raise "Array must contain at least one element to return the latitude" if empty?
|
20
|
+
case GeoPoint.coord_mode
|
21
|
+
when :lng_lat
|
22
|
+
self[1].to_lat
|
23
|
+
else
|
24
|
+
first.to_lat
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_lng
|
29
|
+
raise "Array must contain at least two elements to return the longitude" if !self[1]
|
30
|
+
case GeoPoint.coord_mode
|
31
|
+
when :lng_lat
|
32
|
+
first.to_lng
|
33
|
+
else
|
34
|
+
self[1].to_lng
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def to_lat_lng
|
39
|
+
raise "Array must contain at least two elements to be converted to latitude and longitude" if !(size >= 2)
|
40
|
+
[first.to_lat, self[1].to_lng]
|
41
|
+
end
|
42
|
+
|
43
|
+
def to_lng_lat
|
44
|
+
to_lat_lng.reverse
|
45
|
+
# [first.to_lng, self[1].to_lat]
|
46
|
+
end
|
47
|
+
end
|
data/lib/geo_point.rb
CHANGED
@@ -29,8 +29,8 @@ class GeoPoint
|
|
29
29
|
# - :mode - coordinates mode, either :lng_lat or :lat_lng, otherwise uses global setting as per GeoPoint.coord_mode
|
30
30
|
def initialize *args
|
31
31
|
options = args.is_a?(GeoPoint) ? {} : args.last_option
|
32
|
-
earth_radius_km = options[:radius]
|
33
|
-
coord_mode = options[:mode]
|
32
|
+
earth_radius_km = options[:radius] if options[:radius]
|
33
|
+
coord_mode = options[:mode] if options[:mode]
|
34
34
|
|
35
35
|
case args.size
|
36
36
|
when 1
|
@@ -127,12 +127,15 @@ class GeoPoint
|
|
127
127
|
end
|
128
128
|
|
129
129
|
def to_coords points
|
130
|
-
|
130
|
+
meth = :"to_#{coord_mode}"
|
131
|
+
points.send(meth)
|
131
132
|
end
|
132
133
|
|
133
134
|
def create_from_one args
|
134
|
-
args = args.first
|
135
|
-
|
135
|
+
args = args.first
|
136
|
+
array = to_coords(args)
|
137
|
+
array = coord_mode == :lng_lat ? array.reverse : array
|
138
|
+
create_from_two *array
|
136
139
|
end
|
137
140
|
|
138
141
|
def create_from_two lat, lon
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
# - www.movable-type.co.uk/scripts/latlong.html
|
4
|
+
describe GeoPoint do
|
5
|
+
describe '#coord_mode' do
|
6
|
+
it 'should parse as lng, lat' do
|
7
|
+
GeoPoint.coord_mode = :lng_lat
|
8
|
+
point = [2, 5].geo_point
|
9
|
+
point.lat.should == 5
|
10
|
+
point.lng.should == 2
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should parse as lat, lng' do
|
14
|
+
GeoPoint.coord_mode = :lat_lng
|
15
|
+
point = [5, 2].geo_point
|
16
|
+
point.lat.should == 5
|
17
|
+
point.lng.should == 2
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe Array do
|
23
|
+
describe '#coord_mode' do
|
24
|
+
it 'should parse as lng, lat' do
|
25
|
+
GeoPoint.coord_mode = :lng_lat
|
26
|
+
[2, 5].to_lat.should == 5
|
27
|
+
[2, 5].to_lng.should == 2
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should parse as lat, lng' do
|
31
|
+
GeoPoint.coord_mode = :lat_lng
|
32
|
+
[5, 2].to_lat.should == 5
|
33
|
+
[5, 2].to_lng.should == 2
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: geo_point
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-06-
|
12
|
+
date: 2011-06-14 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: geo_calc
|
16
|
-
requirement: &
|
16
|
+
requirement: &2156168400 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.7.3
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2156168400
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: geo_units
|
27
|
-
requirement: &
|
27
|
+
requirement: &2156165340 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.2.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2156165340
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &2156164180 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 2.6.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2156164180
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
|
-
requirement: &
|
49
|
+
requirement: &2156162640 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 1.0.6
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2156162640
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: jeweler
|
60
|
-
requirement: &
|
60
|
+
requirement: &2156160060 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 1.6.2
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2156160060
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rcov
|
71
|
-
requirement: &
|
71
|
+
requirement: &2156156320 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *2156156320
|
80
80
|
description: Allows for easy parsing of Strings, Hashes and Arrays into a GeoPoint
|
81
81
|
with lat/long
|
82
82
|
email: kmandrup@gmail.com
|
@@ -100,6 +100,7 @@ files:
|
|
100
100
|
- lib/geo_point/core_extension.rb
|
101
101
|
- lib/geo_point/shared.rb
|
102
102
|
- spec/geo_point/class_methods_spec.rb
|
103
|
+
- spec/geo_point/coord_mode_spec.rb
|
103
104
|
- spec/geo_point/initializer_spec.rb
|
104
105
|
- spec/geo_point/lat_lon.rb
|
105
106
|
- spec/geo_point_spec.rb
|
@@ -119,7 +120,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
119
120
|
version: '0'
|
120
121
|
segments:
|
121
122
|
- 0
|
122
|
-
hash:
|
123
|
+
hash: -646464585705380862
|
123
124
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
125
|
none: false
|
125
126
|
requirements:
|