I wanted to add a map feature to http://www.shelfreliancepro.com but had no budget to pay for map apis or libraries. The solution I found was http://nominatim.openstreetmap.org and http://leafletjs.com/. Nominatim allows you to do all kind of geo-locating, address queries, and location queries. Leaflet is a simple map interface for plotting points. Leaflet works very well on mobile devices.
When users would update or add an address to the system, I would mark the address so I knew it needed to have it’s latitude and longitude updated via nominatim. I run a scheduled task every 10 minutes to find addresses that need an update and update them.
Here’s how it turned out: