Google maps

Door Cynthia Fridsma, 2 jaar geleden, 7.832x 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

  1. google_maps.php

 

Er zijn 17 reacties op 'Google maps'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Cynthia Fridsma
cynthia Fridsma
2 jaar geleden
 
Als je wilt weten hoe je deze class kunt gebruiken, hieronder zie je een paar voorbeelden:

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
<?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");
?>


Mocht je vragen en/of opmerkingen hebben dan verneem ik dit graag.
Jordi Kroon
Jordi Kroon
2 jaar geleden
 
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.
Wouter J
Wouter J
2 jaar geleden
 
0 +1 -0 -1
Jordi, dit is geen OOP maar gewoon een klasse.
Cynthia Fridsma
cynthia Fridsma
2 jaar geleden
 
0 +1 -0 -1
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
include_once("google_maps.php");

$google = new google_maps;
?>


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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
return $this->show_my_address=$iframe;
?>
Jordi Kroon
Jordi Kroon
2 jaar geleden
 
0 +1 -0 -1
Daar kun je dan beter return $iframe; van maken.

Nog steeds blijven de private vars onnodig. Je stopt niks in $this->display_language en de andere variabelen.
Cynthia Fridsma
cynthia Fridsma
2 jaar geleden
 
0 +1 -0 -1
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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&amp;hl='.$display_language.'&" target="_blank">';
?>


Ik gebruik geen constructie zoals $this->display_language omdat dit voor de klasse niet nodig is ;-)
Jordi Kroon
Jordi Kroon
2 jaar geleden
 
0 +1 -0 -1
Je snapt nog steeds niet wat ik bedoel. Even een klein voorbeeldje:


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
<?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
?>
Ozzie PHP
Ozzie PHP
2 jaar geleden
 
0 +1 -0 -1
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.
Cynthia Fridsma
cynthia Fridsma
2 jaar geleden
 
0 +1 -0 -1
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...
Ozzie PHP
Ozzie PHP
2 jaar geleden
 
0 +1 -0 -1
Het is geen aanval Cynthia, dus het is ook niet nodig om je te "verdedigen". Er worden alleen wat verbeterpunten aangereikt. En hoe je het ook wendt of keert, een functie is nooit een object ;)
Cynthia Fridsma
cynthia Fridsma
2 jaar geleden
 
0 +1 -0 -1
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.
Ozzie PHP
Ozzie PHP
2 jaar geleden
 
Oké. En dankjewel. Jij ook!
Wouter J
Wouter J
2 jaar geleden
 
Hoe ik het zou doen:
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
<?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);
?>
Cynthia Fridsma
cynthia Fridsma
2 jaar geleden
 
0 +1 -0 -1
Dan zullen jullie deze versie, denk ik, iets beter vinden:

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
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&amp;source=s_q&amp;hl=".$this->display_language;
        $google_map .= "&amp;geocode=&amp;q=".$this->my_street ."+". $this->my_house_number. "+". $this->my_city;
        $google_map .= "+".$this->my_country."&amp;ie=UTF8&amp;hq=&amp;hnear=";
        $google_map.= $this->my_street ."+".$this->my_house_number."+". $this->my_city."+".$this->my_country ."&amp;t=m&amp;z=14&amp;&amp;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."&amp;";
        $google_map .="daddr=".$this->dest_street."+".$this->dest_house_number."+".$this->dest_city."+".$this->dest_country."&amp;ie=UTF8&amp;t=m&amp;&amp;hl=".$this->display_language."&amp;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&amp;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)
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
<?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;
?>
Jordi Kroon
Jordi Kroon
2 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
return $this->print_route=$route;
?>


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?
Cynthia Fridsma
cynthia Fridsma
2 jaar geleden
 
0 +1 -0 -1
Hoi Jordi,

De naamgeving van de variabelen is een kwestie van interpretatie ;-)

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
<?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();
?>


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...
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Robert Anoniem
Robert Anoniem
2 jaar geleden
 
0 +1 -0 -1
cynthia,

bedankt voor je script. Ik zal het zeker gaan gebruiken. Ik heb nog 2 vragen:

- Hoe zorg ik dat ik bij get_directions ik meer dan 2 bestemming kan kiezen? maar dan zonder route.

- Hoe zorg ik dat het beeld zover uitzoomt dat je alle plekken kunt zien?

Gr. Robert

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. google_maps.php

Labels

Navigatie