Javascript Laravel-获取视图中的位置,并使用它对同一视图中的帖子进行排序
当用户进入我的网站时,他访问的路径是Javascript Laravel-获取视图中的位置,并使用它对同一视图中的帖子进行排序,javascript,php,laravel,coordinates,laravel-blade,Javascript,Php,Laravel,Coordinates,Laravel Blade,当用户进入我的网站时,他访问的路径是'/',控制器是@getDashboard,视图是dashboard.blade.php。在dashboard.blade.php中,我使用html5地理定位来确定用户lat&lng,然后我将他们发送到@getDashboard,从那里我决定应该向哪个用户显示哪些帖子示例: 若用户在克罗地亚境外,我不希望他看到克罗地亚的帖子。显然,这不起作用,因为在发送lat和lng之前,我已经加载了仪表板。 我已经想出了一些解决方案,但我想让你告诉我哪一个是最好的,或者它是
'/'
,控制器是@getDashboard
,视图是dashboard.blade.php
。在dashboard.blade.php
中,我使用html5地理定位来确定用户lat&lng,然后我将他们发送到@getDashboard
,从那里我决定应该向哪个用户显示哪些帖子示例:若用户在克罗地亚境外,我不希望他看到克罗地亚的帖子。显然,这不起作用,因为在发送lat和lng之前,我已经加载了仪表板。
我已经想出了一些解决方案,但我想让你告诉我哪一个是最好的,或者它是否有效 可能的解决办法:
- 视图中按lat和lng排序的Javascript
- 优点:可以
- 缺点:这意味着我将加载世界上所有的帖子,然后决定显示/隐藏哪个帖子
- 在
之前加载并自动将lat&lng提交到'/'
@getDashboard
- 优点:不会加载所有内容
- 缺点:Dosen似乎不是一个好的解决方案,而且如果一个人离开克罗地亚,在我的网站完全刷新之前,程序不会知道这一点
谢谢。所以你的html5地理位置应该给你横向和纵向坐标。。。现在,每个帖子都需要一个纬度和纵向坐标来进行比较 问题是精确的坐标不起作用,所以你需要用数学方法将物体转换成半径
lat=asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc))
IF (cos(lat)=0)
lon=lon1 // endpoint a pole
ELSE
lon=mod(lon1-asin(sin(tc)*sin(d)/cos(lat))+pi,2*pi)-pi
ENDIF
您还需要设置可以看到“帖子”的最大半径,并测试用户半径是否与帖子半径相交。在您的情况下,我会使用IP来确定用户来自哪个国家。您好,是的,但国家只是一个示例,我需要非常精确的位置,这就是为什么我不使用dazzlepod json或类似的东西,很抱歉没有提到这一点。我建议加载视图空白,然后像Facebook那样使用XHR加载帖子。我认为这是适合你的解决方案。你不能在页面呈现和位置确定后使用ajax加载帖子吗?嗨@RobertoGeuke,这似乎是一个不错的解决方案,但对于从未使用过ajax的人来说会不会太复杂?嗨,谢谢你的回答,我知道如何比较帖子坐标和会话坐标,但我想知道如何将会话坐标发送给控制我获取的会话坐标页面的控制器,因此问题不在于如何比较它们,而是如何显示它们?无论如何,谢谢你,这看起来很有用。你最好的办法就是使用谷歌地图API本例将向您展示如何获得基本地理位置坐标。您可能希望在post editor中创建一个地图,该地图允许您单击一个位置以设置标记并存储坐标。返回该值时,需要将其转换为半径或其他形式的边界框。几何图形库是您的最佳选择。