diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-05-11 13:54:05 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2016-05-11 13:54:05 -0700 |
commit | 1a030e7c3347f08329d2787cde37cfa0958baad4 (patch) | |
tree | e9ec309eda3de6edc411824e76df632730d41064 /src/mbgl/tile | |
parent | 5f1144f05a8391cf2c01dc7a67312a27ef32805b (diff) | |
download | qtlocation-mapboxgl-1a030e7c3347f08329d2787cde37cfa0958baad4.tar.gz |
[core] Normalize tile coordinates in VectorTile (#4966)
Previously, vector tile coordinates were being normalized to util::EXTENT in each place they were used, and for annotation and GeoJSON sources that don't require normalization.
Diffstat (limited to 'src/mbgl/tile')
-rw-r--r-- | src/mbgl/tile/geometry_tile.hpp | 3 | ||||
-rw-r--r-- | src/mbgl/tile/vector_tile.cpp | 7 | ||||
-rw-r--r-- | src/mbgl/tile/vector_tile.hpp | 1 |
3 files changed, 2 insertions, 9 deletions
diff --git a/src/mbgl/tile/geometry_tile.hpp b/src/mbgl/tile/geometry_tile.hpp index 923585028c..676c18e4c9 100644 --- a/src/mbgl/tile/geometry_tile.hpp +++ b/src/mbgl/tile/geometry_tile.hpp @@ -34,15 +34,12 @@ using GeometryCollection = std::vector<GeometryCoordinates>; class GeometryTileFeature : private util::noncopyable { public: - static const uint32_t defaultExtent = util::EXTENT; - virtual ~GeometryTileFeature() = default; virtual FeatureType getType() const = 0; virtual optional<Value> getValue(const std::string& key) const = 0; virtual Feature::property_map getProperties() const { return Feature::property_map(); } virtual optional<uint64_t> getID() const { return {}; } virtual GeometryCollection getGeometries() const = 0; - virtual uint32_t getExtent() const { return defaultExtent; } }; class GeometryTileLayer : private util::noncopyable { diff --git a/src/mbgl/tile/vector_tile.cpp b/src/mbgl/tile/vector_tile.cpp index 27edd85324..343224052a 100644 --- a/src/mbgl/tile/vector_tile.cpp +++ b/src/mbgl/tile/vector_tile.cpp @@ -114,6 +114,7 @@ GeometryCollection VectorTileFeature::getGeometries() const { uint32_t length = 0; int32_t x = 0; int32_t y = 0; + const float scale = float(util::EXTENT) / layer.extent; GeometryCollection lines; @@ -139,7 +140,7 @@ GeometryCollection VectorTileFeature::getGeometries() const { line = &lines.back(); } - line->emplace_back(x, y); + line->emplace_back(::round(x * scale), ::round(y * scale)); } else if (cmd == 7) { // closePolygon if (!line->empty()) { @@ -154,10 +155,6 @@ GeometryCollection VectorTileFeature::getGeometries() const { return lines; } -uint32_t VectorTileFeature::getExtent() const { - return layer.extent; -} - VectorTile::VectorTile(std::shared_ptr<const std::string> data_) : data(std::move(data_)) { } diff --git a/src/mbgl/tile/vector_tile.hpp b/src/mbgl/tile/vector_tile.hpp index c0892cd243..d41d4f4f34 100644 --- a/src/mbgl/tile/vector_tile.hpp +++ b/src/mbgl/tile/vector_tile.hpp @@ -25,7 +25,6 @@ public: std::unordered_map<std::string,Value> getProperties() const override; optional<uint64_t> getID() const override; GeometryCollection getGeometries() const override; - uint32_t getExtent() const override; private: const VectorTileLayer& layer; |