在底图不变的基础上,切换腾讯地图的文字注记(让底图更“干净”)
切换腾讯地图的文字注记
在网上看到了这么个效果,感觉自己以后也会遇到,或者说现有项目可能会扩展这个需求,就先搜集资料探索一下咯~
到时候需求落到身上了就不用慌啦~淡然处之!
预期效果
可手动切换地图底图,且可单独对底图上的文本进行显隐控制
关键思路分析与解读
如何控制底图文本注记的显隐?
腾讯地图 JavascriptAPI GL 的底图由多种元素(多个要素图层)叠加渲染形成,支持设置使用一个或多个元素(要素图层)来进行底图的渲染。
常用的底图类型一般是矢量图、卫星图
- VectorBaseMap 对象规范
- features 属性传入数组,则只显示数组里的要素
- 只显示矢量图的基本信息(不显示文本注记):
this.map.setBaseMap({ type: 'vector', features: ['base', 'building2d'] })
- 矢量图的要素类型:
底面(base)、建筑物(building3d)、建筑物平面(building2d)、poi文字(point)、道路文字(label)
- 矢量图的要素类型:
- 只显示卫星图的基本信息(不显示注记):
this.map.setBaseMap({ type: 'satellite', features: ['base'] })
- 卫星图的要素类型:
卫星影像图(base)、路网图(road)
,路网图要素里包含了文本注记
- 卫星图的要素类型:
如何判断当前是什么底图?
map.getBaseMap()
可以获取到当前的底图对象,借此来实现地图文本标记的控制this.map.getBaseMap().type == 'satellite'
:判断当前底图是不是卫星图- 当然切换底图的时候也可以通过 this.map.getBaseMap().features 来判断文本标注是显示的还是隐藏的,来达到地图文字标注只是通过 显示标注 来控制显隐的效果
- 也可以通过变量来管理展示的底图类型,就不需要通过 api 去获取底图类型了
isSatellite
:是否开启卫星图
示例代码
- 选中显示标注调用
showBaseMapText
方法 - 取消选中调用
hideBaseMapText
方法
export default {
// ...
methods: {
// 隐藏底图的文本标注
hideBaseMapText() {
if (this.map.getBaseMap().type == 'satellite') {
this.map.setBaseMap({ type: 'satellite', features: ['base'] })
} else {
this.map.setBaseMap({ type: 'vector', features: ['base', 'building2d'] })
}
},
// 显示底图的文本标注(不传 features 默认显示所有要素)
showBaseMapText() {
if (this.map.getBaseMap().type == 'satellite') {
this.map.setBaseMap({ type: 'satellite' })
} else {
this.map.setBaseMap({ type: 'vector' })
}
}
// ...
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构