Skip to content

Commit fa0826c

Browse files
robhojohan12345
authored andcommitted
Auto: Sort nearby locations by distance in meters
The return value of Distance() differs depending on which version of that's used: Distance( geom1 Geometry , geom2 Geometry ) : Double precision return the distance between geom1 and geom2 (always measured in CRS units). Distance( geom1 Geometry , geom2 Geometry , use_ellipsoid Boolean ) : Double precision return the distance between geom1 and geom2 (measured in meters). Ordering by CRS units causes unexpected item order. Fixes #411
1 parent e69b322 commit fa0826c

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

app/src/main/java/net/vonforst/evmap/storage/ChargeLocationsDao.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ abstract class ChargeLocationsDao {
101101
): List<ChargeLocation>
102102

103103
@SkipQueryVerification
104-
@Query("SELECT * FROM chargelocation WHERE dataSource == :dataSource AND PtDistWithin(coordinates, MakePoint(:lng, :lat, 4326), :radius) AND timeRetrieved > :after AND ROWID IN (SELECT ROWID FROM SpatialIndex WHERE f_table_name = 'ChargeLocation' AND f_geometry_column = 'coordinates' AND search_frame = BuildCircleMbr(:lng, :lat, :radius)) ORDER BY Distance(coordinates, MakePoint(:lng, :lat, 4326))")
104+
@Query("SELECT * FROM chargelocation WHERE dataSource == :dataSource AND PtDistWithin(coordinates, MakePoint(:lng, :lat, 4326), :radius) AND timeRetrieved > :after AND ROWID IN (SELECT ROWID FROM SpatialIndex WHERE f_table_name = 'ChargeLocation' AND f_geometry_column = 'coordinates' AND search_frame = BuildCircleMbr(:lng, :lat, :radius)) ORDER BY Distance(coordinates, MakePoint(:lng, :lat, 4326), 0)")
105105
abstract suspend fun getChargeLocationsRadius(
106106
lat: Double,
107107
lng: Double,
@@ -583,7 +583,7 @@ class ChargeLocationsRepository(
583583
val region =
584584
radiusSpatialIndexQuery(location, radius)
585585
val order =
586-
"ORDER BY Distance(coordinates, MakePoint(${location.longitude}, ${location.latitude}, 4326))"
586+
"ORDER BY Distance(coordinates, MakePoint(${location.longitude}, ${location.latitude}, 4326), 0)"
587587
return queryWithFilters(api, filters, region, order)
588588
}
589589

0 commit comments

Comments
 (0)