根据开发文档描述,map
组件是由客户端创建的原生组件,它的层级是最高的,也就是说它上面不可以再叠加其它视图,但我在其它小程序上,如通勤助手,摩拜单车上看到了map组件上是可以叠加其它组件的,是否是因为他们是微信合作伙伴而给他们开放了部分隐藏接口,我们要实现类似的功能有什么建议?
网友回复:
controls
在地图上显示控件,控件不随着地图移动
controls: [{
id: 1,
iconPath: '/resources/location.png',
position: {
left: 0,
top: 300 - 50,
width: 50,
height: 50
},
clickable: true
}]
controltap(e) {
console.log(e.controlId)
}
这些是官方文档的例子,用这个就可以实现了吧?楼主再看看,考虑考虑
1. 可以用cavas在map上层画。
2. 使用map的controls
3. 有的小程序在需要在map上盖东西的时候,把map隐藏掉,放一个假的图片在后边。
@YJFn
Map上放controls没问题,但controls目前只能是一个图片,所以想实现复杂一点儿的视图还是很困难的,比如上面放多个响应按钮就没法实现了,但有时候这个视图是需要隐藏的,如果采用动态隐藏且不是叠加在上层,Map动态改变大小会抖动,体验很差。
@Can
分别说一下你几个建议
1、可以用cavas在map上层画。
目前canvas与map都是原生的顶级层,我测试的效果也是不可以叠加的,绘图机制也决定了他们两个如果叠加也很困难。
2. 使用map的controls
controls这个目前只是放置一个图片而已,很难实现复杂的逻辑,而冬天改变地图大小会导致地图抖动,体验很差。
3、有的小程序在需要在map上盖东西的时候,把map隐藏掉,放一个假的图片在后边。
放置假图片是会存在时差的,且有时候无法完全对应,这方案瑕疵还比较多。
有一种方案没有试验可能行,利用canvas在后台生成图片,然后利map的controls的动态叠加生成的图片,有一个问题,如果我上面放置多个按钮还是没法解决问题,感觉现在的map组件功能欠缺不少。
@马清飞
嗯,我只是针对摩拜单车上的效果提建议,其他的小程序还没有看,摩拜单车看起来它就是一张图对应一个按钮,这种多个按钮完全可以实现的,像这样我放三张图都有对应的点击处理
诺,canvas方案,没你说的问题
@Can
感谢!!!
我测试的是将先canvas后map,导致绘图闪烁覆盖,按照你的顺序测试了可以实现!
另:你们有没有计划进一步开放地图能力,比如现在地图marker点击弹出气泡无法定制样式以及响应事件?
@YJFn
你的在地图上浮动controls是没问题的,但摩拜的红包计时界面绝对不是这个可以实现的,应该是上面@Can提到的用canvas自绘来实现,顺序不对了也是个坑,自绘实现起来还是相对会麻烦点的!!!