diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2015-12-10 17:46:13 -0800 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2015-12-11 16:23:43 -0800 |
commit | 8d711e9c80f92b165ef3cfff14be132f70039b97 (patch) | |
tree | 0a53b6ba1a3a1e827546d34bc2791916b24043ac | |
parent | c4a01d51ea755089401f767ad258126969615c46 (diff) | |
download | qtlocation-mapboxgl-8d711e9c80f92b165ef3cfff14be132f70039b97.tar.gz |
[test] update test suite to include more comprehensive GeoJSON tests
-rw-r--r-- | package.json | 2 | ||||
-rw-r--r-- | scripts/android/configure.sh | 2 | ||||
-rw-r--r-- | scripts/ios/configure.sh | 2 | ||||
-rw-r--r-- | scripts/linux/configure.sh | 2 | ||||
-rw-r--r-- | scripts/osx/configure.sh | 2 | ||||
-rw-r--r-- | src/mbgl/map/source.cpp | 8 | ||||
-rw-r--r-- | src/mbgl/map/source_info.cpp | 15 | ||||
-rw-r--r-- | src/mbgl/map/source_info.hpp | 1 | ||||
-rw-r--r-- | src/mbgl/style/style_parser.cpp | 13 |
9 files changed, 29 insertions, 18 deletions
diff --git a/package.json b/package.json index 1be4362732..7ebe666fa0 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ ], "devDependencies": { "aws-sdk": "^2.2.21", - "mapbox-gl-test-suite": "mapbox/mapbox-gl-test-suite#6e2b48155ca651b37826942f2ca082be687b7a42", + "mapbox-gl-test-suite": "mapbox/mapbox-gl-test-suite#78bde0077848b4af0efd490d124bde3ea9f56ec9", "node-gyp": "^3.2.1", "request": "^2.67.0", "tape": "^4.2.2" diff --git a/scripts/android/configure.sh b/scripts/android/configure.sh index bc19d546a1..7c5e3e926a 100644 --- a/scripts/android/configure.sh +++ b/scripts/android/configure.sh @@ -8,7 +8,7 @@ LIBUV_VERSION=1.7.5 ZLIB_VERSION=system NUNICODE_VERSION=1.6 LIBZIP_VERSION=0.11.2 -GEOJSONVT_VERSION=3.0.0 +GEOJSONVT_VERSION=3.0.1 VARIANT_VERSION=1.0 RAPIDJSON_VERSION=1.0.2 diff --git a/scripts/ios/configure.sh b/scripts/ios/configure.sh index 06d66c5850..3826d93571 100644 --- a/scripts/ios/configure.sh +++ b/scripts/ios/configure.sh @@ -4,6 +4,6 @@ BOOST_VERSION=1.59.0 SQLITE_VERSION=system LIBUV_VERSION=1.7.5 ZLIB_VERSION=system -GEOJSONVT_VERSION=3.0.0 +GEOJSONVT_VERSION=3.0.1 VARIANT_VERSION=1.0 RAPIDJSON_VERSION=1.0.2 diff --git a/scripts/linux/configure.sh b/scripts/linux/configure.sh index 0f7e6d167e..0da9f8c3cd 100644 --- a/scripts/linux/configure.sh +++ b/scripts/linux/configure.sh @@ -10,7 +10,7 @@ SQLITE_VERSION=3.9.1 LIBUV_VERSION=1.7.5 ZLIB_VERSION=system NUNICODE_VERSION=1.6 -GEOJSONVT_VERSION=3.0.0 +GEOJSONVT_VERSION=3.0.1 VARIANT_VERSION=1.0 RAPIDJSON_VERSION=1.0.2 GTEST_VERSION=1.7.0 diff --git a/scripts/osx/configure.sh b/scripts/osx/configure.sh index d2eee36479..871b09c941 100644 --- a/scripts/osx/configure.sh +++ b/scripts/osx/configure.sh @@ -10,7 +10,7 @@ SQLITE_VERSION=3.9.1 LIBUV_VERSION=1.7.5 ZLIB_VERSION=system NUNICODE_VERSION=1.6 -GEOJSONVT_VERSION=3.0.0 +GEOJSONVT_VERSION=3.0.1 VARIANT_VERSION=1.0 RAPIDJSON_VERSION=1.0.2 GTEST_VERSION=1.7.0 diff --git a/src/mbgl/map/source.cpp b/src/mbgl/map/source.cpp index 28ea69f007..7dd5709c43 100644 --- a/src/mbgl/map/source.cpp +++ b/src/mbgl/map/source.cpp @@ -61,6 +61,7 @@ void Source::load() { return; } + // URL may either be a TileJSON file, or a GeoJSON file. FileSource* fs = util::ThreadContext::getFileSource(); req = fs->request({ Resource::Kind::Source, info.url }, [this](Response res) { if (res.stale) { @@ -86,7 +87,12 @@ void Source::load() { return; } - info.parseTileJSONProperties(d); + if (info.type == SourceType::Vector || info.type == SourceType::Raster) { + info.parseTileJSONProperties(d); + } else if (info.type == SourceType::GeoJSON) { + info.parseGeoJSON(d); + } + loaded = true; emitSourceLoaded(); diff --git a/src/mbgl/map/source_info.cpp b/src/mbgl/map/source_info.cpp index 3a79cb9dff..8f1b42ea93 100644 --- a/src/mbgl/map/source_info.cpp +++ b/src/mbgl/map/source_info.cpp @@ -1,9 +1,11 @@ +#include <mbgl/platform/log.hpp> #include <mbgl/map/source_info.hpp> #include <mbgl/util/mapbox.hpp> #include <mbgl/util/string.hpp> #include <mbgl/util/token.hpp> #include <mapbox/geojsonvt.hpp> +#include <mapbox/geojsonvt/convert.hpp> namespace mbgl { @@ -97,6 +99,19 @@ void SourceInfo::parseTileJSONProperties(const rapidjson::Value& value) { parse(value, bounds, "bounds"); } +void SourceInfo::parseGeoJSON(const rapidjson::Value& value) { + using namespace mapbox::geojsonvt; + + try { + geojsonvt = std::make_unique<GeoJSONVT>(Convert::convert(value, 0)); + } catch (const std::exception& ex) { + Log::Error(Event::ParseStyle, "Failed to parse GeoJSON data: %s", ex.what()); + // Create an empty GeoJSON VT object to make sure we're not infinitely waiting for + // tiles to load. + geojsonvt = std::make_unique<GeoJSONVT>(std::vector<ProjectedFeature>{}); + } +} + std::string SourceInfo::tileURL(const TileID& id, float pixelRatio) const { std::string result = tiles.at(0); result = util::mapbox::normalizeTileURL(result, url, type); diff --git a/src/mbgl/map/source_info.hpp b/src/mbgl/map/source_info.hpp index 5b4e4e2e15..81c79bd823 100644 --- a/src/mbgl/map/source_info.hpp +++ b/src/mbgl/map/source_info.hpp @@ -39,6 +39,7 @@ public: std::unique_ptr<mapbox::geojsonvt::GeoJSONVT> geojsonvt; void parseTileJSONProperties(const rapidjson::Value&); + void parseGeoJSON(const rapidjson::Value&); std::string tileURL(const TileID& id, float pixelRatio) const; }; diff --git a/src/mbgl/style/style_parser.cpp b/src/mbgl/style/style_parser.cpp index dd89b84e69..06f81a8ab2 100644 --- a/src/mbgl/style/style_parser.cpp +++ b/src/mbgl/style/style_parser.cpp @@ -8,9 +8,6 @@ #include <mbgl/platform/log.hpp> -#include <mapbox/geojsonvt.hpp> -#include <mapbox/geojsonvt/convert.hpp> - #include <algorithm> namespace mbgl { @@ -170,15 +167,7 @@ bool StyleParser::parseGeoJSONSource(Source& source, const JSVal& sourceVal) { source.info.url = { dataVal.GetString(), dataVal.GetStringLength() }; } else if (dataVal.IsObject()) { // We need to parse dataVal as a GeoJSON object - using namespace mapbox::geojsonvt; - try { - source.info.geojsonvt = std::make_unique<GeoJSONVT>(Convert::convert(dataVal, 0)); - } catch (const std::exception& ex) { - Log::Error(Event::ParseStyle, "Failed to parse GeoJSON data: %s", ex.what()); - // Create an empty GeoJSON VT object to make sure we're not infinitely waiting for - // tiles to load. - source.info.geojsonvt = std::make_unique<GeoJSONVT>(std::vector<ProjectedFeature>{}); - } + source.info.parseGeoJSON(dataVal); } else { Log::Error(Event::ParseStyle, "GeoJSON data must be a URL or an object"); return false; |