public async Task <ActionResult> QueryRadius(RadiusQuery query)
        {
            if (!ModelState.IsValid)
            {
                return(Json("Bad Request", JsonRequestBehavior.AllowGet));
            }

            var centerPoint = new GeoPoint(query.Lat, query.Lng);
            var radius      = query.RadiusInMeters;

            var attributesToGet = new List <string>
            {
                _config.RangeKeyAttributeName,
                _config.GeoJsonAttributeName,
                "schoolName"
            };

            var radReq = new QueryRadiusRequest(centerPoint, radius);

            radReq.QueryRequest.AttributesToGet = attributesToGet;

            var result = await _geoDataManager.QueryRadiusAsync(radReq);

            var dtos = GetResultsFromQuery(result);


            return(Json(dtos, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 2
0
        public async Task <APIGatewayProxyResponse> FunctionHandler(APIGatewayProxyRequest input, ILambdaContext context)
        {
            context.Logger.LogLine($"Enter to {context.FunctionName}. Params {JsonConvert.SerializeObject(input)}");
            double lat = 1, lng = 1, radius = 2000;
            string latStr = "", lngStr = "", radiusStr = "";

            var success = input.QueryStringParameters?.TryGetValue("lat", out latStr) ?? false;

            if (success)
            {
                lat = Double.Parse(latStr ?? "");
            }

            success = input.QueryStringParameters?.TryGetValue("lng", out lngStr) ?? false;
            if (success)
            {
                lng = Double.Parse(lngStr);
            }

            success = input.QueryStringParameters?.TryGetValue("radius", out radiusStr) ?? false;
            if (success)
            {
                radius = Double.Parse(radiusStr);
            }

            QueryRadiusResult queryResult;
            var centerPoint = new GeoPoint(lat, lng);

            var attributesToGet = new List <string>
            {
                _config.RangeKeyAttributeName,
                _config.GeoJsonAttributeName,
                "imgUrl",
                "imgUrlLarge",
            };

            try
            {
                var radReq = new QueryRadiusRequest(centerPoint, radius);
                radReq.QueryRequest.AttributesToGet = attributesToGet;

                queryResult = await _geoDataManager.QueryRadiusAsync(radReq);
            }
            catch (Exception e)
            {
                throw;
            }

            var result           = GetResultsFromQuery(queryResult);
            var serializedResult = JsonConvert.SerializeObject(result);

            context.Logger.LogLine($"Get dots: ({serializedResult})");


            return(CreateResponse(serializedResult));
        }
Exemplo n.º 3
0
        /// <summary>
        ///     <p>
        ///         Query a circular area constructed by a center point and its radius.
        ///     </p>
        ///     <b>Sample usage:</b>
        ///     <pre>
        ///         GeoPoint centerPoint = new GeoPoint(47.5, -122.3);
        ///         QueryRadiusRequest queryRadiusRequest = new QueryRadiusRequest(centerPoint, 100);
        ///         QueryRadiusResult queryRadiusResult = geoIndexManager.queryRadius(queryRadiusRequest);
        ///         for (Map&lt;String, AttributeValue&gt; item : queryRadiusResult.getItem()) {
        ///         System.out.println(&quot;item: &quot; + item);
        ///         }
        ///     </pre>
        /// </summary>
        /// <param name="queryRadiusRequest">Container for the necessary parameters to execute radius query request.</param>
        /// <returns>Result of radius query request.</returns>
        public async Task <QueryRadiusResult> QueryRadiusAsync(QueryRadiusRequest queryRadiusRequest, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (queryRadiusRequest == null)
            {
                throw new ArgumentNullException("queryRadiusRequest");
            }
            if (queryRadiusRequest.RadiusInMeter <= 0 || queryRadiusRequest.RadiusInMeter > S2LatLng.EarthRadiusMeters)
            {
                throw new ArgumentOutOfRangeException("queryRadiusRequest", "RadiusInMeter needs to be > 0  and <= " + S2LatLng.EarthRadiusMeters);
            }

            var latLngRect = S2Util.GetBoundingLatLngRect(queryRadiusRequest);

            var cellUnion = S2Manager.FindCellIds(latLngRect);

            var ranges = MergeCells(cellUnion);

            var result = await DispatchQueries(ranges, queryRadiusRequest, cancellationToken).ConfigureAwait(false);

            return(new QueryRadiusResult(result));
        }
Exemplo n.º 4
0
        public async Task <ActionResult> radiusQueryAsync(radiusQuery query)
        {
            var centerPoint = new GeoPoint(query.lat, query.lng);
            var radius      = query.miles * 1609.34;

            var attributesToGet = new List <string>
            {
                _config.RangeKeyAttributeName,
                _config.GeoJsonAttributeName
                //     "zipcode",
                //     "Title"
            };

            var radReq = new QueryRadiusRequest(centerPoint, radius);

            radReq.QueryRequest.AttributesToGet = attributesToGet;
            // radReq.QueryRequest.TableName = _config.TableName;
            var result = await _geoDataManager.QueryRadiusAsync(radReq);

            var dtos = GetResultsFromQuery(result);

            return(Json(dtos));
        }