【问题标题】:How to show user location without button click if permission is already given如果已授予权限,如何在不单击按钮的情况下显示用户位置
【发布时间】:2019-11-21 11:42:01
【问题描述】:

我在 HTML 地理定位方面遇到了一些问题。我实际上想在用户授予权限时每次访问页面时显示当前位置..

我能够以 lat 和 long 的形式显示位置,但只有当我点击按钮时,即使用户已给予许可。我如何在不点击按钮和页面重新加载的情况下显示它..

旁注:就像 Swiggy 或 Zomato 一样,每次我们打开应用时都会显示位置。

var x = document.getElementById("demo");
function getLocation() {
  if (navigator.geolocation) {    navigator.geolocation.getCurrentPosition(showPosition, showError);
  } else { 
    x.innerHTML = "Geolocation is not supported by this browser.";
  }
}
function showPosition(position) {
  x.innerHTML = "Latitude: " + position.coords.latitude + 
  "<br>Longitude: " + position.coords.longitude;
}
function showError(error) {
  switch(error.code) {
    case error.PERMISSION_DENIED:
      x.innerHTML = "User denied the request for Geolocation."
      break;
    case error.POSITION_UNAVAILABLE:
      x.innerHTML = "Location information is unavailable."
      break;
    case error.TIMEOUT:
      x.innerHTML = "The request to get user location timed out."
      break;
    case error.UNKNOWN_ERROR:
      x.innerHTML = "An unknown error occurred."
break;
}}

【问题讨论】:

  • 显示您尝试执行此操作的代码。
  • 那么你的代码是什么?
  • 现在检查代码!

标签: javascript html geolocation location reload


【解决方案1】:

简单的方法是在window.load 上调用getLocation()。您也可以将其附加到 &lt;body&gt; 标签上,例如 &lt;body onload="getLocation()"&gt;

var x = document.getElementById("demo");

window.onload = getLocation;

function getLocation() {
  if (navigator.geolocation) {    
navigator.geolocation.getCurrentPosition(showPosition, showError);
x.innerHTML = "Latitude: " + position.coords.latitude + 
  "<br>Longitude: " + position.coords.longitude;
  } else { 
    x.innerHTML = "Geolocation is not supported by this browser.";
  }
}

function showError(error) {
  switch(error.code) {
    case error.PERMISSION_DENIED:
      x.innerHTML = "User denied the request for Geolocation."
      break;
    case error.POSITION_UNAVAILABLE:
      x.innerHTML = "Location information is unavailable."
      break;
    case error.TIMEOUT:
      x.innerHTML = "The request to get user location timed out."
      break;
    case error.UNKNOWN_ERROR:
      x.innerHTML = "An unknown error occurred."
break;
}}

【讨论】:

  • @AbhimanyuSharma 什么不起作用?有错误吗?什么都没有发生?请具体。
  • 什么都没有发生!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-07
  • 2020-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多