smappy 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/smappy.rb +1 -1
- data/lib/smappy/static_map.rb +2 -2
- data/markers/information_marker.png +0 -0
- data/spec/fixtures/cassettes/StaticMap_to_image.yml +3495 -0
- data/spec/fixtures/cassettes/Tile_to_image.yml +228 -0
- data/spec/smappy/location_spec.rb +38 -0
- data/spec/smappy/marker_spec.rb +40 -0
- data/spec/smappy/static_map_spec.rb +127 -0
- data/spec/smappy/tile_spec.rb +99 -0
- data/spec/spec_helper.rb +19 -0
- metadata +14 -6
@@ -0,0 +1,228 @@
|
|
1
|
+
---
|
2
|
+
- !ruby/struct:VCR::HTTPInteraction
|
3
|
+
request: !ruby/struct:VCR::Request
|
4
|
+
method: :get
|
5
|
+
uri: http://tile.openstreetmap.org:80/0/0/0.png
|
6
|
+
body:
|
7
|
+
headers:
|
8
|
+
response: !ruby/struct:VCR::Response
|
9
|
+
status: !ruby/struct:VCR::ResponseStatus
|
10
|
+
code: 200
|
11
|
+
message: OK
|
12
|
+
headers:
|
13
|
+
content-length:
|
14
|
+
- '8538'
|
15
|
+
access-control-allow-origin:
|
16
|
+
- ! '*'
|
17
|
+
content-type:
|
18
|
+
- image/png
|
19
|
+
date:
|
20
|
+
- Wed, 21 Dec 2011 14:26:01 GMT
|
21
|
+
server:
|
22
|
+
- Apache/2.2.14 (Ubuntu)
|
23
|
+
etag:
|
24
|
+
- ! '"4e886769086b171ca1bfe072ae9cc2d1"'
|
25
|
+
expires:
|
26
|
+
- Tue, 27 Dec 2011 16:29:59 GMT
|
27
|
+
cache-control:
|
28
|
+
- max-age=525838
|
29
|
+
age:
|
30
|
+
- '112'
|
31
|
+
x-cache:
|
32
|
+
- HIT from konqi.openstreetmap.org
|
33
|
+
x-cache-lookup:
|
34
|
+
- HIT from konqi.openstreetmap.org:3128
|
35
|
+
via:
|
36
|
+
- 1.1 konqi.openstreetmap.org:3128 (squid/2.7.STABLE9)
|
37
|
+
body: !binary |-
|
38
|
+
iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAMAAABrrFhUAAAAkFBMVEW10NC5
|
39
|
+
0dC80tG+1NK+1NTA09LA1NLB1dTF1dLE1tXG2NXI1tPI1tXJ2dbM2dbK2djM
|
40
|
+
2tjO3NnQ2dTW2dfQ29jR3drS3tzU29nU3trV3tzY39rY39zd39vV4NrW4NzY
|
41
|
+
4NvZ4d3c4t7d5N7d4+De5ODg4t/g5N/g4+Dh5eHk5uLl6OLm6OTo6OPq6uXs
|
42
|
+
6uXt7OZLETx0AAAghUlEQVR4nO09C5urqJJgzsTRHTu6e+iNe/e4mPbOBUzh
|
43
|
+
//93y8P3W2PSfWe6Zr7TVlBEKOoNIPQN3/AN3/AN3/AN3/AN3/A8wCRmNP3s
|
44
|
+
Vnwa4ICBAskY/uymfAI41z9SXshCqv8L9tmteSYEJ5cEQf9Xwu5//knU+DP2
|
45
|
+
J6Vp+BktewU4jEJBCyE5PbV+xoGifBCiAM7zAgoZf1oLnwuRGuJUCv21FBo6
|
46
|
+
x945TBkB9e2aB4D6I7xPbObzgKmvM58oc/WPW/9+YhlIoUul7QAJ/BOb+SQI
|
47
|
+
pSZ0w+RA8zqQ1BZkl1MiUz36RV0Of0EKYGpYy/EHA5Igh3Lq5TlGVAhL+wo4
|
48
|
+
45nz2a09Ghw1583Qakmn/tP/AKLq4sZYASG+VwVACMvCkCNy/uxGHwnMjnmb
|
49
|
+
Ahhm+lcqFGsUESsLBDEsMgUcIvfdXa65D3THM88HpeOZyS3tHJeFYGqSg5KH
|
50
|
+
UhS8pglVrhiBUoRSkKdzpKbEdeubsKIb+uUYiI+iD1kO/d38ySk4SChhUFOE
|
51
|
+
bF0IfQPTUkFsfRX9x1fUo9PMBXm3hG94nboO3NDIu1Lsmc9v4Vd7sYWeHaVb
|
52
|
+
Rf/8XQ2/OySBBKPw0wjjAxS/YzeuPohVHxi73FyU323/NDgX5k+05TUORmf2
|
53
|
+
Qd0MZ7T+saohRERuJqeDACstJ3KVCqj0XMItraeqV0Zov8Yt05w0ikakJI04
|
54
|
+
RV7KKeWspUf6dStUl94O/rKVcNIazhVH7I1qZqhZoERJi/MVBjq4ogTOyFSN
|
55
|
+
2EWn3k8poeA7xH1TUmSUC2DFXQc22GsgMYPJSOLVsvANdUccYIgLmUxUiAPm
|
56
|
+
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
|
228
|
+
http_version: '1.0'
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Smappy::Location do
|
4
|
+
let(:location) { Smappy::Location.new(50.9985099, 5.857652) }
|
5
|
+
|
6
|
+
describe '#to_tile' do
|
7
|
+
it 'returns a tile at the default zoomlevel' do
|
8
|
+
tile = location.to_tile
|
9
|
+
tile.zoomlevel.should == 0
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'returns a tile at the specified zoomlevel' do
|
13
|
+
tile = location.to_tile zoomlevel: 15
|
14
|
+
tile.zoomlevel.should == 15
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'returns a tile with the correct position at the specified zoomlevel' do
|
18
|
+
tile = location.to_tile zoomlevel: 15
|
19
|
+
[tile.x, tile.y].should == [16917, 10970]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#position_on_map' do
|
24
|
+
it 'returns the coordinates of the position on the given map' do
|
25
|
+
map = Smappy::StaticMap.new(center: [50.9985099, 5.857652], zoomlevel: 15)
|
26
|
+
position = location.position_on_map(map)
|
27
|
+
position.should == [250, 175]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '#position_on_tile' do
|
32
|
+
it 'returns the coordinates of the position of the location within the given tile' do
|
33
|
+
tile = location.to_tile zoomlevel: 15
|
34
|
+
position = location.position_on_tile tile
|
35
|
+
position.should == [45, 52]
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Smappy::Marker do
|
4
|
+
let(:marker) { Smappy::Marker.new(50.9985099, 5.857652) }
|
5
|
+
|
6
|
+
describe '#initialize' do
|
7
|
+
it 'sets a default image' do
|
8
|
+
marker.image.should == File.expand_path('../../../markers/information_marker.png', __FILE__)
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'sets a default offset' do
|
12
|
+
marker.offset.should == [-16, -37]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#width' do
|
17
|
+
it 'returns the width of the marker image' do
|
18
|
+
marker.width.should == 32
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#height' do
|
23
|
+
it 'returns the height of the marker image' do
|
24
|
+
marker.height.should == 37
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#position_on_map' do
|
29
|
+
let(:map) { Smappy::StaticMap.new(center: [50.9985099, 5.857652], zoomlevel: 15) }
|
30
|
+
|
31
|
+
it 'returns the coordinates of the marker on the given map' do
|
32
|
+
marker.position_on_map(map).should == [234, 138]
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'returns the coordinates of the marker on the given map offset by the specified offset' do
|
36
|
+
marker.offset = [0, 0]
|
37
|
+
marker.position_on_map(map).should == [250, 175]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,127 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Smappy::StaticMap do
|
4
|
+
let(:map) { Smappy::StaticMap.new center: [50.9985099, 5.857652], zoomlevel: 15 }
|
5
|
+
|
6
|
+
describe '#initialize' do
|
7
|
+
it 'sets a default width' do
|
8
|
+
Smappy::StaticMap.new.width.should == 500
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'sets a default height' do
|
12
|
+
Smappy::StaticMap.new.height.should == 350
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'sets a default zoomlevel' do
|
16
|
+
Smappy::StaticMap.new.zoomlevel.should == 0
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'sets a default center' do
|
20
|
+
map = Smappy::StaticMap.new
|
21
|
+
center = map.center
|
22
|
+
center.latitude.should == 0.0
|
23
|
+
center.longitude.should == 0.0
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'sets the width' do
|
27
|
+
Smappy::StaticMap.new(width: 200).width.should == 200
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'sets the height' do
|
31
|
+
Smappy::StaticMap.new(height: 200).height.should == 200
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'sets the zoomlevel' do
|
35
|
+
Smappy::StaticMap.new(zoomlevel: 1).zoomlevel.should == 1
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'sets the center' do
|
39
|
+
map = Smappy::StaticMap.new(center: [50.9985099, 5.857652])
|
40
|
+
center = map.center
|
41
|
+
center.latitude.should == 50.9985099
|
42
|
+
center.longitude.should == 5.857652
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '#center=' do
|
47
|
+
it 'sets the center' do
|
48
|
+
map.center = Smappy::Location.new(50.9985099, 5.857652)
|
49
|
+
center = map.center
|
50
|
+
|
51
|
+
center.latitude.should == 50.9985099
|
52
|
+
center.longitude.should == 5.857652
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'accepts an array' do
|
56
|
+
map.center = [50.9985099, 5.857652]
|
57
|
+
center = map.center
|
58
|
+
|
59
|
+
center.latitude.should == 50.9985099
|
60
|
+
center.longitude.should == 5.857652
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
describe '#center_tile' do
|
65
|
+
it 'returns the tile that contains the center of the map' do
|
66
|
+
tile = map.center_tile
|
67
|
+
[tile.x, tile.y].should == [16917, 10970]
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe '#tile_offset' do
|
72
|
+
it 'returns the offset for the placement of tiles' do
|
73
|
+
map.tile_offset.should == [-83, -76]
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe '#tile_options' do
|
78
|
+
let(:options) { map.tile_options }
|
79
|
+
|
80
|
+
it 'returns a hash' do
|
81
|
+
options.should be_a Hash
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'includes the zoomlevel' do
|
85
|
+
map.zoomlevel = 11
|
86
|
+
options[:zoomlevel].should == 11
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'includes the url_template' do
|
90
|
+
map.tile_url_template = 'http://mt1.google.com/vt/x=%{x}&y=%{y}&z=%{zoomlevel}'
|
91
|
+
options[:url_template].should == 'http://mt1.google.com/vt/x=%{x}&y=%{y}&z=%{zoomlevel}'
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'does not include nil values' do
|
95
|
+
map.tile_url_template = nil
|
96
|
+
options.should_not have_key(:url_template)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
describe '#tiles' do
|
101
|
+
let(:small_map) { Smappy::StaticMap.new center: [50.9985099, 5.857652], zoomlevel: 15, width: 220, height: 170 }
|
102
|
+
|
103
|
+
it 'contains the tiles that are used by this map' do
|
104
|
+
map.tiles.should have(6).tiles
|
105
|
+
small_map.tiles.should have(4).tiles
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'contains tiles that use the tile_options' do
|
109
|
+
map.stub(:tile_options).and_return({ zoomlevel: 10, url_template: 'http://mt1.google.com/vt/x=%{x}&y=%{y}&z=%{zoomlevel}' })
|
110
|
+
map.tiles.all? do |tile|
|
111
|
+
tile.zoomlevel.should == 10
|
112
|
+
tile.url_template.should == 'http://mt1.google.com/vt/x=%{x}&y=%{y}&z=%{zoomlevel}'
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
describe '#to_image' do
|
118
|
+
use_vcr_cassette 'StaticMap#to_image'
|
119
|
+
|
120
|
+
let(:map) { Smappy::StaticMap.new(center: [50.9985099, 5.857652], zoomlevel: 15) }
|
121
|
+
|
122
|
+
it 'returns an image of the specified size' do
|
123
|
+
img = map.to_image
|
124
|
+
[img.columns, img.rows].should == [500, 350]
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Smappy::Tile do
|
4
|
+
let(:tile) { Smappy::Tile.new }
|
5
|
+
|
6
|
+
describe '#initialize' do
|
7
|
+
it 'sets a default zoomlevel' do
|
8
|
+
tile.zoomlevel.should == 0
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'sets the zoomlevel' do
|
12
|
+
Smappy::Tile.new(zoomlevel: 1).zoomlevel.should == 1
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'sets a default x-coordinate' do
|
16
|
+
tile.x.should == 0
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'sets the x-coordinate' do
|
20
|
+
Smappy::Tile.new(x: 1).x.should == 1
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'sets a default y-coordinate' do
|
24
|
+
tile.y.should == 0
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'sets the y-coordinate' do
|
28
|
+
Smappy::Tile.new(y: 1).y.should == 1
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'sets a default url_template' do
|
32
|
+
tile.url_template.should == 'http://tile.openstreetmap.org/%{zoomlevel}/%{x}/%{y}.png'
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'sets the url_template' do
|
36
|
+
tile = Smappy::Tile.new(url_template: 'http://c.tah.openstreetmap.org/Tiles/tile/%{zoomlevel}/%{x}/%{y}.png')
|
37
|
+
tile.url_template.should == 'http://c.tah.openstreetmap.org/Tiles/tile/%{zoomlevel}/%{x}/%{y}.png'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe '#position_on_map' do
|
42
|
+
let(:map) { Smappy::StaticMap.new center: [50.9985099, 5.857652], zoomlevel: 15 }
|
43
|
+
|
44
|
+
it 'returns the coordinates of the tile on the map' do
|
45
|
+
tile = Smappy::Tile.new x: 16917, y: 10970, zoomlevel: 15
|
46
|
+
tile.position_on_map(map).should == [205, 123]
|
47
|
+
|
48
|
+
tile = Smappy::Tile.new x: 16918, y: 10970, zoomlevel: 15
|
49
|
+
tile.position_on_map(map).should == [461, 123]
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe '#to_url' do
|
54
|
+
it 'returns the URL to the tile' do
|
55
|
+
tile.to_url.should == "http://tile.openstreetmap.org/0/0/0.png"
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'replaces the zoomlevel in the URL' do
|
59
|
+
tile.stub(:zoomlevel).and_return(1)
|
60
|
+
tile.to_url.should == "http://tile.openstreetmap.org/1/0/0.png"
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'replaces the x-coordinate in the URL' do
|
64
|
+
tile.stub(:x).and_return(1)
|
65
|
+
tile.to_url.should == "http://tile.openstreetmap.org/0/1/0.png"
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'replaces the y-coordinate in the URL' do
|
69
|
+
tile.stub(:y).and_return(1)
|
70
|
+
tile.to_url.should == "http://tile.openstreetmap.org/0/0/1.png"
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'parses the url_template' do
|
74
|
+
tile.url_template = 'http://c.tah.openstreetmap.org/Tiles/tile/%{zoomlevel}/%{x}/%{y}.png'
|
75
|
+
tile.to_url.should == 'http://c.tah.openstreetmap.org/Tiles/tile/0/0/0.png'
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe '#to_image' do
|
80
|
+
use_vcr_cassette 'Tile#to_image'
|
81
|
+
|
82
|
+
it 'returns the image at the url' do
|
83
|
+
img = tile.to_image
|
84
|
+
[img.columns, img.rows].should == [256, 256]
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe '#x' do
|
89
|
+
it 'returns the floored x-coordinate' do
|
90
|
+
Smappy::Tile.new(x: 1.6).x.should == 1
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe '#y' do
|
95
|
+
it 'returns the floored y-coordinate' do
|
96
|
+
Smappy::Tile.new(y: 1.6).y.should == 1
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|