diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/mbgl/style/conversion.hpp | 1 | ||||
-rw-r--r-- | include/mbgl/style/conversion/coordinate.hpp | 10 |
2 files changed, 6 insertions, 5 deletions
diff --git a/include/mbgl/style/conversion.hpp b/include/mbgl/style/conversion.hpp index d6fb3a6dd0..27504a89b1 100644 --- a/include/mbgl/style/conversion.hpp +++ b/include/mbgl/style/conversion.hpp @@ -46,6 +46,7 @@ namespace conversion { * `toBool(v)` -- returns `optional<bool>`, absence indicating `v` is not a JSON boolean * `toNumber(v)` -- returns `optional<float>`, absence indicating `v` is not a JSON number + * `toDouble(v)` -- returns `optional<double>`, absence indicating `v` is not a JSON number * `toString(v)` -- returns `optional<std::string>`, absence indicating `v` is not a JSON string * `toValue(v)` -- returns `optional<mbgl::Value>`, a variant type, for generic conversion, absence indicating `v` is not a boolean, number, or string. Numbers should be converted to diff --git a/include/mbgl/style/conversion/coordinate.hpp b/include/mbgl/style/conversion/coordinate.hpp index 0adbb9a7ee..736f5e94a2 100644 --- a/include/mbgl/style/conversion/coordinate.hpp +++ b/include/mbgl/style/conversion/coordinate.hpp @@ -8,17 +8,17 @@ namespace style { namespace conversion { template<> -struct Converter<std::unique_ptr<LatLng>> { +struct Converter<LatLng> { public: template <class V> - optional<std::unique_ptr<LatLng>> operator() (const V& value, Error& error) const { + optional<LatLng> operator() (const V& value, Error& error) const { if (!isArray(value) || arrayLength(value) < 2 ) { error = { "coordinate array must contain numeric longtitude and latitude values" }; return {}; } //Style spec uses GeoJSON convention for specifying coordinates - optional<float> latitude = toNumber(arrayMember(value, 1)); - optional<float> longitude = toNumber(arrayMember(value, 0)); + optional<double> latitude = toDouble(arrayMember(value, 1)); + optional<double> longitude = toDouble(arrayMember(value, 0)); if (!latitude || !longitude) { error = { "coordinate array must contain numeric longtitude and latitude values" }; @@ -28,7 +28,7 @@ public: error = { "coordinate latitude must be between -90 and 90" }; return {}; } - return { std::make_unique<LatLng>(*latitude, *longitude) }; + return LatLng(*latitude, *longitude); } }; |