how to find nearby places

Hello,

I need to view all the notable places may be around some 10 kilometers using my current place latitude and longitude.

I had searched but got ans as getting places from DB, but am not looking for it.

If any one can help me , it will be great for me. :(

waiting…

Thnx.

Create a "DISTANCE_GPS" function in mysql:




CREATE FUNCTION `DISTANCE_GPS`(`lat1` DOUBLE, `lon1` DOUBLE, `lat2` DOUBLE, `lon2` DOUBLE) RETURNS double

    NO SQL

BEGIN

  DECLARE dist    DOUBLE;

  DECLARE latDist DOUBLE;

  DECLARE lonDist DOUBLE;

  DECLARE a,c,r   DOUBLE;


  

  SET r = 6371000;

  

  

  SET latDist = RADIANS( lat2 - lat1 );

  SET lonDist = RADIANS( lon2 - lon1 );

  SET a = POW( SIN( latDist/2 ), 2 ) + COS( RADIANS( lat1 ) ) * COS( RADIANS( lat2 ) ) * POW( SIN( lonDist / 2 ), 2 );

  SET c = 2 * ATAN2( SQRT( a ), SQRT( 1 - a ) );

  SET dist = r * c;  

  

  RETURN dist;

END



and the use it:




SELECT DISTANCE_GPS(43.1, 12.3, gps_lat, gps_long) FROM mytable



where gps_lat and gps_long are two fields from mytable and 43.1,12.3 is a gps position.

Hello fab,

First of all thanks for the response.

I want to view nearby places which around one latitude and longitude, like how the google map views. I have only one place lat & lang in my table "Geo". using that I want to view places which is near to that lat & lang.

(Am using php+mysql phpmyadmin)(Yii2)

Thnx.

Using DISTANCE_GPS function, you can apply a condition such as:




SELECT * FROM mytable WHERE DISTANCE_GPS( 43.1, 12.3, gps_lat, gps_long) < 50



where 50 (in kilometers) is comparing distance.

If you don’t mind can you tell me where do I put that gps function?? am new to this.

Am using php yii2 framework.

You have to write that code sql code inside mysql db, so you will have DISTANCE_GPS available for next SELECT calls.

Hi,

I could not create function so I had created procedure am getting some numbers dont no what to do with it and how it helps me to find nearby places. please explain.

I called procedure

 call distance_gps( 43.1, 12.3, 8.803980200000002, 78.1436599 )


 Ans : 7386740.627661293

If you get an answer, you have created a function. :)

DISTANCE_GPS function accepts 4 parameters : lat1, lon1, lat2, lon2,

where lat1 and lon1 are latitude and longitude of first point and lat2 and lon2 are latitude and longitude of second point.

Fab,

Rather function I had created procedure, when I called I get some number which I have mention in previous reply, Using that how do I print or echo Near by places names and one more thing while calling procedure how do I use condition (>50).

Thanku for your responses fab.

Thnx,

You have to build a sql based on that function (DISTANCE_GPS) applying a filter based on max distance.

Post some code if it is not clear.