12.22日总结

地图

1 地理位置

1.1 Geolocation 接口

地理定位在日常生活中应用比较广泛,如互联网打车、在线地图等。

HTML5增加了获取用户地理位置信息的接口》Geolocation,开发者可以通过经纬度来获取用户的地理位置信息。另外,百度等互联网公司也提供了地理定位的接口。

Geolocation 接口是一个用来获取设备地理位置的可编程的对象,它可以让web内容访问到设备的地理位置(经纬度),这将允许Web应用基于用户的地理位置提供定制的信息。

鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的。

1.2 获取当前地理位置

1.2.1 获取当前位置

使用 getCurrentPosition() 方法来获取设备当前位置。

1.2.2 返回数据

若获取地理位置成功,则 getCurrentPosition() 方法将返回数据对象。对象可能包含的属性如下:

属性描述
coords.latitude以十进制度数表示纬度的双精度值。
coords.longitude以十进制度数表示经度的双精度值。
coords.accuracy表示纬度和经度属性精度的双精度值,单位为米。
coords.altitude表示该位置相对于海平面的高度的双经度值。 如果无法提供数据,则此值可以为空。
coords.altitudeAccuracy表示高度属性精度的双精度值,单位为米。
coords.heading表示设备运行方向的双精度值。 该值(以度为单位)表示设备离正北方向的距离。0° 表示正北方向,顺时针计算(即东为 90°,西为 270°)。 如果速度为 0,此值为 NaN;如果设备无法提供方向信息,则此值为空。
coords.speed表示设备运行速度的双精度值,单位为米/每秒。
timestamp获取到位置的时间(时间戳)。

1.2.3 异常处理

getCurrentPosition() 方法的第二个参数用于处理错误。它规定获取地理位置失败或用户拒绝定位时运行的函数。

可能返回的错误码:

相关联的常量描述
1PERMISSION_DENIED地理位置信息的获取失败,因为该页面没有获取地理位置信息的权限。
2POSITION_UNAVAILABLE地理位置获取失败,因为至少有一个内部位置源返回一个内部错误。
3TIMEOUT获取地理位置超时,通过定义 PositionOptions.timeout 来设置获取地理位置的超时时长。

2 百度地图API

2.1 百度地图的作用

百度地图开放平台是面向广大政府、企业、互联网等开发者开放地图服务的平台。

百度地图开放平台拥有七大基础地图服务开放能力:定位、地图、导航、轨迹、路况、路线规划、搜索,并将七大服务能力开放给各行业开发者使用。

百度地图开放平台目前已覆盖近百个行业领域,主要应用场景有:智能物流、智能穿戴、网约车、车用地图、智能景区等。

2.2 百度地图JavaScript API

百度地图 JavaScript API 是一套由 JavaScript 语言编写的应用程序接口,可帮助您在网站中构建功能丰富、交互性强的地图应用,支持 PC 端和移动端基于浏览器的地图应用开发,且支持 HTML5 特性的地图开发。

百度地图 JavaScript API 支持 HTTP 和 HTTPS,免费对外开放,可直接使用。接口使用无次数限制。

官方开发文档:地图 JS API | 百度地图API SDK

2.3 百度地图开发步骤

我们将以基础的地图展示和地图标注为例,来学习百度地图 JavaScript API 的使用方法。

2.3.1 申请开发密钥

点击链接进入控制台:登录百度帐号

点击左侧菜单,依次进入:应用管理 → 我的应用,在页面中点击“创建应用”。

2.3.2 返回数据

若获取地理位置成功,则 getCurrentPosition() 方法将返回数据对象。对象可能包含的属性如下:

属性描述
coords.latitude以十进制度数表示纬度的双精度值。
coords.longitude以十进制度数表示经度的双精度值。
coords.accuracy表示纬度和经度属性精度的双精度值,单位为米。
coords.altitude表示该位置相对于海平面的高度的双经度值。 如果无法提供数据,则此值可以为空。
coords.altitudeAccuracy表示高度属性精度的双精度值,单位为米。
coords.heading表示设备运行方向的双精度值。 该值(以度为单位)表示设备离正北方向的距离。0° 表示正北方向,顺时针计算(即东为 90°,西为 270°)。 如果速度为 0,此值为 NaN;如果设备无法提供方向信息,则此值为空。
coords.speed表示设备运行速度的双精度值,单位为米/每秒。
timestamp获取到位置的时间(时间戳)。

2.3.3 异常处理

getCurrentPosition() 方法的第二个参数用于处理错误。它规定获取地理位置失败或用户拒绝定位时运行的函数。

可能返回的错误码:

相关联的常量描述
1PERMISSION_DENIED地理位置信息的获取失败,因为该页面没有获取地理位置信息的权限。
2POSITION_UNAVAILABLE地理位置获取失败,因为至少有一个内部位置源返回一个内部错误。
3TIMEOUT获取地理位置超时,通过定义 PositionOptions.timeout 来设置获取地理位置的超时时长。

3 百度地图 API

3.1 百度地图的作用

百度地图开放平台是面向广大政府、企业、互联网等开发者开放地图服务的平台。

百度地图开放平台拥有七大基础地图服务开放能力:定位、地图、导航、轨迹、路况、路线规划、搜索,并将七大服务能力开放给各行业开发者使用。

百度地图开放平台目前已覆盖近百个行业领域,主要应用场景有:智能物流、智能穿戴、网约车、车用地图、智能景区等。

3.2 百度地图 JavaScript API

百度地图 JavaScript API 是一套由 JavaScript 语言编写的应用程序接口,可帮助您在网站中构建功能丰富、交互性强的地图应用,支持 PC 端和移动端基于浏览器的地图应用开发,且支持 HTML5 特性的地图开发。

百度地图 JavaScript API 支持 HTTP 和 HTTPS,免费对外开放,可直接使用。接口使用无次数限制。

官方开发文档:地图 JS API | 百度地图API SDK

3.3 百度地图开发步骤

我们将以基础的地图展示和地图标注为例,来学习百度地图 JavaScript API 的使用方法。

3.3.1 申请开发密钥

点击链接进入控制台:登录百度帐号

3.3.2 加载 JavaScript API

新建开发页面,参考使用须知异步加载 JavaScript API,并填入你刚才申请到的 AK(密钥):

3.3.3 修改初始坐标位置

地图在加载时,需要通过脚本设置地图初始化时的中心点坐标位置,例如示例代码 mp.centerAndZoom(new BMap.Point(121.491, 31.233), 11); 中的 121.491, 31.233。如果需要修改该位置,可以通过坐标拾取器获取目标位置的坐标:

示例代码 mp.centerAndZoom(new BMap.Point(121.491, 31.233), 11); 中的 11 是指地图层级,取值范围 4 ~ 19。层级取值越大,地图比例尺越小。

3.3.4 添加地图控件

初始化后的地图默认是不能进行缩放的,需要自行添加地图控件

3.3.5 添加标注

可以使用 map.addOverlay 方法向地图添加标注,并且向地图中添加信息窗口

3.3.6 出行路线规划

百度地图 JavaScript API 提供了驾车、公交、步行和骑行四种出行方式的路线规划功能。

12.22日 拖拽

1 拖放API

1.1 拖放概念

拖放的概念:拖放(Drag 和 drop)是 HTML5 标准的组成部分,是页面中的元素从初始位置被拖动到新的位置的用户行为,如拖拽页面中的指定元素到另一个元素中。

拖放过程:首先使用鼠标指针进入源对象,然后按住鼠标左键拖动源对象,当移动鼠标时源对象会跟随鼠标指针移动,如果源对象进入了目标对象,就松开鼠标左键让源对象放置在目标对象中。

源对象:表示被拖动的元素。为元素添加 draggable 属性可以设置此元素为源对象。

目标对象:源对象进入的元素称作目标对象,目标对象可以是页面中的任一元素。

2 拖拽事件

一个典型的拖拽操作是这样的:用户选中一个可拖拽的(draggable)元素,并将其拖拽(鼠标不放开)到一个可放置的(droppable)元素,然后释放鼠标。在操作期间,会触发一些事件类型,有一些事件类型可能会被多次触发(比如 dragdragover 事件类型)。

下面的表格提供了一个简短的事件类型描述:

事件On 型事件处理程序触发时刻
dragondrag当拖拽元素或选中的文本时触发。
dropondrop当元素或选中的文本在可释放目标上被释放时触发。
dragenterondragenter当拖拽元素或选中的文本到一个可释放目标时触发。
dragoverondragover当元素或选中的文本被拖到一个可释放目标上时触发(每 100 毫秒触发一次)。
dragleaveondragleave当拖拽元素或选中的文本离开一个可释放目标时触发。
dragstartondragstart当用户开始拖拽一个元素或选中的文本时触发。
dragendondragend当拖拽操作结束时触发(比如松开鼠标按键或敲 “Esc” 键)。

2.1 设置元素为可拖放

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

2.2 拖动什么

在上面示例中,ondragstart 属性调用了一个函数 drag(ev),它规定了被拖动的数据。

DataTransfer 对象专门用来存储拖放时要携带的数据,它可以被设置为拖放事件对象的 dataTransfer 属性。

dataTransfer.setData() 方法设置被拖数据的数据类型和值:

text/plain 是一个 DOMString,表示要添加到 drag object 的拖动数据的类型。值是可拖动元素的 id:logo

2.3 拖动到何处:ondragover

ondragover 事件规定在何处放置被拖动的数据。

默认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式。

这要通过调用 ondragover 事件的 event.preventDefault() 方法

2.4 进行放置 ondrop

当放置被拖数据时,会发生 drop 事件。

在上面的例子中,ondrop 属性调用了一个函数 drop(event)

12.22日 localStorage sessionStorage

1 Web Storage 介绍

1.1 Web Storage 介绍

随着互联网的快速发展,基于网页的应用越来越普遍,同时也变得越来越复杂,为了满足日益更新的需求,会经常性地在设备上存储本地数据,例如记录历史活动信息。传统方式使用 document.cookie 来进行存储,但是由于其存储的空间只有 4KB 左右,并且需要复杂的操作进行解析,给发开者带来诸多不便。

HTML5 的本地存储解决方案中定义了两个重要的API:Web Storage 和本地数据库 Web SQL Database。接下来我们将重点讲述 Web Storage 的基本用法。

  • localStorage:用于长久保存整个网站的数据,保存的数据没有期限,直到手动去除。

  • sessionStorage:用于临时保存同一窗口(或标签页)的数据,在关闭窗口(或标签页)之后将会删除这些数据。

1.2 Web Storage 的特点

  • 设置数据和读取数据比较方便。

  • 容量较大,sessionStorage 约 5M,localStorage 约 20M。

  • 只能存储字符串,如果要存储 JSON 对象,可以使用 window.JSON 对象的 stringify() 方法和 parse() 方法进行序列化和反序列化。

2 LocalStorage 的使用

localStorage 对象存储的数据没有时间限制。第二天、第二周或下一年之后,数据依然可用。

不管是 localStorage,还是 sessionStorage,可使用的 API 方法和属性都相同:

方法和属性描述
setItem(key, value)该方法接收一个键名和值作为参数,将会把键值对添加到存储中,如果键名已存在,则更新其对应的值。
getItem(key)该方法接收一个键名作为参数,返回键名对应的值。
removeItem(key)该方法接收一个键名作为参数,并把该键名和值从存储中删除。
length类似数组的 length 属性,用于访问 Storage 对象中 item 的数量。
key(n)用于访问第 n 个 key 的名称。
clear()清除当前域下的所有键值对。

3 sessionStorage 的使用

sessionStorage 方法针对一个 session(会话)进行数据存储。当用户关闭浏览器窗口后,数据会被删除。

4 简单的网站列表程序

功能需求:

  • 可以输入网站名、网址,以网站名作为 key 存入 localStorage;

  • 可以输入网站名,查找网址;

  • 可以列出当前已保存的所有网站。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值