From c0c1028dcf57379db68a87d8d0a1780d9d901fe5 Mon Sep 17 00:00:00 2001 From: Asheem Mamoowala Date: Wed, 10 May 2017 11:16:44 -0700 Subject: [core] Add toDouble Conversion method for correctly parsing Lat Lng coordinates --- platform/android/src/style/android_conversion.hpp | 9 +++++++++ platform/darwin/src/MGLConversion.h | 8 ++++++++ platform/node/src/node_conversion.hpp | 8 ++++++++ platform/qt/src/qt_conversion.hpp | 7 +++++++ 4 files changed, 32 insertions(+) (limited to 'platform') diff --git a/platform/android/src/style/android_conversion.hpp b/platform/android/src/style/android_conversion.hpp index e2b2685928..790c82a1c0 100644 --- a/platform/android/src/style/android_conversion.hpp +++ b/platform/android/src/style/android_conversion.hpp @@ -66,6 +66,15 @@ inline optional toNumber(const mbgl::android::Value& value) { } } +inline optional toDouble(const mbgl::android::Value& value) { + if (value.isNumber()) { + auto num = value.toDouble(); + return num; + } else { + return {}; + } +} + inline optional toString(const mbgl::android::Value& value) { if (value.isString()) { return value.toString(); diff --git a/platform/darwin/src/MGLConversion.h b/platform/darwin/src/MGLConversion.h index d51ebd775c..d6363b28eb 100644 --- a/platform/darwin/src/MGLConversion.h +++ b/platform/darwin/src/MGLConversion.h @@ -104,6 +104,14 @@ inline optional toNumber(const id value) { } } +inline optional toDouble(const id value) { + if (_isNumber(value)) { + return ((NSNumber *)value).doubleValue; + } else { + return {}; + } +} + inline optional toString(const id value) { if (_isString(value)) { return std::string(static_cast([value UTF8String])); diff --git a/platform/node/src/node_conversion.hpp b/platform/node/src/node_conversion.hpp index 22daedef6a..d266745548 100644 --- a/platform/node/src/node_conversion.hpp +++ b/platform/node/src/node_conversion.hpp @@ -82,6 +82,14 @@ inline optional toNumber(v8::Local value) { return value->NumberValue(); } +inline optional toDouble(v8::Local value) { + Nan::HandleScope scope; + if (!value->IsNumber()) { + return {}; + } + return value->NumberValue(); +} + inline optional toString(v8::Local value) { Nan::HandleScope scope; if (!value->IsString()) { diff --git a/platform/qt/src/qt_conversion.hpp b/platform/qt/src/qt_conversion.hpp index 4b93ca7423..40d7e5b928 100644 --- a/platform/qt/src/qt_conversion.hpp +++ b/platform/qt/src/qt_conversion.hpp @@ -83,6 +83,13 @@ inline optional toNumber(const QVariant& value) { return {}; } } +inline optional toDouble(const QVariant& value) { + if (value.type() == QVariant::Int || value.type() == QVariant::Double) { + return value.toDouble(); + } else { + return {}; + } +} inline optional toString(const QVariant& value) { if (value.type() == QVariant::String) { -- cgit v1.2.1