Google maps
Door Cynthia Fridsma, 14 jaar geleden, 17.510x bekeken
PHP class voor google maps.
Dit is een heel eenvoudige class die de emebed code voor Google maps genereerd aan de hand van het door jou opgegeven adres.
Verder kan je de class ook gebruiken voor een route beschrijving.
Je kunt zelf de weergave taal voor de google map aanpassen.
Gesponsorde koppelingen
PHP script bestanden
Er zijn 17 reacties op 'Google maps'
Gesponsorde koppelingen
Als je wilt weten hoe je deze class kunt gebruiken, hieronder zie je een paar voorbeelden:
Mocht je vragen en/of opmerkingen hebben dan verneem ik dit graag.
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
<?php
include_once("google_maps.php");
$google = new google_maps;
echo "<br><hr>mijn adres<br>";
// weergave van je adres op google maps
echo $google->show_my_address("nl", "milton street", "101", "boston", "usa");
// map + route beschrijving, in het duits, van amsterdam naar berlijn
echo $google->get_directions("de", "", "", "amsterdam", "nederland", "", "","Berlijn","duitsland");
// map + weergave in het nederlands, van een route beschrijving van adres naar adres...
echo $google->get_directions("nl", "buikslotermeerplein", "110", "amsterdam", "nederland", "buizerdlaan", "15", "hoogeveen", "nederland");
?>
include_once("google_maps.php");
$google = new google_maps;
echo "<br><hr>mijn adres<br>";
// weergave van je adres op google maps
echo $google->show_my_address("nl", "milton street", "101", "boston", "usa");
// map + route beschrijving, in het duits, van amsterdam naar berlijn
echo $google->get_directions("de", "", "", "amsterdam", "nederland", "", "","Berlijn","duitsland");
// map + weergave in het nederlands, van een route beschrijving van adres naar adres...
echo $google->get_directions("nl", "buikslotermeerplein", "110", "amsterdam", "nederland", "buizerdlaan", "15", "hoogeveen", "nederland");
?>
Mocht je vragen en/of opmerkingen hebben dan verneem ik dit graag.
Weet je eigenlijk wel hoe OOP werkt? Ik geloof van niet. Die private variabelen kunnen allemaal weg want je gebruikt geen $this->var.
Ook is je denkwijze van OOP niet goed. Ik raad je aan om de OOP Beginnershandleiding te lezen. Of je zorgt ervoor dat je procedureel beter wordt.
Ook is je denkwijze van OOP niet goed. Ik raad je aan om de OOP Beginnershandleiding te lezen. Of je zorgt ervoor dat je procedureel beter wordt.
Beste Jordi,
google_maps.php is, zoals Wouter al aangaf, een klasse.
Deze eenvoudige klasse heeft twee functies (objecten):
show_my_address en get_directions.
Als je het object show_my_address gebruikt, dan zal er een google map IFrame worden getoond die 1 adres toont.
Als je het object get_directions gebruikt, dan zal er een google map IFrame worden getoond die een route weergeeft met daarop het begin adres (punt A) en het eind adres (punt B).
De klasse heb ik in een kwartiertje gemaakt. De manier waarop je deze kunt benaderen, is door de klasse als volgt in je PHP document op te nemen:
Daarna kun je de klasse op diverse manieren gebruiken.
Je kunt er een web formulier aan koppelen zodat bezoekers zelf een adres en/of route kunnen bekijken, of je kunt er zelf rechtstreeks een adres inzetten.
Overigens : in de klasse zelf wordt gebruik gemaakt van $this om de output terug te sturen naar het object.
google_maps.php is, zoals Wouter al aangaf, een klasse.
Deze eenvoudige klasse heeft twee functies (objecten):
show_my_address en get_directions.
Als je het object show_my_address gebruikt, dan zal er een google map IFrame worden getoond die 1 adres toont.
Als je het object get_directions gebruikt, dan zal er een google map IFrame worden getoond die een route weergeeft met daarop het begin adres (punt A) en het eind adres (punt B).
De klasse heb ik in een kwartiertje gemaakt. De manier waarop je deze kunt benaderen, is door de klasse als volgt in je PHP document op te nemen:
Daarna kun je de klasse op diverse manieren gebruiken.
Je kunt er een web formulier aan koppelen zodat bezoekers zelf een adres en/of route kunnen bekijken, of je kunt er zelf rechtstreeks een adres inzetten.
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$my_street = $google->show_my_address("en", "milton street", "101", "boston", "usa");
echo "<hr>". $my_street ."<hr>";
?>
$my_street = $google->show_my_address("en", "milton street", "101", "boston", "usa");
echo "<hr>". $my_street ."<hr>";
?>
Overigens : in de klasse zelf wordt gebruik gemaakt van $this om de output terug te sturen naar het object.
Jordi, wat betreft de private vars heb je gelijk. Ik had de variabelen ook gewoon als "public" kunnen declareren.
Wat de andere variabelen betreft: deze worden in de variabel $iframe geplaatst die door GoogleMaps wordt gebruikt:
Ik gebruik geen constructie zoals $this->display_language omdat dit voor de klasse niet nodig is ;-)
Wat de andere variabelen betreft: deze worden in de variabel $iframe geplaatst die door GoogleMaps wordt gebruikt:
Code (php)
1
2
3
2
3
<?php
$iframe .= '<br /><a href="https://maps.google.com/maps?saddr='.$my_street.',+'. $my_city.',+'.$my_country.'&daddr='.$dest_street.',+'.$dest_city.',+'.$dest_country .'&ie=UTF8&t=m&hl='.$display_language.'&" target="_blank">';
?>
$iframe .= '<br /><a href="https://maps.google.com/maps?saddr='.$my_street.',+'. $my_city.',+'.$my_country.'&daddr='.$dest_street.',+'.$dest_city.',+'.$dest_country .'&ie=UTF8&t=m&hl='.$display_language.'&" target="_blank">';
?>
Ik gebruik geen constructie zoals $this->display_language omdat dit voor de klasse niet nodig is ;-)
Je snapt nog steeds niet wat ik bedoel. Even een klein voorbeeldje:
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
class Test {
public $publicvar = 1; // van buiten de class defineren
private $privatevar; // van binnen de class defineren
public function testFunction() {
$var = 'test'; // normale variabel defineren
return $var;
}
private function nogEenTest() {
return $this->publicvar;
}
}
$test = new Test;
$test->publicvar = 2; //werkt
$test->privatevar = 'value'; //werkt niet
echo $test->testFunction(); // test
echo $test->nogEenTest(); // 2
?>
class Test {
public $publicvar = 1; // van buiten de class defineren
private $privatevar; // van binnen de class defineren
public function testFunction() {
$var = 'test'; // normale variabel defineren
return $var;
}
private function nogEenTest() {
return $this->publicvar;
}
}
$test = new Test;
$test->publicvar = 2; //werkt
$test->privatevar = 'value'; //werkt niet
echo $test->testFunction(); // test
echo $test->nogEenTest(); // 2
?>
Cynthia, Jordi heeft gelijk. Je maakt onnodig variabelen aan.
Je schrijft in een van jouw bovenstaande reacties:
"Deze eenvoudige klasse heeft twee functies (objecten):
show_my_address en get_directions.
Als je het object show_my_address gebruikt, dan zal er een..."
Een functie is echter totaal iets anders dan een object.
Je schrijft in een van jouw bovenstaande reacties:
"Deze eenvoudige klasse heeft twee functies (objecten):
show_my_address en get_directions.
Als je het object show_my_address gebruikt, dan zal er een..."
Een functie is echter totaal iets anders dan een object.
Beste Ozzie,
Op het moment dat je een functie in een klasse aanroept, is de functie een onderdeel van die klas geworden.
Op dat moment kan je stellen dat de functie een object is geworden. Dat jullie het niet eens zijn met mijn uitwerking van google maps, neemt niet weg dat de klasse precies datgene doet waar ik hem voor gemaakt is.
Wellicht gebruik ik veel parameters (variabelen) die ik heb gedeclareerd, omdat je feitelijk met minder parameters kunt werken maar dat komt omdat ik in het oorspronkelijk script gebruik maakte van postcode + huisnummer.
Alleen wilde ik het script niet tot Nederland beperken en heb ik de werking aangepast aan google maps.
Maar ik ben natuurlijk erg nieuwsgierig hoe jullie dit script zouden uitwerken :-). Dus als jullie zo lief willen zijn ....
Overigens kan je de werking van google_maps.php live in actie zien op mijn heathernova site.
http://www.heathernova.us/maps.php
Groetjes,
Cynthia
p.s. vanwege het internationale karakter van de site is alles in het engels...
Op het moment dat je een functie in een klasse aanroept, is de functie een onderdeel van die klas geworden.
Op dat moment kan je stellen dat de functie een object is geworden. Dat jullie het niet eens zijn met mijn uitwerking van google maps, neemt niet weg dat de klasse precies datgene doet waar ik hem voor gemaakt is.
Wellicht gebruik ik veel parameters (variabelen) die ik heb gedeclareerd, omdat je feitelijk met minder parameters kunt werken maar dat komt omdat ik in het oorspronkelijk script gebruik maakte van postcode + huisnummer.
Alleen wilde ik het script niet tot Nederland beperken en heb ik de werking aangepast aan google maps.
Maar ik ben natuurlijk erg nieuwsgierig hoe jullie dit script zouden uitwerken :-). Dus als jullie zo lief willen zijn ....
Overigens kan je de werking van google_maps.php live in actie zien op mijn heathernova site.
http://www.heathernova.us/maps.php
Groetjes,
Cynthia
p.s. vanwege het internationale karakter van de site is alles in het engels...
Beste Ozzie,
ik zie het niet als een aanval en ik sta altijd open voor kritiek.
De reden dat ik hier een script deel is ten eerste omdat ik graag een ander er een plezier mee doe en ook om wat te leren van de opmerkingen van anderen.
Maar dat neemt niet weg dat ik nieuwsgierig ben naar hoe een ander dit script zou aanpakken....
In ieder geval wil ik nog van de gelegenheid gebruik maken om je fijne feestdagen toe te wensen.
ik zie het niet als een aanval en ik sta altijd open voor kritiek.
De reden dat ik hier een script deel is ten eerste omdat ik graag een ander er een plezier mee doe en ook om wat te leren van de opmerkingen van anderen.
Maar dat neemt niet weg dat ik nieuwsgierig ben naar hoe een ander dit script zou aanpakken....
In ieder geval wil ik nog van de gelegenheid gebruik maken om je fijne feestdagen toe te wensen.
Hoe ik het zou doen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
// ...
$map = new Google\Map('#mapElement');
$map->setChart('terrain');
$map->setCenter(new Google\Position\LatLng(52.4910, 5.15560);
echo $map->render();
// render de kaart op een bepaalde plaats
echo $map->render(new Google\Position\City('Amsterdam'));
// een routebeschrijving
$from = new Google\Position\City('Amsterdam');
$to = new Google\Position\City('Parijs');
$directions = new Google\Position\Route($from, $to);
// toon de map + routebeschrijving
echo $map->render($directions);
?>
// ...
$map = new Google\Map('#mapElement');
$map->setChart('terrain');
$map->setCenter(new Google\Position\LatLng(52.4910, 5.15560);
echo $map->render();
// render de kaart op een bepaalde plaats
echo $map->render(new Google\Position\City('Amsterdam'));
// een routebeschrijving
$from = new Google\Position\City('Amsterdam');
$to = new Google\Position\City('Parijs');
$directions = new Google\Position\Route($from, $to);
// toon de map + routebeschrijving
echo $map->render($directions);
?>
Dan zullen jullie deze versie, denk ik, iets beter vinden:
En dit is hoe je hem kunt gebruiken:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
class google_maps {
public $display_language;
public $my_street;
public $my_house_number;
public $my_city;
public $my_country;
public $dest_street;
public $dest_house_number;
public $dest_city;
public $dest_country;
public function __construct (){
echo "<strong>This is your map</strong>";
}
public function show_my_addres (){
// Show your current location on Google Maps
$google_map = "https://maps.google.com/maps?f=q&source=s_q&hl=".$this->display_language;
$google_map .= "&geocode=&q=".$this->my_street ."+". $this->my_house_number. "+". $this->my_city;
$google_map .= "+".$this->my_country."&ie=UTF8&hq=&hnear=";
$google_map.= $this->my_street ."+".$this->my_house_number."+". $this->my_city."+".$this->my_country ."&t=m&z=14&&output=embed";
// Create the Google Map IFrame + link to full screen
$iframe = '<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="'.$google_map.'"></iframe>';
$iframe .= '<br /><a href="'. $google_map .'" target="_blank">View Full Screen</a><br />';
return $this->show_my_address=$iframe;
}
public function get_directions (){
// Display your route on Google Maps
$google_map = "https://maps.google.com/maps?saddr=";
$google_map.= "+".$this->my_street."+".$this->my_house_number."+".$this->my_city."+".$this->my_country."&";
$google_map .="daddr=".$this->dest_street."+".$this->dest_house_number."+".$this->dest_city."+".$this->dest_country."&ie=UTF8&t=m&&hl=".$this->display_language."&output=embed";
$iframe = '<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="'.$google_map.'"></iframe>';
$iframe .= '<br /><a href="https://maps.google.com/maps?saddr='.$this->my_street.'+'.$this->my_house_number.'+'. $this->my_city.'+'.$this->my_country.'&daddr='.$this->dest_street.$this->dest_house_number.'+'.$this->dest_city.',+'.$this->dest_country .'&ie=UTF8&t=m&hl='.$this->display_language.'&" target="_blank">';
return $this->get_directions=$iframe;
}
public function print_route (){
// display print page for your route on Google Maps
$route = "<a href=\"";
$route .= "https://maps.google.com/maps?f=d&source=s_d&saddr=".$this->my_street."+".$this->my_country."&daddr=".$this->dest_street."+".$this->dest_house_number."+".$this->dest_city.",+".$this->dest_country."&hl=".$this->display_language."&ie=UTF8&t=m&z=9&layer=c&ei=Mb_VUIyxFYLX8gPl5IGQAQ&pw=2";
$route .= "\" target=\"_blank\">Print</a>";
return $this->print_route=$route;
}
}
?>
class google_maps {
public $display_language;
public $my_street;
public $my_house_number;
public $my_city;
public $my_country;
public $dest_street;
public $dest_house_number;
public $dest_city;
public $dest_country;
public function __construct (){
echo "<strong>This is your map</strong>";
}
public function show_my_addres (){
// Show your current location on Google Maps
$google_map = "https://maps.google.com/maps?f=q&source=s_q&hl=".$this->display_language;
$google_map .= "&geocode=&q=".$this->my_street ."+". $this->my_house_number. "+". $this->my_city;
$google_map .= "+".$this->my_country."&ie=UTF8&hq=&hnear=";
$google_map.= $this->my_street ."+".$this->my_house_number."+". $this->my_city."+".$this->my_country ."&t=m&z=14&&output=embed";
// Create the Google Map IFrame + link to full screen
$iframe = '<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="'.$google_map.'"></iframe>';
$iframe .= '<br /><a href="'. $google_map .'" target="_blank">View Full Screen</a><br />';
return $this->show_my_address=$iframe;
}
public function get_directions (){
// Display your route on Google Maps
$google_map = "https://maps.google.com/maps?saddr=";
$google_map.= "+".$this->my_street."+".$this->my_house_number."+".$this->my_city."+".$this->my_country."&";
$google_map .="daddr=".$this->dest_street."+".$this->dest_house_number."+".$this->dest_city."+".$this->dest_country."&ie=UTF8&t=m&&hl=".$this->display_language."&output=embed";
$iframe = '<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="'.$google_map.'"></iframe>';
$iframe .= '<br /><a href="https://maps.google.com/maps?saddr='.$this->my_street.'+'.$this->my_house_number.'+'. $this->my_city.'+'.$this->my_country.'&daddr='.$this->dest_street.$this->dest_house_number.'+'.$this->dest_city.',+'.$this->dest_country .'&ie=UTF8&t=m&hl='.$this->display_language.'&" target="_blank">';
return $this->get_directions=$iframe;
}
public function print_route (){
// display print page for your route on Google Maps
$route = "<a href=\"";
$route .= "https://maps.google.com/maps?f=d&source=s_d&saddr=".$this->my_street."+".$this->my_country."&daddr=".$this->dest_street."+".$this->dest_house_number."+".$this->dest_city.",+".$this->dest_country."&hl=".$this->display_language."&ie=UTF8&t=m&z=9&layer=c&ei=Mb_VUIyxFYLX8gPl5IGQAQ&pw=2";
$route .= "\" target=\"_blank\">Print</a>";
return $this->print_route=$route;
}
}
?>
En dit is hoe je hem kunt gebruiken:
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
$google = new google_maps;
$google->display_language="nl";
$google->my_street="Noorderkade";
$google->my_house_number="1027";
$google->my_city="Alkmaar";
$google->my_country="The Netherlands";
$google->dest_street="Corio Center";
$google->dest_house_number="9";
$google->dest_city="Heerlen";
$google->dest_country="The Netherlands";
$home = $google->show_my_addres();
$route = $google->get_directions();
$print = $google->print_route();
echo "<br />This is where I am right now:<hr>". $home;
echo "<hr><br />And this is my route:<hr>". $route;
echo $print;
?>
$google = new google_maps;
$google->display_language="nl";
$google->my_street="Noorderkade";
$google->my_house_number="1027";
$google->my_city="Alkmaar";
$google->my_country="The Netherlands";
$google->dest_street="Corio Center";
$google->dest_house_number="9";
$google->dest_city="Heerlen";
$google->dest_country="The Netherlands";
$home = $google->show_my_addres();
$route = $google->get_directions();
$print = $google->print_route();
echo "<br />This is where I am right now:<hr>". $home;
echo "<hr><br />And this is my route:<hr>". $route;
echo $print;
?>
Dit betekent dus dat je route in print_rpite gooit en deze returned. Beetje dubbel op dus.
Zie het voorbeeld van wouter dat is een mooi voorbeeld.
Zorg ervoor dat je correct quote zodat je niet hoeft te escapen. Over de naamgeving van de variabelen is het niet verstandig om my_..... te gebruiken. Je hebt het over je eigen adres maar wat nou als ik een willekeurig adres wil zoeken?
Hoi Jordi,
De naamgeving van de variabelen is een kwestie van interpretatie ;-)
Hierbij heeft my_street feitelijk niets te maken met je eigen huis adres.
p.s. de code :
$print = $google_maps->print_route();
Toont de printbare versie van de route in een nieuw venster, als de mensen op "print" klikken.
Je kunt hier natuurlijk ook een afbeelding van een printer gebruiken...
De naamgeving van de variabelen is een kwestie van interpretatie ;-)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$google_maps = new google_maps;
$google_maps->display_language="en";
// Current location
$google_maps->my_street=$_POST['my_street'];
$google_maps->my_city=$_POST['my_city'];
$google_maps->my_country=$_POST['my_country'];
$google_maps->dest_street=$_POST['dest_street'];
$google_maps->dest_city=$_POST['dest_city'];
$google_maps->dest_country=$_POST['dest_country'];
$home = $google_maps->show_my_addres();
$display_directions = $google_maps->get_directions();
$print = $google_maps->print_route();
?>
$google_maps = new google_maps;
$google_maps->display_language="en";
// Current location
$google_maps->my_street=$_POST['my_street'];
$google_maps->my_city=$_POST['my_city'];
$google_maps->my_country=$_POST['my_country'];
$google_maps->dest_street=$_POST['dest_street'];
$google_maps->dest_city=$_POST['dest_city'];
$google_maps->dest_country=$_POST['dest_country'];
$home = $google_maps->show_my_addres();
$display_directions = $google_maps->get_directions();
$print = $google_maps->print_route();
?>
Hierbij heeft my_street feitelijk niets te maken met je eigen huis adres.
p.s. de code :
$print = $google_maps->print_route();
Toont de printbare versie van de route in een nieuw venster, als de mensen op "print" klikken.
Je kunt hier natuurlijk ook een afbeelding van een printer gebruiken...
Om te reageren heb je een account nodig en je moet ingelogd zijn.
PHP hulp
0 seconden vanaf nu