Finding nearest locations using Google Maps API

Geoplex picture Geoplex · May 15, 2013 · Viewed 53k times · Source

Hi I'm writing an app that shows the bike stations near an address. I have the list of latitude and longitude locations of each bike station from a service.

I can mark my current location, or any address so far. How do I show all the bike stations near my location on map. Do I first get nearest Google places from the current location and then access the database for bike location and make markers on the map? What is the best approach?

Answer

MrUpsidown picture MrUpsidown · May 15, 2013

If you already have the coordinates of your bike stations and if you trust this data, then just use it to draw your markers. Now you have to define what "near" means.

You have different solutions for this. Either you choose to draw the markers for all the bike stations within the map bounds (but that could be many markers to draw depending on the zoom level, or you have to prevent your script from drawing the markers before a certain zoom level is reached) or you can draw the markers within n kilometers around a location (can be the user location, the map center coordinates, etc.).

For the second solution, and if you are storing your bike stations in a MySQL database, you could do a query like that:

$sql = "SELECT *, ( 6371 * acos( cos( radians(" . $db->real_escape_string($lat) . ") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(" . $db->real_escape_string($lng) . ") ) + sin( radians(" . $db->real_escape_string($lat) . ") ) * sin( radians( lat ) ) ) ) AS distance FROM your_table_name HAVING distance < 15";

$lat and $lng being your center coordinates

lat and lng being your MySQL column names

15 being the radius (in km) around your coordinates

This uses the Haversine formula. Good information can be found here.

Hope this helps, but we don't really know how you organized your data in your app. Give us more info if you need more help on this!