7

i am new to Google map things. i have a table in which there are list of all the location( the location of super stores) with their Latitude and Longitude .

Now i want to know all possible location(may b Latitude and Longitude ) of these super stores that are within 10km radius of my current location.

I have no idea how i can do this using Google map (in php code). What Google map API should i used ? Any suggestion ,project code, information will be helpful for me

Thanks in Advance

Ahsan aslam
  • 1,149
  • 2
  • 16
  • 35

4 Answers4

16

See Radius search with Google Maps and MySQL

Saul Martínez
  • 920
  • 13
  • 28
10

You can Use Following Query of Mysql to get all stores within specified miles

select * from stores where lat!='' and lng!='' and ( 3959 * acos( cos( radians(" . $centerpoints['lat'] . ") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(" . $centerpoints['lng'] . ") ) + sin( radians(" . $centerpoints['lat'] . ") ) * sin( radians( lat ) ) ) ) < " . $distanceInMile
Santosh Yadav
  • 460
  • 6
  • 8
7

https://developers.google.com/maps/articles/phpsqlsearch_v3 Have a look at above. Should give you a good idea.

To find locations in your markers table that are within a certain radius distance of a given latitude/longitude, you can use a SELECT statement based on the Haversine formula. The Haversine formula is used generally for computing great-circle distances between two pairs of coordinates on a sphere. An in-depth mathemetical explanation is given by Wikipedia and a good discussion of the formula as it relates to programming is on Movable Type's site.

Here's the SQL statement that will find the closest 20 locations that are within a radius of 25 miles to the 37, -122 coordinate. It calculates the distance based on the latitude/longitude of that row and the target latitude/longitude, and then asks for only rows where the distance value is less than 25, orders the whole query by distance, and limits it to 20 results. To search by kilometers instead of miles, replace 3959 with 6371.

xelber
  • 4,197
  • 3
  • 25
  • 33
0
function getLatLong(lat, lng, radius) {
  const earth = 6371 // earth radius in miles
  const maxLat = ((lat + Math.PI / 2) * 180) / Math.PI
  const minLat = ((lat - Math.PI / 2) * 180) / Math.PI
  const maxLng = ((lng + (Math.PI * radius) / earth) * 180) / Math.PI
  const minLng = ((lng - (Math.PI * radius) / earth) * 180) / Math.PI
  return {
    maxLat: maxLat,
    minLat: minLat,
    maxLng: maxLng,
    minLng: minLng,
  }
}
  • 2
    Your answer could be improved with additional supporting information. Please [edit] to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Community Jan 16 '22 at 18:28
  • This doesn't appear to be PHP or make use of the Google Map APIs. – Quentin Mar 08 '22 at 10:27
  • 1
    This is incorrect, as your max/minLat isn't using the radius variable, hence is simply adding an arbitrary distance (which is very large as i tested it). – Michael Tran May 10 '22 at 07:36