[php] Google maps API -> Maximaal 1 route

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Hey,

Onderstaande functie gebruik ik om de afstand te berekenen tussen 2 postcodes (dit werkt uitstekend).

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
27
<?
function zipcodeCalc( $from, $to, $key)
{
  $data = array (
    'key=' . $key,
    'output=json',
    'gl=nl',
    'q=' . urlencode('from: '.$from.' to: '.$to)
  );
  $url = 'http://google.com/maps/nav?' . join( '&', $data);
        
  $ch = curl_init( $url);
  
  curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt( $ch, CURLOPT_MAXREDIRS, 3); 
  curl_setopt( $ch, CURLOPT_REFERER, 'http://google.com'); 
  
  $str = curl_exec( $ch);
  
  if( curl_getinfo( $ch, CURLINFO_HTTP_CODE ) == 200 )
    return $str;
  else 
    return curl_error( $ch);

}
?>


Echter wanneer er 2 of meer routes beschikbaar zijn krijg ik geen waarde terug. Hoe kan ik aangeven dat altijd de eerste route wordt gebruikt voor het berekenen van de afstand?

Ik kan het antwoord met geen mogelijkheid vinden op internet, dus misschien weet iemand het toevallig.

Alvast bedankt!

Acties:
  • 0 Henk 'm!

Anoniem: 338200

Bedoel je wanneer google maps aangeeft dat er meerdere voorgestelde routes zijn? Hoe verwerk je de geretourneerde json dan?

Ik heb je dingetje even getest en ik krijg enkel de kortste van de voorgestelde routes terug. Heb je een voorbeeld van een zoekquery waarbij het fout gaat? :)

Acties:
  • 0 Henk 'm!

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Inderdaad indien google voorgestelde routes weergeeft.

De json verwerk ik met:

PHP:
1
2
3
$afstand = json_decode( zipcodeCalc( $_GET['from'].',Nederland',  $_GET['to'].',Nederland', $key)  );

$afstandKm = round($afstand->Directions->Distance->meters/1000,0);


Als je deze postcode gebruikt krijg je niets terug: 5872 AP . Wanneer ik enkele niet werkende postcodes invoer in google maps zie ik dat hij 2 routes voorstelt. Ik ga er vanuit dat dit het probleem is dat ik niets terug krijg.

[ Voor 6% gewijzigd door radem205 op 24-01-2010 23:00 ]


Acties:
  • 0 Henk 'm!

Anoniem: 338200

Je zult toch een specifiekere zoekquery moet geven die fout gaat. Als ik het volgende doe:
PHP:
1
2
3
$afstand = json_decode(zipcodeCalc('5872 AP, Nederland', '3811NA, Nederland', ''));
$afstandKm = round($afstand->Directions->Distance->meters/1000,0);
echo $afstandKm;


Dan zie ik in google maps 3 voorgestelde routes en is de output van het script 132.. :)

Acties:
  • 0 Henk 'm!

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Ik heb even gekeken en inderdaad ligt het aan de json_decode. Als ik voor de json_decode een var_dump zet dan vindt ie inderdaad wel de afstand tussen de betreffende postcodes.

Als ik een var_dump maak van de json_decode maak dan krijg ik NULL terug. Enig idee hoe dit kan?

Edit: Opgelost. Ik moest een utf8_encode($afstand) toevoegen. Dank voor je hulp.

[ Voor 13% gewijzigd door radem205 op 25-01-2010 08:02 ]


Acties:
  • 0 Henk 'm!

Anoniem: 338200

radem205 schreef op maandag 25 januari 2010 @ 07:58:
Ik heb even gekeken en inderdaad ligt het aan de json_decode. Als ik voor de json_decode een var_dump zet dan vindt ie inderdaad wel de afstand tussen de betreffende postcodes.
[...]
Dat is exact waarom je bij dit soort foutjes je code even vanaf het begin moet doorlopen. De fout zat dus niet bij het ophalen van de data (zoals je zelf al had aangenomen :9), maar bij het verwerken ervan. ;)

Fijn dat je de oplossing hebt kunnen vinden. :)

Acties:
  • 0 Henk 'm!

Anoniem: 327300

Leuk om mijn (pruts) scriptje die ik op phphulp.nl had gedumpt terug te zien.

Je hoeft trouwens ook geen ", Nederland" te gebruiken aangezien dat op lijn 7 al staat dat je het voor Nederland gebruikt ;)

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

offtopic:
Het encoden en joinen van een querystring kan eenvoudiger met http_build_query() :)

https://oneerlijkewoz.nl
Het ergste moet nog komen / Het leven is een straf / Een uitgestrekte kwelling van de wieg tot aan het graf


Acties:
  • 0 Henk 'm!

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Anoniem: 327300 schreef op maandag 25 januari 2010 @ 13:39:
Leuk om mijn (pruts) scriptje die ik op phphulp.nl had gedumpt terug te zien.

Je hoeft trouwens ook geen ", Nederland" te gebruiken aangezien dat op lijn 7 al staat dat je het voor Nederland gebruikt ;)
Er is vrij weinig te vinden over het gebruiken van Google Maps API in php om afstanden te berekenen, en aangezien jouw script goed werkt gebruik ik het. Bedankt daarvoor.
Heb je toevallig een betere versie in de aanbieding of moet ik het met dit pruts scriptje doen :p

Acties:
  • 0 Henk 'm!

Anoniem: 327300

radem205 schreef op maandag 25 januari 2010 @ 13:56:
[...]


Er is vrij weinig te vinden over het gebruiken van Google Maps API in php om afstanden te berekenen, en aangezien jouw script goed werkt gebruik ik het. Bedankt daarvoor.
Heb je toevallig een betere versie in de aanbieding of moet ik het met dit pruts scriptje doen :p
Ik heb het geschreven voor een collega op stage die het via javascript deed wat makkelijk bewerkt kon worden waardoor de afstand gemanipuleerd kon worden. Misschien dat ik in de toekomst wel wat beters schrijf.

Het enigste nadeel hiervan is dat je verbannen kan worden als je requests na elkaar stuurt is wat ik zo begreep (was laatst ook een topic op phpfreakz.nl met iemand die het gebruikt had) maar daar kan ik weinig aan veranderen.

Acties:
  • 0 Henk 'm!

  • orange.x
  • Registratie: Maart 2002
  • Laatst online: 30-04 10:40
Voor een "snel" scriptje of iets dergelijks kan je eventueel ook het volgende gebruiken.

http://www.postcode.nl/in...g-latitude-longitude.html

Ik heb voor een vriend van mij een pagina gecheft met database erachter van 574 winkels die blaadjes verkopen. En aan de hand van de ingevoerde postcode van de bezoeker zoekt mijn script het dichtsbijzijnde winkeltje. Dat gaat dan met die ene formule (Haversine Formula) die ook op de pagina staat.

Werkt als een biet. Ik heb die 574 winkels eerst via de google api alle lat en lon waardes opgehaald en in de database gegooid voor de snelheid van het berekenen. Want voor iedere postcode die ingevoerd wordt moet hij alle postcodes in de database langs om te kijken welke het dichtsbij zit :)

Ik had een ander vraagje, ik wil nu nog op die pagina een plaatje van maps.google.nl weergeven, met de route van de ingevoerde postcode van de bezoeker naar het punt wat het dichts bij zit. Hoe krijg ik dit nou mooi ingezoomd op de goede schaal op de site? Ik heb nog niet kunnen vinden welke waardes je allemaal aan google mee kan geven, of dus terug kan krijgen. Want dat is nog het enige dat ik nodig heb iig :)

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Heeft er iemand in dit topic wel eens de gebruiksvoorwaarden doorgenomen van de diensten die ze gebruiken?

Want afaik moet je voor al deze gewoon betalen als je het commercieel gebruikt...
Lijkt me leuk om tegen een klant te moeten vertellen dat het niet werkt omdat ( of verouderde data is ) omdat je enkel voorbeelddata gebruikte...

Acties:
  • 0 Henk 'm!

  • orange.x
  • Registratie: Maart 2002
  • Laatst online: 30-04 10:40
Gomez12 schreef op woensdag 03 februari 2010 @ 22:17:
Heeft er iemand in dit topic wel eens de gebruiksvoorwaarden doorgenomen van de diensten die ze gebruiken?

Want afaik moet je voor al deze gewoon betalen als je het commercieel gebruikt...
Lijkt me leuk om tegen een klant te moeten vertellen dat het niet werkt omdat ( of verouderde data is ) omdat je enkel voorbeelddata gebruikte...
Wat is hier niet duidelijk aan?
The Maps API is a free service, available for any web site that is free to consumers. Please see the terms of use for more information.
http://code.google.com/apis/maps/ komt daar vandaan.

Dus gratis gebruik voor alle websites die gratis toegankelijk zijn voor de bezoekers.

Of bedoel jij dat het raar is als je betaald wordt voor het toevoegen van een gratis service aan de website van je klant? Dat heet toch gewoon werk? Of hij moet het zelf willen doen, kan prima :) Maar dan moet hij er tijd insteken. Als jij een auto kan repareren en ik heb een probleempje doe je dat toch niet voor nop? Snap niet helemaal wat je bedoelt zeg maar.

[ Voor 18% gewijzigd door orange.x op 04-02-2010 00:05 ]


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 19:36

MueR

Admin Tweakers Discord

is niet lief

Consumers is daar het keyword. Consumenten, niet bedrijven.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 17:20

Patriot

Fulltime #whatpulsert

MueR schreef op donderdag 04 februari 2010 @ 00:56:
Consumers is daar het keyword. Consumenten, niet bedrijven.
Tenzij jij uit de uitspraken van de TS denkt op te kunnen maken dat het niet zo is, lijkt het me logisch om ervan uit te gaan dat hij het wil gebruiken op een publieke website? Het moet gratis beschikbaar zijn voor de consumenten, er mag dus best een megaconcern achter die pagina zitten, als jan en alleman er maar voor niks bij kan.

  • RMX
  • Registratie: Augustus 2000
  • Laatst online: 30-04 19:00

RMX

radem205 schreef op maandag 25 januari 2010 @ 07:58:
Ik heb even gekeken en inderdaad ligt het aan de json_decode. Als ik voor de json_decode een var_dump zet dan vindt ie inderdaad wel de afstand tussen de betreffende postcodes.

Als ik een var_dump maak van de json_decode maak dan krijg ik NULL terug. Enig idee hoe dit kan?

Edit: Opgelost. Ik moest een utf8_encode($afstand) toevoegen. Dank voor je hulp.
Dit doe je na de JSON decode ?

Ik krijg nog steeds bij sommige adressen 0 KM terug..

Lijkt me hetzelfde probleem _/-\o_

Acties:
  • 0 Henk 'm!

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
RMX schreef op donderdag 11 februari 2010 @ 13:30:
[...]

Dit doe je na de JSON decode ?

Ik krijg nog steeds bij sommige adressen 0 KM terug..

Lijkt me hetzelfde probleem _/-\o_
Nee, de utf8_encode moet je voor de json_decode zetten.
Pagina: 1