Informatie van andere website ophalen
Ik heb een probleem waar ik niet uit kom.
Op mijn eigen homepage typt iemand zijn postcode in, dit sla ik op
met php in mijn sql database. No problem so far!
Nu wil ik iets gaan doen met die postcode ik wil nl de gps coordinaten ophalen van website http://www.gpscoordinaten.nl/bepaal-gps-coordinaten.php
Handmatig typ ik mijn postcode in en druk op de submit button "ga naar"
Er verschijnt een resultaat met de door mijn benodigde gps coordinaten.
(handmatig dus geen probleem)
Nu mijn probleem.
Hoe krijg ik mijn postcode vanaf mijn website op die van http://www.gpscoordinaten.nl/bepaal-gps-coordinaten.php
en hoe haal ik de gps coordinaten van die website om ze in mijn database
te verwerken.
Als het even kan dan wil ik de focus op mijn website houden, dus ophalen
zonder dat iemand er iets van merkt, niet dat het geheim is maar ik zou het
persoonlijk zelf irritant vinden als je van de ene pagina naar de andere
geslingerd wordt.
Graag even een paar hints zodat ik even vooruit kan.
Bij voorbaat dank.
Simon
Gewijzigd op 01/01/1970 01:00:00 door Derk nvt
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$postcode='3991GJ';
$data=file_get_contents('http://maps.google.com/maps/geo?output=json&oe=utf-8&q='.$postcode.'%20netherlands');
preg_match('/"coordinates": \[ ([0-9\.]+), ([0-9\.]+), 0 \]/is',$data,$match);
print_r($match);
?>
$postcode='3991GJ';
$data=file_get_contents('http://maps.google.com/maps/geo?output=json&oe=utf-8&q='.$postcode.'%20netherlands');
preg_match('/"coordinates": \[ ([0-9\.]+), ([0-9\.]+), 0 \]/is',$data,$match);
print_r($match);
?>
Heb het voor je uitgeprogrammeerd...
in $match[1] zit een coordinaat en $match[2].
Nu ben ik niet zo into coordinaten en kreeg een hele lijst (nouja 6) met dingen naar mijn hoofd geslingerd en wist niet welke je wilde hebben.
http://maps.google.com/maps/geo?output=json&oe=utf-8&q=3991GJ%20netherlands
is de request die gedaan wordt.
Gelieve Niet Bumpen::
Gewijzigd op 01/01/1970 01:00:00 door Derk nvt
gpscoordinaten.nl disclaimer:
gebruik
Alle informatie op deze site is uitsluitend voor eigen gebruik. Het is niet toegestaan om de informatie op deze site verder te verspreiden, op welke wijze dan ook, zonder schriftelijke toestemming van ARiS websitewerk.
copyright
Alle intellectuele eigendomsrechten met betrekking tot deze website, www.gpscoordinaten.nl, berusten bij ARiS websitewerk.
Het is niet toegestaan om deze gehele website, of gedeeltes hiervan (b.v. scripts, foto's), voor welk gebruik dan ook te kopiëren of te vermenigvuldigen, op welke wijze dan ook, zonder schriftelijke toestemming van ARiS websitewerk.
Alle informatie op deze site is uitsluitend voor eigen gebruik. Het is niet toegestaan om de informatie op deze site verder te verspreiden, op welke wijze dan ook, zonder schriftelijke toestemming van ARiS websitewerk.
copyright
Alle intellectuele eigendomsrechten met betrekking tot deze website, www.gpscoordinaten.nl, berusten bij ARiS websitewerk.
Het is niet toegestaan om deze gehele website, of gedeeltes hiervan (b.v. scripts, foto's), voor welk gebruik dan ook te kopiëren of te vermenigvuldigen, op welke wijze dan ook, zonder schriftelijke toestemming van ARiS websitewerk.
Je moet kijken of ze iets van een api hebben.
Overigs kun je kijken naar google maps. Dat gebruiken zij ook. Als ik bijvoorbeeld daar 9742 NE invoer dan krijg ik 53.22886, 6.54169 als resultaat, wat ongeveer klopt (want postcode kan een groot gebied zijn he).
En volgens mij moet er zo'n soort script ook hier zijn gepost.
@derk
Je kan beter cURL hier gebruiken das een stuk sneller
Code (php)
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
function getpostcode($postcode) {
$url = 'http://maps.google.com/maps/geo?output=json&oe=utf-8&q='.$postcode.'%20netherlands';
$startat = '"coordinates": [ ';
$stopat = ", 0 ]";
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$start = curl_exec($ch);
curl_close($ch);
$exploded = explode($startat,$start);
$exploded = explode($stopat,$exploded[1]);
$result = str_replace('<br />','',nl2br($exploded[0]));
return $result;
}
if (getpostcode($_GET['postcode'])!=''){
echo "De coordinaten zijn: ".getpostcode($_GET['postcode']);
}else{
echo 'De postcode klopt niet';
}
?>
ini_set('display_errors',1);
error_reporting(E_ALL);
function getpostcode($postcode) {
$url = 'http://maps.google.com/maps/geo?output=json&oe=utf-8&q='.$postcode.'%20netherlands';
$startat = '"coordinates": [ ';
$stopat = ", 0 ]";
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$start = curl_exec($ch);
curl_close($ch);
$exploded = explode($startat,$start);
$exploded = explode($stopat,$exploded[1]);
$result = str_replace('<br />','',nl2br($exploded[0]));
return $result;
}
if (getpostcode($_GET['postcode'])!=''){
echo "De coordinaten zijn: ".getpostcode($_GET['postcode']);
}else{
echo 'De postcode klopt niet';
}
?>
zo dus er klopt alleen iets niet als je weet wat zeg het even
Hier kan je het testen
http://voogsgerd.nl/lolzzzman/phphulp/postcodetocoordinaten.php?postcode=3902
Gewijzigd op 01/01/1970 01:00:00 door John Doe
@Daniel, werkt goed bij mij. Was altijd voorstander van jou explode plan, maar ben toch overgestapt op regular expressions. Mocht het fout gaan dan geeft mijn functie niks meer terug, die van jou geeft dan (mogelijk) foute informatie terug. Beetje jammer...
Voor de rest, is curl sneller als file_get_contents? Keertje testen... Oh en voor curl, moet zijn host deze wel ondersteunen...
Gewijzigd op 01/01/1970 01:00:00 door Derk nvt
Alvast bedankt voor jullie enthousiaste reacties
Een reactie op het script van Derk: , ik heb de code gekopieerd in een php file
maar krijg als antwoord : Array ( )
http://simonbuijs9999.ifastnet.com/coordinaten%20opvragen%20simpel.php
Wat heb ik verkeerd gedaan?
Een reactie op het script van Derk:
Het script volgens je link werkt goed (op jouw website) echter
krijg ik een foutmelding omdat ik geen postcode ingeef (denk ik)
Hoe pas ik het script aan zodat ik toch een goed antwoord krijg.
ik zal wel een dombo zijn hoor, zal je wel denken.
Bij voorbaat dank voor jullie enthousiaste reakties
Met vr groet
Simon Buijs
Ik ben al 2 avonden bezig met onderstaande code
Aan de code heb ik $postcode='1628DC'; als variable toegevoegd
Ik krijg een foutmelding dat er op regel 21
Notice: Undefined index: postcode in /home/a5532984/public_html/coordinaten opvragen met CURL.php on line 21
Waarom lukt het mij niet , wat is er mis met regel 21
Mvg Simon
Code (php)
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
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
<?php
$postcode='1628DC';
ini_set('display_errors',1);
error_reporting(E_ALL);
function getpostcode($postcode) {
$url = 'http://maps.google.com/maps/geo?output=json&oe=utf-8&q='.$postcode.'%20netherlands';
$startat = '"coordinates": [ ';
$stopat = ", 0 ]";
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$start = curl_exec($ch);
curl_close($ch);
$exploded = explode($startat,$start);
$exploded = explode($stopat,$exploded[1]);
$result = str_replace('<br />','',nl2br($exploded[0]));
return $result;
}
if (getpostcode($_GET['postcode'])!=''){
echo "De coordinaten zijn: ".getpostcode($_GET['postcode']);
}else{
echo 'De postcode klopt niet';
}
?>
$postcode='1628DC';
ini_set('display_errors',1);
error_reporting(E_ALL);
function getpostcode($postcode) {
$url = 'http://maps.google.com/maps/geo?output=json&oe=utf-8&q='.$postcode.'%20netherlands';
$startat = '"coordinates": [ ';
$stopat = ", 0 ]";
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$start = curl_exec($ch);
curl_close($ch);
$exploded = explode($startat,$start);
$exploded = explode($stopat,$exploded[1]);
$result = str_replace('<br />','',nl2br($exploded[0]));
return $result;
}
if (getpostcode($_GET['postcode'])!=''){
echo "De coordinaten zijn: ".getpostcode($_GET['postcode']);
}else{
echo 'De postcode klopt niet';
}
?>
De oplossing is om altijd eerst te checken of een array-element wel bestaat, dus met:
if (isset($_GET['postcode']))
Alleen als deze inderdaad is geset dan kun je 'm gebruiken in de rest van de code.
Ik dacht dat ik de postcode gedeclareerd had in regel 2
en die postcode gebruikte in regel 6
Waarom gebruikt ie mijn gedeclareerde waarde dan niet?
maw declareer ik fout?
Hoe moet ik de code aanpassen zodat ie juist werkt?
Mvg
Simon
Hier staat dus eigenlijk
getpostcode(true)
of
getpostcode(false)
derk schreef op 02.08.2009 22:14:
@Karl, als je had gekeken, de site gpscoordinaten.nl maakt gebruik van de google maps api. Deze gebruikt mijn script dus ook. Hier heeft gpscoordinaten.nl geen zeggen over.
Dat kan je niet zo stellen. Misschien maken zij gebruik van een postcode database, en alleen van google maps api om de positie te weergeven.
Wat er achter de schermen gebeurt kan jij niet zien. Dus daar weet je niks vanaf.
En als zij gebruik maken van google maps api, waarom kan jij dat dan ook niet?
Ik heb het na een paar dagen uiteindelijk met behulp van jullie voor elkaar
gekregen om de coordinaten van een postcode op te vragen en te tonen in
webpagina.
Hieronder het werkend script.
Ik wil jullie voor jullie bijdrage hartelijk danken.
Met vr groet
Simon
Code (php)
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
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
<?php
$postcode='1628DC';
ini_set('display_errors',1);
error_reporting(E_ALL);
function getpostcode($postcode) {
$url = 'http://maps.google.com/maps/geo?output=json&oe=utf-8&q='.$postcode.'%20netherlands';
$startat = '"coordinates": [ ';
$stopat = ", 0 ]";
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$start = curl_exec($ch);
curl_close($ch);
$exploded = explode($startat,$start);
$exploded = explode($stopat,$exploded[1]);
$result = str_replace('<br />','',nl2br($exploded[0]));
return $result;
}
if (getpostcode($postcode)!=''){
echo 'The coordinates are: '.getpostcode($postcode);
} else{
echo 'The Zipcode is not correct';
}
?>
$postcode='1628DC';
ini_set('display_errors',1);
error_reporting(E_ALL);
function getpostcode($postcode) {
$url = 'http://maps.google.com/maps/geo?output=json&oe=utf-8&q='.$postcode.'%20netherlands';
$startat = '"coordinates": [ ';
$stopat = ", 0 ]";
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$start = curl_exec($ch);
curl_close($ch);
$exploded = explode($startat,$start);
$exploded = explode($stopat,$exploded[1]);
$result = str_replace('<br />','',nl2br($exploded[0]));
return $result;
}
if (getpostcode($postcode)!=''){
echo 'The coordinates are: '.getpostcode($postcode);
} else{
echo 'The Zipcode is not correct';
}
?>
EDIT: Zie url.
http://maps.google.com/maps/geo?output=xml&oe=utf-8&q=2595AA
Geeft
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8" ?>
<kml xmlns="http://earth.google.com/kml/2.0"><Response>
<name>2595AA</name>
<Status>
<code>200</code>
<request>geocode</request>
</Status>
<Placemark id="p1">
<address>2595AA Den Haag, Nederland</address>
<AddressDetails Accuracy="5" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><Country><CountryNameCode>NL</CountryNameCode><CountryName>Nederland</CountryName><AdministrativeArea><AdministrativeAreaName>Zuid-Holland</AdministrativeAreaName><Locality><LocalityName>Den Haag</LocalityName><PostalCode><PostalCodeNumber>2595AA</PostalCodeNumber></PostalCode></Locality></AdministrativeArea></Country></AddressDetails>
<ExtendedData>
<LatLonBox north="52.0847259" south="52.0784307" east="4.3266529" west="4.3203576" />
</ExtendedData>
<Point><coordinates>4.3235052,52.0815783,0</coordinates></Point>
</Placemark>
</Response></kml>
<kml xmlns="http://earth.google.com/kml/2.0"><Response>
<name>2595AA</name>
<Status>
<code>200</code>
<request>geocode</request>
</Status>
<Placemark id="p1">
<address>2595AA Den Haag, Nederland</address>
<AddressDetails Accuracy="5" xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"><Country><CountryNameCode>NL</CountryNameCode><CountryName>Nederland</CountryName><AdministrativeArea><AdministrativeAreaName>Zuid-Holland</AdministrativeAreaName><Locality><LocalityName>Den Haag</LocalityName><PostalCode><PostalCodeNumber>2595AA</PostalCodeNumber></PostalCode></Locality></AdministrativeArea></Country></AddressDetails>
<ExtendedData>
<LatLonBox north="52.0847259" south="52.0784307" east="4.3266529" west="4.3203576" />
</ExtendedData>
<Point><coordinates>4.3235052,52.0815783,0</coordinates></Point>
</Placemark>
</Response></kml>
Gewijzigd op 01/01/1970 01:00:00 door Joey Drieling
Het is omdat ik dit via websites te gelezen had dat CURL
de snelste antwoorden gaf.
Als ik goed kijk dan heb zie ik een script wat al antwoorden in zich heeft.
Als ik je link gebruik dan krijg ik het volgende te zien.
<kml>
−
<Response>
<name>2595AA</name>
−
<Status>
<code>610</code>
<request>geocode</request>
</Status>
</Response>
</kml>
en niet meer.
Ik wil het wel even proberen
maar dan moet je even je code die voorstelt even laten zien.
mvg
Simon