private void handleGeoCircle(Query query, String ll, Location target) {
        double ewCoord;
        double nsCoord;
        try {
            DegreesParser parsed = new DegreesParser(ll);
            ewCoord = parsed.longitude;
            nsCoord = parsed.latitude;
        } catch (IllegalArgumentException e) {
            throw new IllegalArgumentException("Unable to parse lat/long string '" +ll + "'", e);
        }

        String radius = query.properties().getString(posRadius);
        double radiusdegrees;
        if (radius == null) {
            radiusdegrees = 50.0 * km2deg;
        } else if (radius.endsWith("km")) {
            double radiuskm = Double.parseDouble(radius.substring(0, radius.length()-2));
            radiusdegrees = radiuskm * km2deg;
        } else if (radius.endsWith("m")) {
            double radiusm = Double.parseDouble(radius.substring(0, radius.length()-1));
            radiusdegrees = radiusm * km2deg / 1000.0;
        } else if (radius.endsWith("mi")) {
            double radiusmiles = Double.parseDouble(radius.substring(0, radius.length()-2));
            radiusdegrees = radiusmiles * mi2deg;
        } else {
            radiusdegrees = Integer.parseInt(radius) * 0.000001;
        }
        target.setGeoCircle(nsCoord, ewCoord, radiusdegrees);
    }
A searcher converting human-readable position parameters
into internal format.
<br>
Reads the following query properties:
<ul>
 <li> pos.ll (geographical latitude and longitude)
 <li> pos.xy (alternate to pos.ll - direct x and y in internal units)
 <li> pos.radius (distance in one of:
       internal units (no suffix), meter (m), kilometer (km) or miles (mi)
</ul>

@author arnej27959
container-search/src/main/java/com/yahoo/prelude/searcher/PosSearcher.java