mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-11 09:41:40 -05:00
Get 20 places results and dont round coordinates
This commit is contained in:
parent
52fd54e39f
commit
d78482f1bf
3 changed files with 11 additions and 12 deletions
|
|
@ -909,6 +909,7 @@ export class VisitsManager {
|
||||||
<span class="text-sm mb-1 ${statusColorClass} font-semibold">
|
<span class="text-sm mb-1 ${statusColorClass} font-semibold">
|
||||||
status: ${visit.status.charAt(0).toUpperCase() + visit.status.slice(1)}
|
status: ${visit.status.charAt(0).toUpperCase() + visit.status.slice(1)}
|
||||||
</span>
|
</span>
|
||||||
|
<span>${visit.place.latitude}, ${visit.place.longitude}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<form class="visit-name-form" data-visit-id="${visit.id}">
|
<form class="visit-name-form" data-visit-id="${visit.id}">
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ class ReverseGeocoding::Places::FetchData
|
||||||
limit: 10,
|
limit: 10,
|
||||||
distance_sort: true,
|
distance_sort: true,
|
||||||
radius: 1,
|
radius: 1,
|
||||||
units: ::DISTANCE_UNIT
|
units: ::DISTANCE_UNIT,
|
||||||
)
|
)
|
||||||
|
|
||||||
data.reject do |place|
|
data.reject do |place|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ module Visits
|
||||||
class PlaceFinder
|
class PlaceFinder
|
||||||
attr_reader :user
|
attr_reader :user
|
||||||
|
|
||||||
SEARCH_RADIUS = 500 # meters
|
SEARCH_RADIUS = 100 # meters
|
||||||
SIMILARITY_RADIUS = 50 # meters
|
SIMILARITY_RADIUS = 50 # meters
|
||||||
|
|
||||||
def initialize(user)
|
def initialize(user)
|
||||||
|
|
@ -13,8 +13,8 @@ module Visits
|
||||||
end
|
end
|
||||||
|
|
||||||
def find_or_create_place(visit_data)
|
def find_or_create_place(visit_data)
|
||||||
lat = visit_data[:center_lat].round(5)
|
lat = visit_data[:center_lat]
|
||||||
lon = visit_data[:center_lon].round(5)
|
lon = visit_data[:center_lon]
|
||||||
|
|
||||||
# First check if there's an existing place
|
# First check if there's an existing place
|
||||||
existing_place = find_existing_place(lat, lon, visit_data[:suggested_name])
|
existing_place = find_existing_place(lat, lon, visit_data[:suggested_name])
|
||||||
|
|
@ -23,7 +23,7 @@ module Visits
|
||||||
if existing_place
|
if existing_place
|
||||||
return {
|
return {
|
||||||
main_place: existing_place,
|
main_place: existing_place,
|
||||||
suggested_places: find_suggested_places(lat, lon, existing_place.id)
|
suggested_places: find_suggested_places(lat, lon)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -60,8 +60,8 @@ module Visits
|
||||||
|
|
||||||
# Step 2: Collect potential places from all sources
|
# Step 2: Collect potential places from all sources
|
||||||
def collect_potential_places(visit_data)
|
def collect_potential_places(visit_data)
|
||||||
lat = visit_data[:center_lat].round(5)
|
lat = visit_data[:center_lat]
|
||||||
lon = visit_data[:center_lon].round(5)
|
lon = visit_data[:center_lon]
|
||||||
|
|
||||||
# Get places from points' geodata
|
# Get places from points' geodata
|
||||||
places_from_points = extract_places_from_points(visit_data[:points], lat, lon)
|
places_from_points = extract_places_from_points(visit_data[:points], lat, lon)
|
||||||
|
|
@ -143,7 +143,7 @@ module Visits
|
||||||
# Step 5: Fetch places from API
|
# Step 5: Fetch places from API
|
||||||
def fetch_places_from_api(lat, lon)
|
def fetch_places_from_api(lat, lon)
|
||||||
# Get broader search results from Geocoder
|
# Get broader search results from Geocoder
|
||||||
geocoder_results = Geocoder.search([lat, lon], radius: (SEARCH_RADIUS / 1000.0), units: :km)
|
geocoder_results = Geocoder.search([lat, lon], units: :km, limit: 20, distance_sort: true)
|
||||||
return [] if geocoder_results.blank?
|
return [] if geocoder_results.blank?
|
||||||
|
|
||||||
places = []
|
places = []
|
||||||
|
|
@ -221,10 +221,8 @@ module Visits
|
||||||
end
|
end
|
||||||
|
|
||||||
# Step 9: Find suggested places
|
# Step 9: Find suggested places
|
||||||
def find_suggested_places(lat, lon, exclude_id = nil)
|
def find_suggested_places(lat, lon)
|
||||||
query = Place.near([lat, lon], SEARCH_RADIUS, :m).with_distance([lat, lon], :m)
|
Place.near([lat, lon], SEARCH_RADIUS, :m).with_distance([lat, lon], :m)
|
||||||
query = query.where.not(id: exclude_id) if exclude_id
|
|
||||||
query.limit(5)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Helper methods
|
# Helper methods
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue