店铺表有一个经度字段,一个纬度字段,用来存储所在位置。先需要根据当前位置的经度与纬度来获取附近10公里内的店铺。故需要将计算距离的逻辑封装成一个function。
函数定义及参数说明如下:
-- curLat 当前纬度 -- curLon 当前经度 -- shopLat 店铺纬度 -- shopLon 店铺经度 CREATE FUNCTION getDistance(curLat DOUBLE, curLon DOUBLE, shopLat DOUBLE, shopLon DOUBLE) RETURNS DOUBLE BEGIN DECLARE dis DOUBLE; set dis = ACOS(SIN((curLat * 3.1415) / 180 ) * SIN((shopLat * 3.1415) / 180 ) + COS((curLat * 3.1415) / 180 ) * COS((shopLat * 3.1415) / 180 ) * COS((curLon * 3.1415) / 180 - (shopLon * 3.1415) / 180 ) ) * 6380 ; RETURN dis; END;
相关推荐
在MySQL中,我们可以创建一个用户自定义函数(UDF)来实现这个计算。以下是一个示例的SQL函数: ```sql DELIMITER // CREATE FUNCTION haversine(lat1 DECIMAL(10,8), lng1 DECIMAL(11,8), lat2 DECIMAL(10,8), lng...
首先,你需要创建一个具有GIS类型(如`POINT`)的列,然后可以使用`ST_Distance_Sphere`函数来计算距离。以下是一个例子: ```sql CREATE TABLE locations ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50...
这个PHP脚本首先建立到MySQL数据库的连接,然后准备一个SQL语句用于插入经纬度数据,接着执行该语句并将返回的信息反馈给前端。 总结来说,通过jQuery的Geolocation API获取用户设备的经纬度,然后使用Ajax将这些...
例如,你可以创建一个表来存储地点信息,包括名称、地址、经纬度等字段。通过PHP连接到数据库,执行查询并返回结果,然后在JavaScript中使用这些数据创建地图元素。 总的来说,Google Maps API与PHP和MySQL的结合为...
这个函数首先构建了计算距离的SQL片段,然后在查询中使用它来过滤出符合条件的用户,并按距离排序。 ### 性能优化与注意事项 1. **索引优化**:为了提高查询效率,可以在lat和lng字段上创建复合索引,以加速距离...
首先,我们需要创建一个数据库和数据表来存储地图上的标记信息。在MySQL中,可以执行以下SQL语句: 1. 创建数据库: ```sql CREATE DATABASE maps; ``` 2. 创建名为`markers`的数据表: ```sql CREATE TABLE `...
一个新手入门级别的java web应用 非常简陋,至于有多简陋,如果你不小心看了,还请不要骂我 框架 前端没有用框架,采取最简单的Jquery+ajax方式来进行交互 UI库使用的是Bootstrap 后端服务器端使用Java开发 地图 ...