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)); }
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)); }
/// <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<String, AttributeValue> item : queryRadiusResult.getItem()) { /// System.out.println("item: " + 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)); }
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)); }