Laravel - umawianie wizyt, wyszukiwanie najbliższych terminów

0

Cześć. Chcę zrobić coś w stylu umawiania wizyt pomiędzy zleceniobiorcą a zleceniodawcą. Zasada działania jest mniej więcej taka:

  • zleceniobiorcy w swoim panelu mają zapisane dni w których są dostępni i ogólną godzinę (np. 8-16), miejscowość, to co oferują itd
  • zleceniodawca wybiera usługę i miejscowość
  • system znajduje dla niego zleceniobiorcę

Ogólnie jest to dość jasne, nie wiem tylko jak stworzyć zapytanie które znajdzie zleceniobiorców w okolicy zleceniodawcy a później wyświetlić terminy (data/godzina) powiedzmy na najbliższe 5 dni. Wtedy już jasne, osoba wybiera termin i przechodzi do realizacji zamówienia

0

Mając położenie zleceniobiorcy i zleceniodawcy na mapie, dość prosto jest wyliczyć odległość między nimi. Są do tego odpowiednie reguły matematyczne, a nawet gotowe algorytmy do znalezienia, które biorą pod uwagę krzywiznę ziemi. Trochę trudniej z wyliczeniem realnej drogi biorącej pod uwagę sieć dróg, ale to też do znalezienia / zrobienia.

1
TomRZ napisał(a):

Trochę trudniej z wyliczeniem realnej drogi biorącej pod uwagę sieć dróg, ale to też do znalezienia / zrobienia.

Jak byś chciał iść w tym kierunku, to możesz spróbować https://github.com/graphhopper/graphhopper

1

to trochę strzelanie z armaty do muchy, nie latwiej stworzyc jakaś mapę statyczną relacji kodów pocztowych, podobne liczby zazwyczaj leżą blisko siebie

0

Możesz przerobić mój kod biorący pod uwagę mapy google i sieć dróg :)

Musisz znać adres startu- adres mety- i system wyliczy ci kilometry od punktu A do punktu B po drogach zgonie z mapami google :)

Zapraszam:
https://github.com/miccom1977/distances

0

Mogę, ale po co miałbym to robić? Nie rozumiem. Ja nic nie muszę udowadniać nikomu.

1

Do wyliczania dokładnej odległości drogą, pomiędzy dwoma punktami najlepiej korzystać z wyspecjalizowanych to tego celu API.
Takowe udostępniają np. Google albo MapBox. W obu przypadkach są to usługi płatne a każde odpytanie zajmuje od kilkudziesięciu milisekund do kilku sekund zatem nie są to rozwiązania dla osób, które nie są już ogarniętymi programistami. Jeśli w bazie będziesz miał 1000 firm i będziesz chciał przeliczyć odległości między wybraną z nich a wszystkimi pozostałymi to to się nie uda.

Pomysł z kodami pocztowymi jest bardzo dobry. Owszem wymaga wstępnego przeliczenia i zapisania wyników w bazie ale daje to szanse na sensowne działanie (i w ogóle działanie) serwisu.

Na początek najłatwiej jednak policzyć zwykłą ORTODROMĘ pomiędzy dwoma punktami GPS i pomnożyć przez jakiś współczynnik np. 1,2 albo uzależnić to od regionu i mieć takich współczynników więcej. Da to dość dobre przybliżone wyniki dla większych odległości pomiędzy miastami. Przy małych odległościach niestety pozostaje tylko API. Oczywiście można buforować odległości od centrów miast, województw itp.. itd... ale jak by się za to nie zabierać to nie jest temat banalny.

Wg mnie na terenie Polski wystarczy wyliczanie odległości po GPS i przemnożeniu jej przez odpowiednio dobrany współczynnik. Problemy wystąpią jedynie przy dużych jeziorach, zalewie wiślanym i kilku miejscach gdzie nie ma mostów przez rzeki. Jednak odpowiednio wspierając algorytm odległościami wyliczonymi pomiędzy wspomnianymi kodami pocztowymi dałoby się sporo takich sytuacji uniknąć.
Przynajmniej do wstępnej selekcji wyników. Jak już wybrany zostanie "zwycięzca" wówczas wynik można doprecyzować za pomocą API.

miccom napisał(a):

Możesz przerobić mój kod biorący pod uwagę mapy google i sieć dróg :)
https://github.com/miccom1977/distances

Gdyby tam było jeszcze cokolwiek do przerabiania w temacie, w którym pytanie zadał autor tematu.
Jak łatwo się domyślić odległość zleceniobiorcy ma tu kluczowe znaczenie i polecamy najpierw tych co są najbliżej a nie pierwszego lepszego. Z tego wynika, że przy każdym zapytaniu trzeba będzie wyliczyć wiele odległości a tu napotkamy problemy, o których napisałem wyżej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1