Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more

Navigation [hide] [expand]
Area: Optimizely Search & Navigation
ARCHIVED This content is retired and no longer maintained. See the latest version here.

Geographic distance facets group documents with a GeoLocation type property by distance from a location. Use the GeoDistanceFacetFor method to request and extract search results from geographical distance facets.

Geographic distance facets need ranges into which to group documents. Use the NumericRange class to create the ranges.

Example

Assume you indexed a number of restaurants as an instance of this class:

C#
using EPiServer.Find;

public class Restaurant
{
    public string Name { get; set; }

    public GeoLocation Location { get; set; }
}

Use the GeoDistanceFacetFor method to request the number of restaurants within 1, 5, and 10 kilometers of a location, as shown below.

C#
var sergelsTors = new GeoLocation(59.33265, 18.06468)
var ranges = new List<NumericRange>
  {
    new NumericRange {From = 0, To = 1},
    new NumericRange {From = 0, To = 5},
    new NumericRange {From = 0, To = 10}
  };

result = client.Search<WithCoordinates>()
  .GeoDistanceFacetFor(x => x.Location, sergelsTorg, ranges.ToArray())
  .GetResult();

To extract the facet from the results variable, use the GeoDistanceFor method (same name as the method used to retrieve facets). This returns an instance of the GeoDistanceFacet class, which contains an instance of the GeoDistanceRangeResult per requested range.

C#
facet = result.GeoDistanceFacetFor(x => x.Location);

foreach (var range in facet)
{
  Console.WriteLine(
    "There are " + range.TotalCount 
  + " restaurants within " + range.To 
  + " of Sergels Torg");
}

Last updated: Apr 20, 2015