20 Dec

Now Decorate while you Bake

CakePHP, Latest Developments

You can use this project called ‘Decorate‘, to add various features to your CakePHP baking process which are not available with this version of bake.php.

It can add 3 important features for you:
1. Pagination (very handy)
2. filtering(search)
3. complex sort

Also take a look at a detailed explanation here.

19 Dec

GoogleMap Helper for CakePHP

CakePHP, Latest Developments

I found CakePHP to be helpful with a lot of things and I loved the fact that anyone can reuse any classes made in PHP using 'vendors' in CakePHP. We recently wrote a CakePHP helper for generating map in CakePHP application.

The helper uses Google Maps API V2 class from phpinsider.com.

To begin with, just download the class and place them inside 'vendors' folder.

Here's the code for the helper: map.php

PHP:
  1. <?php
  2. class MapHelper extends Helper
  3. {
  4.  
  5.     var $helpers = array('Html');
  6.  
  7.     function displaymap($locations=false,$width=500,$height=500)
  8.     {
  9.         vendor('GoogleMapAPI.class');
  10.         $map = new GoogleMapAPI('map');
  11.         if($locations)
  12.         foreach($locations as $location)
  13.         {
  14.             $map->addMarkerByAddress( $location['address'],strip_tags($location['title']), $location['title'])//adds address to showup in Map
  15.         }
  16.         else
  17.         {
  18.             $map->setCenterCoords(-96.67,40.8279);   // if no locations are passed in function, then focus on US
  19.             $map->setZoomLevel(3);
  20.         }
  21.  
  22.         $map->setWidth($width);
  23.         $map->setHeight($height);
  24.         $map_content=$map->getHeaderJS().$map->getMapJS().$map->getMap();
  25.         return $this->output($map_content);
  26.     }
  27. }
  28. ?>

Here's the code for the view (index.thtml in my case): index.thtml

PHP:
  1. <? php
  2. // initialization of $my_locations array to show in map
  3. $my_locations=array();
  4. $my_locations[1]['address']='621 N 48th St # 6 Lincoln NE 68502';
  5. $my_locations[1]['title']='PJ Pizza';
  6.  
  7. $my_locations[2]['address']='826 P St Lincoln NE 68502';
  8. $my_locations[2]['title']='<b>PJ Pizza</b>';
  9.  
  10. echo $map->displaymap($my_locations,500,500); ?>
  11. <script type="text/javascript">onLoad();</script>

30 Nov

Google Maps API with UK data

Articles, Latest Developments

While working on a real estate CMS, I realized that Google Maps API is having some legal issues in providing geocode data for UK, Japan or China. The call to API is failed with code 603 (G_GEO_UNAVAILABLE_ADDRESS) indicating that legal or contractual reasons prevent Google from returning the information. At first, I realized that we might have to drop the idea of Google Maps, but after a quick test with Yahoo Maps, i found Yahoo to be working fine with UK.

I never wanted to use Yahoo Maps, so i come up with this solution:

In order to run Google Maps for UK, you have to extract geocodes using Yahoo API, and then pass same geocodes to Google Maps.

Here's the Yahoo URL which return the geocode:

http://api.local.yahoo.com/MapsService/V1/geocode?appid=[your_app_id]&location=6%20Salisbury%20Square,%20LONDON

Just call Yahoo API for the data at place where you're requesting google.com, and pass on the geocodes to GoogleMap. And you're done !!

I found out a lot of people asking about this, so I decided to write a small post here, if anything needed in details, please post your comments.