Leden zoeken in je regio op grond van postcode/woonplaats

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hans De Ridder

Hans De Ridder

05/04/2016 09:24:23
Quote Anchor link
Er zijn sites, zoals datingsites, marktplaats, etc., waar je een postcode of woonplaats kunt ingeven.
Vervolgens zie je dan alle gegevens van leden in je regio (vaak kun je ook de max. afstand ingeven).
Waarop zijn die gebaseerd?
Ik kan me iets voorstellen met lengte- en breedtegraden.
Maar hoe dan verder?
 
PHP hulp

PHP hulp

22/11/2024 07:48:42
 
Ivo P

Ivo P

05/04/2016 09:45:03
Quote Anchor link
Er zijn databases te downloaden of via een api te raadplegen.

Daarmee krijg je bij een postcode een stel coordinaten. Ook voor een woonplaats. Dat is vaak een wat groter gebied, maar de pijl zal dan naar het centrum of "midden" van de plaats wijzen.

2 van die coordinaatparen en pythagoras leveren je dan de afstand hemelsbreed.
Eventueel nog uit te breiden met een formule om de kromming van de aarde er in mee te nemen.
 
Ward van der Put
Moderator

Ward van der Put

05/04/2016 09:54:52
Quote Anchor link
Als je de lengte- en breedtegraad weet, kun je de afstand tussen twee geografische coördinaten berekenen met de haversine-formule.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php
function get_afstand_in_meters($lengtegraad1, $breedtegraad1, $lengtegraad2, $breedtegraad2)
{

    // Gemiddelde straal (r) van de aarde in meters
    $r = 6367000;

    // Hoogste nauwkeurigheid voor de functie pi() en de constante M_PI
    ini_set('precision', 49);

    // Graden omzetten in radialen
    $lengtegraad1 = ($lengtegraad1 * M_PI) / 180;
    $breedtegraad1 = ($breedtegraad1 * M_PI) / 180;
    $lengtegraad2 = ($lengtegraad2 * M_PI) / 180;
    $breedtegraad2 = ($breedtegraad2 * M_PI) / 180;

    /**
     * Haversine-formule
     *
     * dlat = lat2 - lat1
     * dlon = lon2 - lon1
     * a = sin^2(dlat/2) + cos(lat1) * cos(lat2) * sin^2(dlon/2)
     * c = 2 * arcsin(min(1, sqrt(a)))
     * d = r * c
     *
     * @link http://en.wikipedia.org/wiki/Haversine_formula
     * @link http://www.movable-type.co.uk/scripts/gis-faq-5.1.html
     */

    $dlat = $lengtegraad2 - $lengtegraad1;
    $dlon = $breedtegraad2 - $breedtegraad1;
    $a = pow(sin($dlat/2), 2) + cos($lengtegraad1) * cos($lengtegraad2) * pow(sin($dlon/2), 2);
    $c = 2 * asin(min(1, sqrt($a)));
    $d = $r * $c;
    $d = (int) round($d, 0);
    return $d;
}

?>
 
Hans De Ridder

Hans De Ridder

05/04/2016 10:47:45
Quote Anchor link
Ik bekijk net wat kaartjes met gegevens over postcodes.
Grofweg zijn er 9 regio's. Met binnen elke regio weer een onderverdeling.
Als je een postcode opgeeft zou je op grond daarvan 2 nummers hoger kunnen nemen en 2 nummer lager.
Met misschien een kleine correctie in de grensgebieden.
Dan zit je redelijk goed wat betreft de regio.
Als leden dan bij het registreren een (niet zichtbare) poscode invullen,
dan hoeft zo'n script toch niet zoveel werk te zijn?
 
Ivo P

Ivo P

05/04/2016 10:54:34
Quote Anchor link
precies.

Maar als de afstand niet heel kritisch is en niet te groot, zou het ook op basis van X² + Y² = afstand² kunnen.

Als het gaat om bedrijven in een straal van 10 kilometer om de woonplaats, dan is het niet erg dat een bedrijf op 10.1 km afstand (hemelsbreed) er ook bij komt.

Beetje afhankelijk van de vraag hoe vaak je deze formule moet gebruiken.

Als je steeds voor 100.000 records in je database de afstand moet bepalen, dan is dat nogal duur.
In zo'n geval is het ook zinvol om eerst een sub-dataset te bepalen op basis van een vierkant rond de woonplaats van de zoeker: je kunt dan direct op de coordinaten x en y filteren.

Sowieso is het handig om direct bij het opslaan van de adressen de coordinaten op te halen en te bewaren: je vraagt de bezoeker de postcode en slaat naast de postcode dus ook de longitude en latitude op.
 
Hans De Ridder

Hans De Ridder

05/04/2016 11:01:48
Quote Anchor link
Op de website komt het inderdaad niet zo kritisch.
Leden registeren zich.
Gaat dan om collega artiesten/studio's/geluidsmensen die bij je in de omgeving wonen.

Bedankt alvast voor de leuke reacties....
De radertjes draaien alweer.



Toevoeging op 05/04/2016 12:38:01:

Dit is een interessante link..Wel helemaal in HTML en Javascript.

http://www.tijdgeest.eu/plaatsopaarde.html
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.