1

似乎我需要在浏览器的客户端运行一个函数,然后将纬度和经度发送到服务器,例如,ajax 调用然后使用响应数据将其反映在页面上?因此,为此我需要在服务器端添加一个新端点来管理此类请求?当用户加载某个页面时,是否可以从传入请求中获取该数据?

4

2 回答 2

1

正如您自己所说,地理位置在客户端以 Javascript 运行。当对您的服务器的第一个请求已经完成时,这将被执行,HTML 被传递给客户端并执行 Javascript。所以不,不可能在第一个请求中使用地理位置数据,因为这些数据稍后会被执行。

您在初始请求中可以做的是使用用户的 IP 来获得至少一个大概的地理位置。我认为总的来说这是一个很好的做法,因为用户可能会拒绝或干脆忽略向您的网站提供地理位置数据。使用基于 IP 的方法,您至少可以拥有一个备用解决方案。

于 2013-04-26T06:49:05.333 回答
1

对于地理定位,您有两种解决方案。

一种是 HTML5 地理定位 API。如果存在(您可以使用 Modernizr 进行检查),请将位置数据(整个location对象)连同用户 ID 或其他内容一起发送到服务器上的 ajax 脚本。

如果用户拒绝 HTML5 地理定位或使用旧浏览器,只需再次使用您的 ajax 端点,但使用空位置对象。在服务器端检查它,如果为空,则检查标头中的传入 IP,然后使用 GeoIP 数据库定位您的用户(大约 40 公里的精度)。

这样你就有了一个客户端 js 和一个服务器端 ajax 脚本,它们一起工作以或多或少准确地定位你的用户,但总是定位;)

编辑:如果您希望在第一页加载时传入地理位置,只需从请求标头中获取传入 IP,使用 GeoIP 并获取您的用户地理位置;-)

于 2013-04-26T06:54:38.077 回答