[core] Fix swapped lat/lon in geo.cpp

This commit is contained in:
John Firebaugh
2015-10-19 11:47:26 -07:00
parent 342475efb7
commit 8baa804a44
2 changed files with 23 additions and 23 deletions

View File

@@ -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)

View File

@@ -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);
}
}