在Gmap中,我们可以通过传递自定义的纬度和经度来标记所需的位置。
有什么方法可以添加标记以映射到用户的当前位置。
有没有一种方法可以获取用户的纬度和经度?
有人做过吗?
请分享您的想法?
最佳答案
您需要确定用户的IP地址,然后将其提供给某些IP地理位置工具/ API,以获取经度/纬度的地理位置。最后,将此信息用于您的Google Map。
JSF可以为您做的就是为您提供用户的IP地址,如下所示:
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
String ip = request.getRemoteAddr();
// ...
如果还要考虑代理,请检查
X-Forwarded-For
标头:ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
String ip = request.getRemoteAddr();
String forwardedFor = request.getHeader("X-Forwarded-For");
if (forwardedFor != null) {
ip = forwardedFor.split("\\s*,\\s*", 2)[0];
}
// ...
您又必须使用哪个IP地理位置工具/ API,这是您必须自己回答的问题。只需向Google输入关键字“ ip geo location”即可开始使用。