#include #include namespace mbgl { namespace style { namespace conversion { optional Converter::operator()(const Convertible& value, Error& error) const { GeoJSONOptions options; const auto minzoomValue = objectMember(value, "minzoom"); if (minzoomValue) { if (toNumber(*minzoomValue)) { options.minzoom = static_cast(*toNumber(*minzoomValue)); } else { error.message = "GeoJSON source minzoom value must be a number"; return nullopt; } } const auto maxzoomValue = objectMember(value, "maxzoom"); if (maxzoomValue) { if (toNumber(*maxzoomValue)) { options.maxzoom = static_cast(*toNumber(*maxzoomValue)); } else { error.message = "GeoJSON source maxzoom value must be a number"; return nullopt; } } const auto bufferValue = objectMember(value, "buffer"); if (bufferValue) { if (toNumber(*bufferValue)) { options.buffer = static_cast(*toNumber(*bufferValue)); } else { error.message = "GeoJSON source buffer value must be a number"; return nullopt; } } const auto toleranceValue = objectMember(value, "tolerance"); if (toleranceValue) { if (toNumber(*toleranceValue)) { options.tolerance = static_cast(*toNumber(*toleranceValue)); } else { error.message = "GeoJSON source tolerance value must be a number"; return nullopt; } } const auto clusterValue = objectMember(value, "cluster"); if (clusterValue) { if (toBool(*clusterValue)) { options.cluster = *toBool(*clusterValue); } else { error.message = "GeoJSON source cluster value must be a boolean"; return nullopt; } } const auto clusterMaxZoomValue = objectMember(value, "clusterMaxZoom"); if (clusterMaxZoomValue) { if (toNumber(*clusterMaxZoomValue)) { options.clusterMaxZoom = static_cast(*toNumber(*clusterMaxZoomValue)); } else { error.message = "GeoJSON source clusterMaxZoom value must be a number"; return nullopt; } } const auto clusterRadiusValue = objectMember(value, "clusterRadius"); if (clusterRadiusValue) { if (toNumber(*clusterRadiusValue)) { options.clusterRadius = static_cast(*toNumber(*clusterRadiusValue)); } else { error.message = "GeoJSON source clusterRadius value must be a number"; return nullopt; } } const auto lineMetricsValue = objectMember(value, "lineMetrics"); if (lineMetricsValue) { if (toBool(*lineMetricsValue)) { options.lineMetrics = *toBool(*lineMetricsValue); } else { error = { "GeoJSON source lineMetrics value must be a boolean" }; return nullopt; } } return { options }; } } // namespace conversion } // namespace style } // namespace mbgl