Skip to content

Commit f062abe

Browse files
authored
Update interface.rs
1 parent 532816c commit f062abe

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

rust/src/interface.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -272,23 +272,23 @@ pub fn recover_nearest(_code: &str, ref_pt: Point<f64>) -> Result<String, String
272272

273273
let code_area = decode(code.as_str()).unwrap();
274274

275-
let area_range = compute_latitude_precision(prefix_len);
276-
let area_edge = area_range / 2f64;
275+
let resolution = compute_latitude_precision(prefix_len);
276+
let half_res = area_range / 2f64;
277277

278278
let mut latitude = code_area.center.lat();
279279
let mut longitude = code_area.center.lng();
280280

281-
let latitude_diff = latitude - clip_latitude(ref_pt.lat());
282-
if latitude_diff > area_edge {
283-
latitude -= area_range;
284-
} else if latitude_diff < -area_edge {
285-
latitude += area_range;
281+
let ref_lat = clip_latitude(ref_pt.lat());
282+
let ref_lng = normalize_longitude(ref_pt.lng());
283+
if ref_lat + half_res < latitude && latitude - resolution >= -LATITUDE_MAX {
284+
latitude -= resolution;
285+
} else if ref_lat - half_res > latitude && latitude + resolution <= LATITUDE_MAX {
286+
latitude += resolution;
286287
}
287-
let longitude_diff = longitude - normalize_longitude(ref_pt.lng());
288-
if longitude_diff > area_edge {
289-
longitude -= area_range;
290-
} else if longitude_diff < -area_edge {
291-
longitude += area_range;
288+
if ref_lng + half_res < longitude {
289+
longitude -= resolution;
290+
} else if ref_lng - half_res > longitude {
291+
longitude += resolution;
292292
}
293293
Ok(encode(Point::new(longitude, latitude), code_area.code_length))
294294
}

0 commit comments

Comments
 (0)