Merge remote-tracking branch 'upstream/pull/3016'

This commit is contained in:
Tom Hughes
2020-12-23 15:24:10 +00:00
2 changed files with 20 additions and 0 deletions

View File

@ -371,12 +371,17 @@ module OSM
end end
# and these two will give you the right points on your image. all the constants can be reduced to speed things up. FIXME # and these two will give you the right points on your image. all the constants can be reduced to speed things up. FIXME
# If the bbox has no extent, return the centre of the image to avoid dividing by zero.
def y(lat) def y(lat)
return @height / 2 if (@by - @ty).zero?
@height - ((ysheet(lat) - @ty) / (@by - @ty) * @height) @height - ((ysheet(lat) - @ty) / (@by - @ty) * @height)
end end
def x(lon) def x(lon)
return @width / 2 if (@bx - @tx).zero?
((xsheet(lon) - @tx) / (@bx - @tx) * @width) ((xsheet(lon) - @tx) / (@bx - @tx) * @width)
end end
end end

15
test/lib/osm_test.rb Normal file
View File

@ -0,0 +1,15 @@
require "test_helper"
class OsmTest < ActiveSupport::TestCase
def test_mercator
proj = OSM::Mercator.new(0, 0, 1, 1, 100, 200)
assert_in_delta(50, proj.x(0.5), 0.01)
assert_in_delta(100, proj.y(0.5), 0.01)
end
def test_mercator_collapsed_bbox
proj = OSM::Mercator.new(0, 0, 0, 0, 100, 200)
assert_in_delta(50, proj.x(0), 0.01)
assert_in_delta(100, proj.y(0), 0.01)
end
end