18+ nsfw

Zawiera treści 18+

Ta treść została oznaczona jako materiał kontrowersyjny lub dla dorosłych.

#prograowanie #mapy #sql #mysql #bazydanych

Męczę się z pewnym problemem od jakiegoś czasu i mam chyba blokadę. Dlatego zwracam się do Was z prośbą o pomoc.

Mianowicie chcę wyciągnąć z bazy obszary leżące w danym obszarze. Obszary zdefiniowane są za pomocą dwóch lokalizacji wyrażonych za pomocą koordynatów: south-west i north-east. Zapytanie też jest złożone z wartości south-west i north-east.

W załączonej grafice opisane jest mniej więcej to o co mi chodzi. Zapytanie
siemanko - #prograowanie #mapy #sql #mysql #bazydanych

Męczę się z pewnym probleme...

źródło: comment_J8n6dGoNeehUy6OSsF4YPgvhal4NwYMV.jpg

Pobierz
@siemanko:
łopatologicznie sklejając wyszłoby coś takiego:

where point is within green and point is within red and point is within blue and not point is within yellow
gdzie każde '... is within ...' to ifologia w stylu lat>=minLat and lat<=minLat and lng>=minLng and lng<=maxLng (pewnie nie będziesz tego kleić ręcznie, więc może jakiś kod to przygotowywać).
będzie cholernie mało czytelne ale będzie działać, a kiedyś można zrefaktorować do czegoś ładniejszego ;)
@ppawel: Dzięki za pomoc tylko ja nie szukam punktu ale obszaru :)
Jak na razie mam coś takiego generującego zapytanie w Hibernate i wygląda ok, choć nie zrobiłem jeszcze pełnych testów:

areaCriteria.add(Restrictions.or(
Restrictions.and(
Restrictions.between("area.southWest.latitude", area.getSouthWest().getLatitude(), area.getNorthEast().getLatitude()),
Restrictions.between("area.southWest.longitude", area.getSouthWest().getLongitude(), area.getNorthEast().getLongitude())
),
Restrictions.and(
Restrictions.between("area.northEast.latitude", area.getSouthWest().getLatitude(), area.getNorthEast().getLatitude()),
Restrictions.between("area.northEast.longitude", area.getSouthWest().getLongitude(), area.getNorthEast().getLongitude())
),
Restrictions.and(
Restrictions.between("area.southWest.latitude", area.getSouthWest().getLatitude(), area.getNorthEast().getLatitude()),
Restrictions.between("area.northEast.longitude", area.getSouthWest().getLongitude(), area.getNorthEast().getLongitude())
),
Restrictions.and(
Restrictions.between("area.northEast.latitude", area.getSouthWest().getLatitude(), area.getNorthEast().getLatitude()),
Restrictions.between("area.southWest.longitude", area.getSouthWest().getLongitude(), area.getNorthEast().getLongitude())
)
));

Nie wiem czemu ale blok kod
@duddits: no dobra, ustawiaj sobie go gdzie chcesz za pomocą setBound, ale potem i tak musisz go dodać za pomocą panel.add(component). Niewiele się zmienia oprócz tego, że musisz dopisać setBounds. Ale ja bym radził jednak manipulować widzialnością komponentu niż tworzyć cały przyciskiem.

Co robisz w listenerze przycisku:

1. Robisz nowy komponent.

2. Ustawiasz bounds.

3. Dodajesz na panel.

4. Robisz panel.revalidate();

Tym sposobem dynamicznie dodajesz komponent na panel.