HTML HTML5 PHP Mysql Linux 缓存技术 工具 资讯 读书 其他

HTML5 定位


HTML5定位用于定位用户的位置


确定用户的位置

HTML5定位API用于定位用户的位置.

因为这会泄露好的隐私,所以位置信息只有更好批准获取的情况下才能获取.


浏览器支持

Internet Explorer Firefox Opera Google Chrome Safari

IE9+, 火狐浏览器, 谷歌浏览器,苹果浏览器和欧鹏浏览器都支持定位.

注意: 地理定位可以使用更精确的GPS设备,像iPhone.


HTML5 - 使用定位

使用getCurrentPosition()方法获取用户的位置.

下面是个简单定位的例子The,返回用户的经纬度:

例子

<script> var x = document.getElementById("demo");
function getLocation()
  {
  if (navigator.geolocation)
    {
    navigator.geolocation.getCurrentPosition(showPosition);
    }
  else{x.innerHTML = "Geolocation is not supported by this browser.";}
  }
function showPosition(position)
  {
  x.innerHTML = "纬度: " + position.coords.latitude +
  "<br>经度: " + position.coords.longitude;
  }
</script>

亲自试一试 »

例子说明:

  • 检查是否支持定位
  • 如果支持,运行getCurrentPosition()方法. 如果不支持显示不支持信息
  • 如果getCurrentPosition()方法执行 , 它会返回坐标对象,并且作为指定函数的参数( showPosition )
  • showPosition()函数用于显示获取到的经度和纬度

以上例子是定位的基本脚本,没做任何错误处理.


错误处理和拒绝

getCurrentPosition()的第二个参数用于处理错误. 它是指如果获取用户位置失败后进行的处理:

例子

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;
    }
  }

亲自试一试 »

错误代码:

  • 拒绝访问 - 用户不允许定位
  • 位置不可用 - 无法得到用户当前位置
  • 超时 - 操作超时

在地图中显示结果

在地图中显示结果,你需要使用地图服务接口,比如谷歌地图:

例子

function showPosition(position)
{
var latlon = position.coords.latitude + "," + position.coords.longitude;

var img_url = "http://maps.googleapis.com/maps/api/staticmap?center="
+latlon+"&zoom=14&size=400x300&sensor=false";

document.getElementById("mapholder").innerHTML = "<img src='"+img_url+"'>";
}

亲自试一试 »

上面的例子我们根据返回的经纬度在谷歌地图上显示位置(使用的是静态图片).

Google地图脚本
展示如何使用脚本在地图上做标记、缩放、拖拽等.


位置-确切信息

这个页面演示了如何在地图上显示用户的位置. 然而,定位对特殊位置信息非常有用.

例子:

  • 最新的本地信息
  • 显示Points-of-interest附近的用户
  • 道路导航系统 (GPS)

getCurrentPosition()方法- 返回数据

getCurrentPosition()方法返回一个对象. 经度和纬度总是精准的返回.下面的一些属性也会被返回.

属性 描述
coords.latitude 十进制纬度
coords.longitude 十进度经度
coords.accuracy 精准位置
coords.altitude 在高于平均海平面米海拔高度
coords.altitudeAccuracy 位置的精准定位
coords.heading 顺时针方向的标题
coords.speed 每秒的速度
timestamp 响应的日期/时间


定位对象 - 其它有趣的方法

watchPosition()方法 - 返回用户的当前位置并继续返回更新位置作为用户动作(如在车内的GPS).

clearWatch()方法 - 停止watchPosition()方法.

下面的例子展示了watchPosition()方法. 你需要一个精确的GPS装置来测试这个 (如 iPhone):

例子

<script>
var x = document.getElementById("demo");
function getLocation()
  {
  if (navigator.geolocation)
    {
    navigator.geolocation.watchPosition(showPosition);
    }
  else{x.innerHTML = "Geolocation is not supported by this browser.";}
  }
function showPosition(position)
  {
  x.innerHTML = "Latitude: " + position.coords.latitude +
  "<br>Longitude: " + position.coords.longitude;
  }
</script>

亲自试一试 »

To Top