我在 Laravel 5.2 开发了项目。我有这样的数据库结构:
user_visited
id | user_id | latitude | longitude
01 | 1 | 140.5938388 | 36.3335513
02 | 1 | 140.2631739 | 36.3724621
03 | 1 | 140.0804782 | 36.083233
04 | 1 | 140.0855777 | 36.1048973
05 | 1 | 140.2215081 | 35.981243
06 | 1 | 140.577927 | 36.3114456
07 | 1 | 140.65826 | 36.6068145
08 | 1 | 140.109301 | 36.0865606
09 | 1 | 140.2055252 | 35.926693
10 | 1 | 139.7540075 | 36.1662458
11 | 1 | 140.2637594 | 36.241148
12 | 1 | 139.8043185 | 36.1115211
13 | 1 | 140.2183821 | 36.0601167
14 | 1 | 139.7540075 | 36.1662458
15 | 1 | 140.0309725 | 36.0381176
lcoations
id | Location name | Type | Address | Latitude | Longitude
31 | Murse Park | Theme Park | 552-18 | 140.6066128 | 36.3985857
32 | Dom Park | Theme Park | 552-12 | 140.6417064 | 36.5436575
33 | Football Park | Theme Park | 588-1 | 140.3690094 | 36.4195418
34 | Istanbul Park | Theme Park | 37 | 140.3330587 | 36.5449685
这是用户的位置记录,来自移动应用,每隔n
秒获取一次位置信息。
根据用户访问过的位置记录,我想知道用户最常访问的位置。怎么做?
事实是,用户可以访问相同的位置,但经度和纬度并不完全相同。
也许我们必须设置半径500毫米或什么?
如何查询?
答案 0 :(得分:0)
回答,以便有人获得帮助。 根据地理位置,如果纬度和经度的精度在5到6之间相似,我们可以认为该位置相同。 假设某处的经纬度(140.5938388,36.3335513)和用户访问经度和纬度(140.59383723,36.33355213)的地方,然后通过查询精度为5即(140.59383,36.33355),我们得到了位置存在,计算这些位置/位置将为您提供经常访问的位置。
编辑:
SELECT count(location_name) FROM locations
LEFT JOIN user_visited ON TRUNCATE(user_visited.latitude,5) = TRUNCATE(locations.latitude,5) AND TRUNCATE(user_visited.longitude,5) = TRUNCATE(locations.longitude,5)
WHERE user_visited.user_id = 1