[core] Fix swapped lat/lon in geo.cpp
This commit is contained in:
@@ -6,9 +6,9 @@
|
||||
namespace mbgl {
|
||||
|
||||
LatLng::LatLng(const TileID& id) {
|
||||
latitude = id.x / std::pow(2.0, id.z) * 360.0 - 180;
|
||||
longitude = id.x / std::pow(2.0, id.z) * 360.0 - 180;
|
||||
const double n = M_PI - 2.0 * M_PI * id.y / std::pow(2.0, id.z);
|
||||
longitude = 180.0 / M_PI * std::atan(0.5 * (std::exp(n) - std::exp(-n)));
|
||||
latitude = 180.0 / M_PI * std::atan(0.5 * (std::exp(n) - std::exp(-n)));
|
||||
}
|
||||
|
||||
LatLngBounds::LatLngBounds(const TileID& id)
|
||||
|
||||
@@ -8,20 +8,20 @@ using namespace mbgl;
|
||||
TEST(Geo, LatLngFromTileID) {
|
||||
for (int i = 0; i < 20; i++) {
|
||||
const LatLng ll{ TileID(i, 0, 0, 0) };
|
||||
ASSERT_DOUBLE_EQ(-180, ll.latitude);
|
||||
ASSERT_DOUBLE_EQ(85.051128779806604, ll.longitude);
|
||||
ASSERT_DOUBLE_EQ(-180, ll.longitude);
|
||||
ASSERT_DOUBLE_EQ(85.051128779806604, ll.latitude);
|
||||
}
|
||||
|
||||
{
|
||||
const LatLng ll{ TileID(0, 1, 0, 0) };
|
||||
ASSERT_DOUBLE_EQ(180, ll.latitude);
|
||||
ASSERT_DOUBLE_EQ(85.051128779806604, ll.longitude);
|
||||
ASSERT_DOUBLE_EQ(180, ll.longitude);
|
||||
ASSERT_DOUBLE_EQ(85.051128779806604, ll.latitude);
|
||||
}
|
||||
|
||||
{
|
||||
const LatLng ll{ TileID(0, -1, 0, 0) };
|
||||
ASSERT_DOUBLE_EQ(-540, ll.latitude);
|
||||
ASSERT_DOUBLE_EQ(85.051128779806604, ll.longitude);
|
||||
ASSERT_DOUBLE_EQ(-540, ll.longitude);
|
||||
ASSERT_DOUBLE_EQ(85.051128779806604, ll.latitude);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,33 +29,33 @@ TEST(Geo, LatLngFromTileID) {
|
||||
TEST(Geo, LatLngBoundsFromTileID) {
|
||||
{
|
||||
const LatLngBounds bounds{ TileID(0, 0, 0, 0) };
|
||||
ASSERT_DOUBLE_EQ(-180, bounds.sw.latitude);
|
||||
ASSERT_DOUBLE_EQ(-85.051128779806604, bounds.sw.longitude);
|
||||
ASSERT_DOUBLE_EQ(180, bounds.ne.latitude);
|
||||
ASSERT_DOUBLE_EQ(85.051128779806604, bounds.ne.longitude);
|
||||
ASSERT_DOUBLE_EQ(-180, bounds.sw.longitude);
|
||||
ASSERT_DOUBLE_EQ(-85.051128779806604, bounds.sw.latitude);
|
||||
ASSERT_DOUBLE_EQ(180, bounds.ne.longitude);
|
||||
ASSERT_DOUBLE_EQ(85.051128779806604, bounds.ne.latitude);
|
||||
}
|
||||
|
||||
{
|
||||
const LatLngBounds bounds{ TileID(1, 0, 1, 0) };
|
||||
ASSERT_DOUBLE_EQ(-180, bounds.sw.latitude);
|
||||
ASSERT_DOUBLE_EQ(-85.051128779806604, bounds.sw.longitude);
|
||||
ASSERT_DOUBLE_EQ(0, bounds.ne.latitude);
|
||||
ASSERT_DOUBLE_EQ(-180, bounds.sw.longitude);
|
||||
ASSERT_DOUBLE_EQ(-85.051128779806604, bounds.sw.latitude);
|
||||
ASSERT_DOUBLE_EQ(0, bounds.ne.longitude);
|
||||
ASSERT_DOUBLE_EQ(0, bounds.ne.latitude);
|
||||
}
|
||||
|
||||
{
|
||||
const LatLngBounds bounds{ TileID(1, 1, 1, 0) };
|
||||
ASSERT_DOUBLE_EQ(0, bounds.sw.latitude);
|
||||
ASSERT_DOUBLE_EQ(-85.051128779806604, bounds.sw.longitude);
|
||||
ASSERT_DOUBLE_EQ(180, bounds.ne.latitude);
|
||||
ASSERT_DOUBLE_EQ(0, bounds.ne.longitude);
|
||||
ASSERT_DOUBLE_EQ(0, bounds.sw.longitude);
|
||||
ASSERT_DOUBLE_EQ(-85.051128779806604, bounds.sw.latitude);
|
||||
ASSERT_DOUBLE_EQ(180, bounds.ne.longitude);
|
||||
ASSERT_DOUBLE_EQ(0, bounds.ne.latitude);
|
||||
}
|
||||
|
||||
{
|
||||
const LatLngBounds bounds{ TileID(1, 0, 0, 0) };
|
||||
ASSERT_DOUBLE_EQ(-180, bounds.sw.latitude);
|
||||
ASSERT_DOUBLE_EQ(0, bounds.sw.longitude);
|
||||
ASSERT_DOUBLE_EQ(0, bounds.ne.latitude);
|
||||
ASSERT_DOUBLE_EQ(85.051128779806604, bounds.ne.longitude);
|
||||
ASSERT_DOUBLE_EQ(-180, bounds.sw.longitude);
|
||||
ASSERT_DOUBLE_EQ(0, bounds.sw.latitude);
|
||||
ASSERT_DOUBLE_EQ(0, bounds.ne.longitude);
|
||||
ASSERT_DOUBLE_EQ(85.051128779806604, bounds.ne.latitude);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user