diff options
author | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2016-10-02 17:47:29 +0300 |
---|---|---|
committer | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2016-10-11 19:36:21 +0300 |
commit | 7b907b6d1ceddd9e10263316964aea101bd743b8 (patch) | |
tree | 78df07b591438e70eceb0d7d1549f6a0edfc280a /src/mbgl/style/source_impl.cpp | |
parent | 94a014cde3cf9a70808092d8402686c3f6d2f515 (diff) | |
download | qtlocation-mapboxgl-7b907b6d1ceddd9e10263316964aea101bd743b8.tar.gz |
[core] Use TilePoint in Source::Impl::queryRenderedFeatures
Diffstat (limited to 'src/mbgl/style/source_impl.cpp')
-rw-r--r-- | src/mbgl/style/source_impl.cpp | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/src/mbgl/style/source_impl.cpp b/src/mbgl/style/source_impl.cpp index 58ae3d9f91..c53174bea3 100644 --- a/src/mbgl/style/source_impl.cpp +++ b/src/mbgl/style/source_impl.cpp @@ -181,18 +181,6 @@ void Source::Impl::reloadTiles() { } } -static Point<int16_t> coordinateToTilePoint(const UnwrappedTileID& tileID, const Point<double>& p) { - auto zoomedCoord = TileCoordinate { p, 0 }.zoomTo(tileID.canonical.z); - return { - int16_t(util::clamp<int64_t>((zoomedCoord.p.x - tileID.canonical.x - tileID.wrap * std::pow(2, tileID.canonical.z)) * util::EXTENT, - std::numeric_limits<int16_t>::min(), - std::numeric_limits<int16_t>::max())), - int16_t(util::clamp<int64_t>((zoomedCoord.p.y - tileID.canonical.y) * util::EXTENT, - std::numeric_limits<int16_t>::min(), - std::numeric_limits<int16_t>::max())) - }; -} - std::unordered_map<std::string, std::vector<Feature>> Source::Impl::queryRenderedFeatures(const QueryParameters& parameters) const { std::unordered_map<std::string, std::vector<Feature>> result; if (renderTiles.empty()) { @@ -215,16 +203,20 @@ std::unordered_map<std::string, std::vector<Feature>> Source::Impl::queryRendere for (const auto& tilePtr : renderTiles) { const RenderTile& tile = tilePtr.second; - Point<int16_t> tileSpaceBoundsMin = coordinateToTilePoint(tile.id, box.min); - Point<int16_t> tileSpaceBoundsMax = coordinateToTilePoint(tile.id, box.max); + GeometryCoordinate tileSpaceBoundsMin = TileCoordinate::toGeometryCoordinate(tile.id, box.min); + if (tileSpaceBoundsMin.x >= util::EXTENT || tileSpaceBoundsMin.y >= util::EXTENT) { + continue; + } - if (tileSpaceBoundsMin.x >= util::EXTENT || tileSpaceBoundsMin.y >= util::EXTENT || - tileSpaceBoundsMax.x < 0 || tileSpaceBoundsMax.y < 0) continue; + GeometryCoordinate tileSpaceBoundsMax = TileCoordinate::toGeometryCoordinate(tile.id, box.max); + if (tileSpaceBoundsMax.x < 0 || tileSpaceBoundsMax.y < 0) { + continue; + } GeometryCoordinates tileSpaceQueryGeometry; - + tileSpaceQueryGeometry.reserve(queryGeometry.size()); for (const auto& c : queryGeometry) { - tileSpaceQueryGeometry.push_back(coordinateToTilePoint(tile.id, c)); + tileSpaceQueryGeometry.push_back(TileCoordinate::toGeometryCoordinate(tile.id, c)); } tile.tile.queryRenderedFeatures(result, |