Zoeken binnen een straal van x kilometers

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • van.der.schulting
  • Registratie: Juli 2002
  • Laatst online: 09-08-2024
Ik wil graag iets soortgelijks bouwen zoals je bijvoorbeeld op de PostNL-site en site van AH ziet; zoek een vestiging binnen x kilometers van je postcode / woonplaats. Volgens mij doen zij het allemaal m.b.v. Google Maps.

Volgens mij moet het kunnen met de search functie van Google Places API (https://developers.google...ion/places/#PlaceSearches).
Die is alleen wel experimental zie ik, dat brengt me wel aan het twijfelen...

Twee vragen:
1. Klopt het dat je Google Maps er prima voor kan gebruiken? Zo niet, wat is een goed alternatief?
2. Weet iemand een goeie tutorial die ik even kan doorlopen? De documentatie van Google is zo uitgebreid en als ik zoek op tutorials kom ik telkens terug bij Google Places zelf.

Acties:
  • 0 Henk 'm!

  • beany
  • Registratie: Juni 2001
  • Laatst online: 23:16

beany

Meeheheheheh

Volgens mij maken PostNL en AH gebruik van postcode tabellen met afstanden. Die tabellen moet je doorgaans kopen.

Dagelijkse stats bronnen: https://x.com/GeneralStaffUA en https://www.facebook.com/GeneralStaff.ua


Acties:
  • 0 Henk 'm!

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 21:58
Dat kan inderdaad gewoon, je kan latitude/longitude opvragen van een bepaalde locatie via de Google Maps API.
Doe dat voor al je winkels en sla dat op in een database. Bij een zoekopdracht kan je dan binnen een bepaalde straal zoeken van de locatie (zoekterm omzetten naar lat/long), met behulp van wat wiskunde.

Daarna kan je de resultaten sorteren op de afstand, en ook de afstand zelf ophalen. Dus bijvoorbeeld alles binnen 25 km. En aangezien je de lat/long ed. hebt, kan je die ook op een Google maps kaart zetten.

Voorbeelde: https://developers.google.com/maps/articles/phpsqlsearch

Als je der niet uit komt kan ik wel even kijken, heb volgens mij ook iets dergelijks gemaakt ooit. (Als dit is wat je bedoeld iig)

[ Voor 5% gewijzigd door Barryvdh op 01-04-2012 16:55 ]


Acties:
  • 0 Henk 'm!

  • Boss
  • Registratie: September 1999
  • Laatst online: 21:37

Boss

+1 Overgewaardeerd

De meeste moderne SQL Servers kunnen op basis van geo-informatie (coordinaten) ook zoeken binnen een straal van een bepaald punt. Voor MySQL zie bijvoorbeeld dit: http://www.scribd.com/doc...istance-Search-with-MySQL

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.


Acties:
  • 0 Henk 'm!

  • van.der.schulting
  • Registratie: Juli 2002
  • Laatst online: 09-08-2024
OK, thanks. Het gaat nu wel lukken....

Acties:
  • 0 Henk 'm!

  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

Als je postgresql gebruikt zou je ook eens naar postgis kunnen kijken; dat is een GIS (geografisch informatie systeem) layer boven op het kale DBMS.
Is er al eent ijdje, itt de mysql functionaliteit.

i3 + moederbord + geheugen kopen?


Acties:
  • 0 Henk 'm!

  • Priet
  • Registratie: Januari 2001
  • Laatst online: 20:46

Priet

To boldly do what no one has..

Je kunt de 6PP (http://www.d-centralize.nl/projects/6pp/) database daar ook voor gebruiken. Daarin staan de postcodes plus lat+lng coördinaten.

"If you see a light at the end of a wormhole, it's probably a photon torpedo!"


Acties:
  • 0 Henk 'm!

Anoniem: 111703

Boss schreef op zondag 01 april 2012 @ 16:56:
De meeste moderne SQL Servers kunnen op basis van geo-informatie (coordinaten) ook zoeken binnen een straal van een bepaald punt. Voor MySQL zie bijvoorbeeld dit: http://www.scribd.com/doc...istance-Search-with-MySQL
holy shit, queries die 1200ms of zelfs 4000ms duren. Waarom zou je dat nou willen doen op een database 8)7

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Boudewijn schreef op maandag 02 april 2012 @ 00:10:
Als je postgresql gebruikt zou je ook eens naar postgis kunnen kijken; dat is een GIS (geografisch informatie systeem) layer boven op het kale DBMS.
Is er al eent ijdje, itt de mysql functionaliteit.
Al ben ik van mening dat PostGIS veel beter is, dit deed ik _jaren_ geleden al in MySQL.
Dit heb ik in 2004 voor een schoolprojectje geschreven:

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
SELECT
    P1.`P_ID` as ID1,
    P1.`P_Plaats` as Plaats1,
    ACOS(
        (COS(ABS(RADIANS(P1.P_NB-90))))*
        (COS(ABS(RADIANS(P0.P_NB-90))))+
        (SIN(ABS(RADIANS(P1.P_NB-90))))*
        (SIN(ABS(RADIANS(P0.P_NB-90))))*
        (COS(IF(
            ABS(RADIANS(P0.P_OL)-RADIANS(P1.P_OL))>PI(),
            ABS(RADIANS(P0.P_OL)-RADIANS(P1.P_OL))*2,
            ABS(RADIANS(P0.P_OL)-RADIANS(P1.P_OL))
        )))
    )*
    40000/
    2/
    PI()*
    1.25
AS afstand
FROM
    tblPostcode as P0 RIGHT JOIN tblPostcode as P1 ON(P1.`P_Plaats` != P0.`P_Plaats`)

WHERE
    %(postal_code)s BETWEEN P0.`P_Postc_beg` AND P0.`P_Postc_end` AND
    ACOS(
        (COS(ABS(RADIANS(P1.P_NB-90))))*
        (COS(ABS(RADIANS(P0.P_NB-90))))+
        (SIN(ABS(RADIANS(P1.P_NB-90))))*
        (SIN(ABS(RADIANS(P0.P_NB-90))))*
        (COS(IF(
            ABS(RADIANS(P0.P_OL)-RADIANS(P1.P_OL))>PI(),
            ABS(RADIANS(P0.P_OL)-RADIANS(P1.P_OL))*2,
            ABS(RADIANS(P0.P_OL)-RADIANS(P1.P_OL))
        )))
    )*
    40000/
    2/
    PI()*
    1.25 < %(max_distance)s
ORDER BY
    afstand

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

Anoniem: 146163

Anoniem: 111703 schreef op dinsdag 03 april 2012 @ 07:41:
[...]


holy shit, queries die 1200ms of zelfs 4000ms duren. Waarom zou je dat nou willen doen op een database 8)7
Als je alle slides zou bekijken zie je dat ze dat ook zeggen. Vaak kan je de data met een slimme spatial index zodanig indexeren dat een query niet 4, maar 0.04 s duurt. 't is echter wel iets lastiger dan 'normale' SQL om het goed te krijgen.
Pagina: 1