UNPKG

swan-docs

Version:
224 lines (186 loc) 7.42 kB
--- title: 位置 header: develop nav: api sidebar: location --- 获取位置 ----- ### getLocation **解释: **获取当前的地理位置、速度。当用户离开智能小程序后,此接口无法调用。 **参数: **Object **Object 参数说明:** |参数 | 类型 | 必填 | 说明 | |---- | ---- | ---- |---- | |type | String | 否 | 默认为 wgs84 返回 gps 坐标,可选 gcj02| |success |Function | 是 | 接口调用成功的回调函数,返回内容详见返回参数说明。| |fail | Function | 否 | 接口调用失败的回调函数| |complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行)| **success 返回参数说明:** |参数 |说明 | |---- | ---- | |latitude | 纬度,浮点数,范围为-90~90,负数表示南纬 |longitude | 经度,浮点数,范围为-180~180,负数表示西经 |speed | 速度,浮点数,单位m/s| |accuracy | 位置的精确度| |altitude | 高度,单位 m | |verticalAccuracy | 垂直精度,单位 m(Android 无法获取,返回 0) | |horizontalAccuracy |水平精度,单位 m | **示例: ** ```js swan.getLocation({ type: 'gcj02', success: function (res) { console.log("纬度:" + res.latitude); console.log("经度:" + res.longitude); }, fail: function (err) { console.log("错误码:" + err.errCode); console.log("错误信息:" + err.errMsg); } }); ``` 查看位置 ----- ### openLocation **解释: **使用手百内置地图查看位置。 **参数: **Object ​ ​**Object 参数说明:** |参数 | 类型 | 必填 | 说明 | |---- | ---- | ---- |---- | |latitude | Float | 是 | 纬度,范围为 -90~90,负数表示南纬| |longitude | Float | 是 | 经度,范围为 -180~180,负数表示西经| |scale | INT |否 | 缩放比例,范围 4~21,默认为16| **示例: ** ```js swan.getLocation({ type: 'gcj02', success: function (res) { swan.openLocation({ latitude: res.latitude, longitude: res.longitude, scale: 18 }) }, fail: function (err) { console.log("错误码:" + err.errCode); console.log("错误信息:" + err.errMsg); } }); ``` 地图组件控制 ----- ### createMapContext **解释: **创建并返回 map 上下文 mapContext 对象。在自定义组件下,第二个参数传入组件实例 this,以操作组件内 `<map/>` 组件。mapContext 通过 mapId 跟一个 <map/> 组件绑定,通过它可以操作对应的 <map/> 组件。 **参数: **mapId **mapContext 对象的方法列表:** |方法 | 参数 | 说明 | |---- | ---- | ---- | |getCenterLocation | OBJECT | 获取当前地图中心的经纬度,返回的是 gcj02 坐标系,可以用于 swan.openLocation | |moveToLocation | 无 | 将地图中心移动到当前定位点,需要配合 map 组件的 show-location 使用 | |translateMarker | OBJECT | 平移 marker,带动画 | |includePoints | OBJECT | 缩放视野展示所有经纬度 | |getRegion | OBJECT | 获取当前地图的视野范围 | |getScale | OBJECT | 获取当前地图的缩放级别 | **getCenterLocation 的 Object 参数列表:** |参数名 |类型 |必填 |说明| |---- | ---- | ---- |---- | |success |Function | 否 | 接口调用成功的回调函数 ,res = { longitude: "经度", latitude: "纬度"} | |fail |Function | 否 | 接口调用失败的回调函数| |complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行)| **translateMarker 的 Object 参数列表:** |参数名 |类型 |必填 |说明| |---- | ---- | ---- |---- | |markerId |Number | 是 | 指定 marker | |destination |Object | 是 | 指定marker移动到的目标点| |autoRotate | Boolean | 是 | 移动过程中是否自动旋转 marker| |rotate |Number | 是 | marker 的旋转角度 | |duration |duration | 否 | 动画持续时长,默认值1000ms,平移与旋转分别计算 | |fail | Function | 否 | 接口调用失败的回调函数| **includePoints 的 OBJECT 参数列表:** |参数名 |类型 |必填 |说明| |---- | ---- | ---- |---- | |points |Array | 是 | 要显示在可视区域内的坐标点列表,[{latitude, longitude}] | |padding |Array | 否 | 坐标点形成的矩形边缘到地图边缘的距离,单位像素。格式为[上,右,下,左],安卓上只能识别数组第一项,上下左右的 padding 一致。开发者工具暂不支持 padding 参数。| **getRegion 的 OBJECT 参数列表:** |参数名 |类型 |必填 |说明| |---- | ---- | ---- |---- | |success |Function | 否 | 接口调用成功的回调函数,res = {southwest, northeast},西南角与东北角的经纬度 | |fail |Function | 否 | 接口调用失败的回调函数| |complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行)| **getScale 的 OBJECT 参数列表:** |参数名 |类型 |必填 |说明| |---- | ---- | ---- |---- | |success |Function | 否 | 接口调用成功的回调函数,res = {scale} | |fail |Function | 否 | 接口调用失败的回调函数| |complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行)| **示例: ** ```html <view class="wrap"> <map id="myMap" style="width: 100%" </map> <button type="primary" bindtap="getCenterLocation">获取位置</button> <button type="primary" bindtap="moveToLocation">移动位置</button> <button type="primary" bindtap="translateMarker">移动标注</button> <button type="primary" bindtap="includePoints">缩放视野展示所有经纬度</button> <button type="primary" bindtap="getRegion">获取当前地图的视野范围</button> </view> ``` ```js Pages({ data: { latitude: '40.042500', longitude: '116.274040', }, onReady() { this.mapContext = swan.createMapContext('myMap'); }, getCenterLocation: function () { this.mapContext.getCenterLocation({ success: function (res) { console.log("经度" + res.longitude); console.log("纬度" + res.latitude); } }) }, moveToLocation: function () { this.mapContext.moveToLocation(); }, translateMarker: function () { this.mapContext.translateMarker({ markerId: 0, autoRotate: true, duration: 1000, destination: { latitude: 23.10229, longitude: 113.3345211, }, animationEnd() { console.log('animation end'); } }) }, includePoints: function () { this.mapContext.includePoints({ padding: [10], points: [{ latitude: 23, longitude: 113.33, }, { latitude: 23, longitude: 113.3345211, }] }) }, getRegion: function () { this.mapContext.getRegion({ success: function (res) { console.log("西南角的经纬度" + res.southwest); console.log("东北角的经纬度" + res.northeast); } }) } }); ```