已经大概有两个月没写日志了,因为试用期呗,就很少写日志了。今天难得空(忙中偷闲),就写一下这两天开发中关于vue2中引用腾讯地图的问题。
先写一下起因吧(不想看可以跳过),就是在某个申请功能上,插入腾讯地图来选点,同时获得经纬度。其实起初并没有要插入地图的想法。因为获取位置嘛,直接使用bom操作就好了
navigator.geolocation.getCurrentPosition
起初是打算直接拿到经纬来调用接口拿到位置,结果后来接口迟迟下不来,遂决定插入第三方组件,在商榷之后一致决定使用腾讯地图(然而说好之后后来还是出现了经纬标准不一致的问题)。
那么接下来我将遇到的问题大致分为以下三点(此处就不再对密钥获取进行赘述,获取详情可以去官网那边看)
一、腾讯地图组件的引用及问题
https://lbs.qq.com/webApi/component/componentGuide/componentMarker
先放上官方网址,用法可以说是相当简单了,用iframe引入就行,没有多余操作。界面也相当简洁明了,这里唯一的问题,就是关于当前经纬获取的问题。我在项目引用时,一直无法直接获取到当前定位。实在没办法,我这里调用原生的方法获取经纬后,以传参的方式定位(参数coord),但这就出现了另一个问题,组件中有一个重定位的功能,重定位之后并不会回到我们传入的经纬,而是当前默认城市的中心。这就很恶心了,我上网查了很久,无法解决,最后痛定思痛觉得使用Javascript API GL构建
二、腾讯地图Javascript API GL构建自定义地图
废话不多说,直接开搞。
首先vue玩家需要在index.html中引入js(key就是密钥)
<script src="https://map.qq.com/api/gljs?v=1.exp&key="></script>
然后就是重点,根据所需定义类
好些人估计直接就是以js的写法直接let xx了,虽然并没有什么问题,但建议还是在data中初始化,然后构建。
p.s.这里附上官方给出的所有可使用类https://lbs.qq.com/webApi/javascriptGL/glDoc/glDocIndex
然后根据官网的描述,我们这里可以先试着初始化基础地图
const _this = this;
this.center = new TMap.LatLng(this.latitude, this.longitude);
this.demoMap = new TMap.Map(document.getElementById("demo"), {
center: _this.center, //设置地图中心点坐标
zoom: xx, //设置地图缩放级别
pitch: xx, //设置俯仰角
rotation: xx, //设置地图旋转角度
});
这里说明以下,若是开启了代码查验的话,可能会报错,写成window.TMap就行
初始化地图以后,我们可以很简洁的看见地图已经构建在我们的视图页面demo的div里了(麻烦页面自己写谢谢),可以看到,腾讯地图的页面还是非常好看简介的(就是有点卡)
这里再举个例吧,服务类库的初始化
this.suggest = new TMap.service.Suggestion({
// 新建一个关键字输入提示类
pageSize: xx, // 返回结果每页条目数
region: "xx, // 限制城市范围
regionFix: true, // 搜索无结果时是否固定在当前城市
});
调用
this.suggest
.getSuggestions({
keyword: ‘’,
location: ‘’,
})
这样应该就很明确了,我们通过构建类,来调取类的方法,从而实现地图的各个功能。并且地图的ui是可以自己来写的,这样比起组件的调用来说,要更加的便捷。
三、腾讯地图api的一些要点问题 写后感?
感觉写的有点简单了,不过其实是真的很简单。。大概当时写的时候觉得问题很大,但搞定以后再想觉得那是真的easy,大概人都是这样吧。这里本来想写一下当时写的时候出现的诸多问题,但过了两三天,再回想又觉得那只是我对基础只是的不牢靠,所以左思右想决定放弃。
其实就还是那个多查多看,查百度查论坛,看文档看帖子,多看就送会有的。就是这样~