Jsf 如何标记用户';Primefaces Gmap上的当前位置是什么?

Jsf 如何标记用户';Primefaces Gmap上的当前位置是什么?,jsf,primefaces,Jsf,Primefaces,在Gmap中,我们可以通过自定义纬度和经度来标记所需的位置。 有没有办法为用户的当前位置在地图上添加标记。? 有没有办法获取用户的纬度和经度? 以前有人做过吗? 请分享您的想法?您需要计算用户的IP地址,然后将其提供给某个IP地理位置工具/API,以便获得纬度/经度的地理位置。最后,将此信息用于您的谷歌地图 JSF所能为您做的就是为您提供用户的IP地址,如下所示: ExternalContext externalContext = FacesContext.getCurrentInstance(

在Gmap中,我们可以通过自定义纬度和经度来标记所需的位置。 有没有办法为用户的当前位置在地图上添加标记。? 有没有办法获取用户的纬度和经度? 以前有人做过吗?
请分享您的想法?

您需要计算用户的IP地址,然后将其提供给某个IP地理位置工具/API,以便获得纬度/经度的地理位置。最后,将此信息用于您的谷歌地图

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即可开始。

除了BalusC的答案外,还引用了(Primefaces在幕后使用此API):

较新的浏览器开始支持。 该标准是HTML5的一部分,很可能成为事实 未来的标准。希望执行的所有应用程序 地理定位应该支持这一标准

一些浏览器使用IP地址来检测用户的位置;然而, 因为用户的IP地址只能粗略估计用户的IP地址 位置,我们不建议使用此方法进行地理定位。这个 W3C方法是最简单和最受充分支持的方法,因此它应该是 优先于其他方法

以下是给定链接的一个简短示例:

var initialLocation;
var browserSupportFlag =  new Boolean();
// Try W3C Geolocation (Preferred)
  if(navigator.geolocation) {
    browserSupportFlag = true;
    navigator.geolocation.getCurrentPosition(function(position) {
      initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
      map.setCenter(initialLocation);
    }, function() {
      handleNoGeolocation(browserSupportFlag);
    });
  }
通常,当网站试图访问位置信息时,会提示用户并请求其许可


你可以先试试这个,如果失败了,继续用巴卢斯的答案。

我知道这个方法。如果用户拒绝提供他的位置信息怎么办?我的意思是,有些用户只是取消了提示,而不看它,认为它是一些更新信息或什么的。完整的源代码显示在给定的链接中。他们首先尝试获取位置,如果失败,他们将选择“西伯利亚”;-)。然后,您应该尝试使用BalusC建议的IP地址查找位置。@MattHandy Hey man我像BalusC建议的那样通过IP实现了地理定位,但我遇到了一个问题,即大多数设备都有专用或保留IP,因此大多数IP定位服务在收到此类IP时会失败,您知道解决方案吗,或者知道一个使用这种ip的服务吗?我感谢任何帮助:)谢谢BalusC,你能推荐任何稳定的IP地理位置吗?因为那里有很多,我很难决定使用哪一个。请提供任何建议。@BalusC私有和保留ip存在问题,许多工具无法使用该类型的ip进行地理定位,是否有解决方法?@KishorPrakash您是否参与了我上面提到的问题?