*/
bool location_bounds_contains_coordinates(location_bounds_h bounds, location_coords_s coords);
+/**
+ * @brief Checks whether the edges of the bounds contain the specified coordinates within tolerance.
+ * @param[in] bounds The location bounds handle
+ * @param[in] coords The coordinates
+ * @param[in] tolerance tolerance in metres
+ * @return @c true if the edges of the bounds contain the specified coordinates within tolerance,
+ * otherwise else @c false
+ * @exception #LOCATION_BOUNDS_ERROR_NONE Successful
+ * @exception #LOCATION_BOUNDS_ERROR_OUT_OF_MEMORY Out of memory
+ * @exception #LOCATION_BOUNDS_ERROR_INVALID_PARAMETER Invalid parameter
+ * @exception #LOCATION_BOUNDS_ERROR_NOT_SUPPORTED Not supported
+ * @see location_bounds_create_rect()
+ * @see location_bounds_create_circle()
+ * @see location_bounds_create_polygon()
+ */
+bool location_bounds_contains_coordinates_on_edge(location_bounds_h bounds, location_coords_s coords, double tolerance);
+
/**
* @brief Gets the type of location bounds.
return result;
}
+EXPORT_API bool location_bounds_contains_coordinates_on_edge(location_bounds_h bounds, location_coords_s coords, double tolerance)
+{
+ if (__is_location_supported() == LOCATIONS_ERROR_NOT_SUPPORTED) {
+ //LCOV_EXCL_START
+ set_last_result(LOCATIONS_ERROR_NOT_SUPPORTED);
+ return FALSE;
+ //LCOV_EXCL_STOP
+ }
+
+ if (!bounds) {
+ set_last_result(LOCATION_BOUNDS_ERROR_INVALID_PARAMETER);
+ return FALSE;
+ }
+
+ if (coords.latitude < -90 || coords.latitude > 90 || coords.longitude < -180 || coords.longitude > 180) {
+ set_last_result(LOCATION_BOUNDS_ERROR_INVALID_PARAMETER);
+ return FALSE;
+ }
+
+ LocationPosition *pos = location_position_new(0, coords.latitude, coords.longitude, 0, LOCATION_STATUS_2D_FIX);
+ if (pos == NULL) {
+ //LCOV_EXCL_START
+ LOCATIONS_LOGE("LOCATION_BOUNDS_ERROR_OUT_OF_MEMORY(0x%08x) : fail to location_position_new", LOCATION_BOUNDS_ERROR_OUT_OF_MEMORY);
+ set_last_result(LOCATION_BOUNDS_ERROR_OUT_OF_MEMORY);
+ return FALSE;
+ //LCOV_EXCL_STOP
+ }
+ location_bounds_s *handle = (location_bounds_s *) bounds;
+ gboolean on_path = location_boundary_on_path(handle->boundary, pos, tolerance);
+ location_position_free(pos);
+ bool result = on_path ? TRUE : FALSE;
+
+ set_last_result(LOCATION_BOUNDS_ERROR_NONE);
+ return result;
+}
+
EXPORT_API int location_bounds_get_type(location_bounds_h bounds, location_bounds_type_e *type)
{
LOCATIONS_NOT_SUPPORTED_CHECK(__is_location_supported());