SELECT * FROM LOCATIONS(表名)WHERE USERS BETWEEN STARTING POINT(输入的起点纬度和输入的起点经度)AND ENDING POINT(输入的终点纬度和输入的终点经度);例如:用户XXX输入了起点(InputedStartlatitude = 18.9647 和InputedStartlongitude = 72.8258)是孟买,终点(InputedEndlatitude = 18.9647 和 InputedEndlongitude = 72.8258)是德里。现在他想要搜索在这条输入的路线(行驶方向)上有多少个用户,使用Inutedlatitudes和Inputedlongitudes进行搜索。搜索查询将被发送到mysql数据库,并从存储的起点和终点纬度和经度中进行比较,这些起点和终点位于孟买到德里之间。
我找到了一种解决方法,就是向数据库提出以下查询: ```SELECT * FROM LOCATIONS WHERE StartLatitude >= InputedStartlatitude AND StartLongitude >= InputedStartlongitude AND EndLatitude <= InputedEndlatitude AND EndLongitude <= InputedEndlongitude;```
SELECT * FROM lOCATIONS(tablename) WHERE (InputStartLatitude >= StartLatitude and IntartLongitude >= StartLong) and (InputEndLatitude <= EndLatitude and InuteEndLongitude <= EndLongitude);
但是我在上面的查询中遇到了一些问题。 以下是一些地方的坐标,请看:
起始和结束坐标以红色显示。起点是:Porbandar,终点是:孟买。现在问题在于,当我尝试搜索Porbandar到Mumbai之间的城市时,由于我的查询,实际上在驾驶方向上并不是所有城市都出现。我在查询中只调用了那些经度和纬度大于起始经度和纬度且小于终点经度和纬度的城市。但是在这里,孟买的经度和纬度几乎比所有城市都要小。那么我该如何制作正确的搜索查询?
希望我已经很好地解释了上述情况。
任何回复都对我非常有帮助。
我正在使用php-mysql作为后端和Android作为客户端。
BETWEEN
的含义吗?您是否正在寻找位于起点和终点之间的大圆路线路径内30公里范围内的地点?您是否正在寻找位于由起点和终点定义的纬度-经度边界框内的地点?您的起点和终点是否足够接近,以使通过纬度-经度的线性插值确定的路径是足够的近似(在印度可能是真实的,但在挪威不是)?请澄清您的问题。 - O. Jones