sfEasyGMapPlugin icon indicating copy to clipboard operation
sfEasyGMapPlugin copied to clipboard

The sfEasyGMap plugin provides helpers and an objet-oriented PHP abstraction to the Google Maps API to ease the process of adding a Google Map and customising it in your symfony projects.

sfEasyGMapPlugin

The sfEasyGMap plugin provides helpers and an objet-oriented PHP abstraction to the Google Maps API to ease the process of adding a Google Map and customising it in your symfony projects.

Installation

  • Install the plugin

    $ symfony plugin:install sfEasyGMapPlugin (Not tested)
    
    or in your plugins directory:
    
    $ svn co http://svn.symfony-project.com/plugins/sfEasyGMapPlugin/branches/v3 sfEasyGMapPlugin
    
  • Optional: enable the sample module in your settings.yml, sfEasyGMapPlugin

        [php]
        all:
          .settings:
            enabled_modules:      [default, sfEasyGMapPlugin]
    
  • Optional: the v3 version still needs an API key for some functionalities, like Geocoding. Add the following lines in your app.yml file

        [php]
        all:
          google_maps_api:
            keys:
              www.yourdomain.com: 'google_key1'
              localhost:          'google_key2'
              default:            'google_key3'
    

    Keys are obtained here: http://code.google.com/intl/fr/apis/maps/signup.html

  • Clear your cache

    $ php symfony cc
    

Examples

All samples are available in the sfEasyGMapPlugin module of the plugin (/sfEasyGMapPlugin/index)

IMPORTANT ! The javascript in the samples will not work unless you put the js files in your web directory.

    $ ln -s ../plugins/sfEasyGMapPlugin/web web/sfEasyGMapPlugin
    
    or use the symfony command :
    $ php symfony plugin:publish-assets 
  • Sample 1

    Add some markers on a map, using longitudes and latitudes

    • In the action:

        $this->gMap = new GMap();
        $this->gMap->addMarker(new GMapMarker(51.245475,6.821373));
        $this->gMap->addMarker(new GMapMarker(46.262248,6.115969));
      
    • In the template:

        <?php use_helper('Javascript','GMap') ?>
      
        <?php include_map($gMap,array('width'=>'512px','height'=>'400px')); ?>
      
        <!-- Javascript included at the bottom of the page -->
        <?php include_map_javascript($gMap); ?>
      
  • Sample 2

    Geocode some addresses and open an info window if the user clicks on a marker

    • In the action:

        $this->gMap = new GMap();
      
        // some places in the world
        $addresses = array(
          'Graf-Recke-Strasse 220 - 40237 Düsseldorf',
          'Avenue des sports 01210 FERNEY-VOLTAIRE - FRANCE',
          '44 boulevard Saint-Michel, Paris',
          'Route Saclay 91120 Palaiseau',
          'Rämistrasse 101, Zürich'
        );
      
        foreach ($addresses as $address)
        {
          $geocoded_address = $this->gMap->geocode($address);
          $gMapMarker = new GMapMarker($geocoded_address->getLat(),$geocoded_address->getLng());
          $gMapMarker->addHtmlInfoWindow('<b>Address:</b><br />'.$address);
          $this->gMap->addMarker($gMapMarker);
        }
      
    • In the template:

        <?php use_helper('Javascript','GMap') ?>
      
        <?php include_map($gMap,array('width'=>'512px','height'=>'400px')); ?>
      
        <!-- Javascript included at the bottom of the page -->
        <?php include_map_javascript($gMap); ?>
      

TODO

  • correct javascript files that suppose that the map's javascript object is called 'map'
  • add support for EncodedLines
  • add support for custom zoom and move controls
  • add support for Directions
  • add support for Labeled markers