本次《30天,App开发从0到1》将要给大家分享第十章超级实用技巧,我们精选了其中的一个章节--地图模块的实用扩展:在地图上添加自定义按钮,一起来学习吧。
主要内容
本章将向读者介绍一些开发中常用的功能和技巧 , 这些技巧涉及应用开发的方方面面。
示例 1 讲解了屏幕动态适配的方法,是开发 App 必须具备要掌握的技能之一;
示例 2、示例 7、示例 9 ~示例 11 具体讲解了一些常见的业务需求的实现方法,重点理解其功能实现时的相关逻辑处理;
示例 3 讲解了打开 Web 页面的处理;
示例 4 介绍了 App 的换皮肤功能;
示例 5 讲解了如何实现语言国际化;
示例 6 介绍如何唤起其他 App,这些示例都是很实用的实战功能技巧,在App 开发中会经常用到;
示例 8 讲解了 APICloud 运行原理方面的相关知识,了解并掌握这些知识会对优化 App 功能体验有很大帮助。
学习目标
(1)页面动态适配有虚拟按键栏的 Android 手机。
(2)实现获取手机验证码的功能。
(3)打开一个外部链接作为新页面,并设置样式以及事件监听。
(4)实现 App 的皮肤样式切换功能。
(5)实现App多语言版本切换功能。
(6)调用任意 App。
(7)快速开发数据表格。
(8)apiready 与 window.onload 的平衡使用。
(9)在地图上添加自定义按钮。
(10) 如何获取城市的地铁线路列表。
(11)实现极光推送。
10.9 地图模块的实用扩展: 在地图上添加自定义按钮
地图模块在很多应用里被广泛使用,模块 Store 上面的地图模块封装了地图提供方的官方SDK,如果想要在地图上增加几个按钮来实现某些自定义功能,就需要自定义添加一些按钮上去,如图所示。
实现自定义按钮的关键就是 APICloud 官方提供的免费模块 UIButton。这里要实现的功能是点击中心点按钮,让地图回到中心点。代码如下:
var aMap = api.require('aMap'); // 引入地图模块,这里使用的是高德地图
var UIButton = api.require('UIButton'); // 引入UIButton模块
var lon = 116.4021310000;
var lat = 39.9994480000;
aMap.open({
rect: {
x: 0,
y: 65,
w: 'auto',
h: api.frameHeight - 65
},
center: {
lon: lon,
lat: lat
}, showUserLocation: true,
zoomLevel: 14,
fi xedOn: api.frameName,
fi xed: true
}, function(ret, err) {
if (ret) {
var buttonId; // 记录下来按钮的id,在点击按钮的时候,对这个按钮的状态进行更改 UIButton.open({
rect: {
x: api.frameWidth - 52,
y: api.frameHeight - 140,
w: 40,
h: 40
},
corner: 5,
bg: {
normal: 'widget://img/dingwei.png',
highlight: 'widget://img/dingwei_2.png',
active: 'widget://img/dingwei_2.png' }, // 这里是按钮的三种样式
fi xedOn: api.frameName,
fi xed: true,
move: false
}, function(ret, err) {
if (ret && ret.eventType === 'show') { buttonId = ret.id
}
if (ret && ret.eventType === 'click') {
// 在接收到按钮被点击的指令之后,更改按钮的状态为normal,用来改变按钮的样式,恢复未点
//击之前的样式
UIButton.getState({
id: buttonId
}, function(ret, err) {
if (ret.state === 'active') {
UIButton.setState({
id: buttonId,
state: 'normal'
})
}
});
// 让地图回到中心点处
aMap.setCenter({
coords: {
lon: lon,
lat: lat
}
});
}
})
}
});
这样就简单地实现了在地图上自定义按钮的功能。