Query nearby location information based on longitude and latitude

Source: Internet
Author: User
I want to query the five locations in the vicinity of two kilometers in the data table based on the longitude and latitude of the current location, if the query result does not have five locations, I want to expand the nearby range until the five locations are queried. I have come up with two solutions: the first solution is to use SQL statements completely... I want to query the five locations in the vicinity of two kilometers in the data table based on the longitude and latitude of the current location, if the query result does not have five locations, I want to expand the nearby range until the five locations are queried. I have come up with two solutions:

The first solution is to use SQL statements completely. if you use SQL statements completely, I don't know how to write this SQL statement,

The second solution is to first query and then judge in business integration. if five locations are not met, expand the nearby range and query again in the database until five locations are queried.

I don't know the efficiency of these two solutions. please give me some suggestions. Grateful.

Reply content:

I want to query the five locations in the vicinity of two kilometers in the data table based on the longitude and latitude of the current location, if the query result does not have five locations, I want to expand the nearby range until the five locations are queried. I have come up with two solutions:

The first solution is to use SQL statements completely. if you use SQL statements completely, I don't know how to write this SQL statement,

The second solution is to first query and then judge in business integration. if five locations are not met, expand the nearby range and query again in the database until five locations are queried.

I don't know the efficiency of these two solutions. please give me some suggestions. Grateful.

You cannot understand either of the two solutions.

Can't you simplify your logic first?

Your requirement is not equal to: query the last five locations. Why is it two kilometers or two kilometers away.

If you want to query the last five points, why do you need to consider the business judgment? can you simply use a Limit statement?

The second solution is feasible. it is fully implemented using SQL, which puts a lot of pressure on the database, and the efficiency of separate execution between the data layer and the business layer is high.

You need AutoNavi LBS cloud to meet your needs.

Try mysql's spatial coordinate database,

Create table 'SPA' ('id' int (11) not null AUTO_INCREMENT, 'name' varchar (32) default null, 'loc 'point default null, /* ^ ---------------------------------- save the latitude and longitude */primary key ('id '))
/* Query */SELECT * FROM spa where distance (POINT ($ current longitude, $ current latitude), loc) <($ DISTANCE (in meters)/111195) LIMIT 5; /* ^ ----- unit: degree ^ --- 1 degree */

If you want to sort, you can order distance.

You need to use GEOHASH to convert two-dimensional coordinates into strings and then compare

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.