I have recently completed some custom Salesforce.com / Google Maps mash-ups for clients and have made some improvements to the whole integration.
First, it has been updated to utilize the Salesforce.com PHP5 Toolkit. Performance is improved from the nusoap toolkit. Also, if you are running a PHP 5 version after 5.1.2, the toolkit supports compression, which is great.
Second, I found a really good Google Maps PHP class that allows for additional functionality beyond what Phoogle provides. The adapter I am using now is by Monte Ohrt from phpnsider.com. You can get it here. I had to make a couple changes to it, but those changes should be going into his next release. Some of the improved functionality this adapter provides is:
- Ability to use Yahoo! or Google Geocoder APIs: Yahoo! currently supports the US only. Google supports many countries such as United States, Canada, China, Japan, the UK, France, Germany, Italy, and Spain. I have been opting for the Google API, but both work well.
- Include a sidebar that lists the returned records: Clicking on a sidebar link pops up the corresponding map marker
- Caching of Geocode lookups. Cache your successful lookups to a MySQL database for faster retrieval the next time you Geocode it. This is an optional feature.
- Auto centers the map based upon the map markers placed on it
- Better error handling.
- Has all the same functionality as Phoogle, so I didn’t lose anything in the transition
I put up a new demo of it in action. For this demo, I decided to get a little fancier and show how a form can drive the results returned in the map. My clients typically want the querying capabilities to be dynamic, so adding forms is common. This demo has a very simple form to demonstrate the capabilities. However, for some of projects, I am building forms dynamically based upon the metadata in the Salesforce.com org. Pretty cool!
If you are interested in this functionality being customized for your organization, please visit the product page on the Arrowpointe website and complete the form on that page.