Ejemplo n.º 1
0
        /// <summary>
        /// Deserializes the query options from a <see cref="GeoQueryMsg" /> if any options
        /// are present.
        /// </summary>
        /// <param name="queryMsg">The source message.</param>
        /// <returns>The deserialized options or <c>null</c> if none are present.</returns>
        internal static GeoQueryOptions Load(GeoQueryMsg queryMsg)
        {
            string          queryType = queryMsg._Get("QueryType", (string)null);
            GeoQueryOptions options;

            switch (queryType)
            {
            case EntityQueryKey:

                options = new GeoEntityQueryOptions();
                break;

            case HeatmapQueryKey:

                options = new GeoHeatmapQueryOptions();
                break;

            default:

                return(null);
            }

            options.LoadFrom(queryMsg);
            return(options);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Generates a <see cref="GeoQueryMsg" /> from the instance.
        /// </summary>
        /// <returns>The query message.</returns>
        internal GeoQueryMsg ToMessage()
        {
            var queryMsg = new GeoQueryMsg();
            var options  = Options;

            if (options == null)
            {
                options = new GeoEntityQueryOptions();
            }

            options.Save(queryMsg);

            if (EntityFilters != null)
            {
                for (int i = 0; i < EntityFilters.Length; i++)
                {
                    queryMsg[string.Format("EntityFilter[{0}]", i)] = EntityFilters[i];
                }
            }

            if (GroupFilters != null)
            {
                for (int i = 0; i < GroupFilters.Length; i++)
                {
                    queryMsg[string.Format("GroupFilter[{0}]", i)] = GroupFilters[i];
                }
            }

            if (Region != null)
            {
                queryMsg["Region"] = Region.ToString();
            }

            if (MinTimeUtc.HasValue)
            {
                queryMsg._Set("MinTimeUtc", MinTimeUtc.Value);
            }

            if (MaxTimeUtc.HasValue)
            {
                queryMsg._Set("MaxTimeUtc", MaxTimeUtc.Value);
            }

            return(queryMsg);
        }