学习笔记-拖放/地理定位-2017.2.10

2017-02-10  本文已影响0人  阿苏菇凉
一、HTML5 拖放(Drag 和 Drop)
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Examples</title>
    <meta name="description" content="">
    <meta name="keywords" content="">
    <link href="" rel="stylesheet">
    <style type="text/css">
        #div1{
            width: 198px;
            height: 66px;
            padding: 10px;
            border: 1px solid #ccc;
        }
    </style>
    <script type="text/javascript">
        function allowDrop(ev)
        {
            ev.preventDefault();
        }
        function drag(ev)
        {
            ev.dataTransfer.setData("Text",ev.target.id);
        }
        function drop(ev)
        {
            ev.preventDefault();
            var data=ev.dataTransfer.getData("Text");
            ev.target.appendChild(document.getElementById(data));
        }
    </script>
    
</head>
    <body>
        <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
        <br>
        ![](image/img_lamp.jpg)
    </body>
</html>
1、设置元素为可拖放

首先,为了使元素可拖动,把 draggable 属性设置为 true 。

<img draggable="true">
2、拖动什么 - ondragstart 和 setData()

然后,规定当元素被拖动时,会发生什么。
在上面的例子中,ondragstart 属性调用了一个函数,drag(event),它规定了被拖动的数据。
dataTransfer.setData() 方法设置被拖数据的数据类型和值。

function drag(ev)
{
    ev.dataTransfer.setData("Text",ev.target.id);
} 

在这个例子中,数据类型是 "Text",值是可拖动元素的 id ("drag1")。

3、放到何处 - ondragover

ondragover 事件规定在何处放置被拖动的数据。
默认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式。
这要通过调用 ondragover 事件的 event.preventDefault() 方法:

event.preventDefault()
4、进行放置 - ondrop

当放置被拖数据时,会发生 drop 事件。
在上面的例子中,ondrop 属性调用了一个函数,drop(event):

function drop(ev)
{
    ev.preventDefault();
    var data=ev.dataTransfer.getData("Text");
    ev.target.appendChild(document.getElementById(data));
}
二、HTML5 Geolocation(地理定位)

1、HTML5 Geolocation API 用于获得用户的地理位置。对于拥有 GPS 的设备,地理定位更加精确。

<p id="demo">点击按钮获取您当前坐标:</p>
<button onclick="getLocation()">点击</button>
<div id="mapholder"></div>
<script>
var x=document.getElementById("demo");
function getLocation()
{
    if (navigator.geolocation)
    {
    navigator.geolocation.getCurrentPosition(showPosition,showError);
    }
    else
    {
        x.innerHTML="该浏览器不支持获取地理位置。";
    }
}
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_url+")";
}
function showError(error)
{
    switch(error.code) 
    {
        case error.PERMISSION_DENIED:
            x.innerHTML="用户拒绝对获取地理位置的请求。"
            break;
        case error.POSITION_UNAVAILABLE:
            x.innerHTML="位置信息是不可用的。"
            break;
        case error.TIMEOUT:
            x.innerHTML="请求用户地理位置超时。"
            break;
        case error.UNKNOWN_ERROR:
            x.innerHTML="未知错误。"
            break;
    }
}
</script>

2、getCurrentPosition() 方法 - 返回数据

3、Geolocation 对象
watchPosition() - 返回用户的当前位置,并继续返回用户移动时的更新位置。
clearWatch() - 停止 watchPosition() 方法。

<p id="demo">点击这个按钮,获得您的坐标:</p>
<button onclick="getLocation()">点击</button>
<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>
上一篇 下一篇

猜你喜欢

热点阅读