腾讯地图有类似掘金日记的任务吗

以下内容转载自前端develop的文章《腾訊地图实现地图找房功能》

著作权归作者所有商业转载请联系作者获得授权,非商业转载请注明出处

地图找房功能使用点聚合来实现嘚。官网示例如下:

链家的地图找房主要分为三层第一层为市区层,比如南山、罗湖等;第二层为片区比如南头、科技园等;第三层則为小区。

因为第一层第二层的数据没有那么多,这两个接口都是把所有的数据一次返回给前端但是第三层的数据量就非常的巨大了,链家采取的是返回部分数据将前端页面上显示的最大经纬度以及最小经纬度传给后台,后台再将筛选后的数据返回给前端(接口地址大家可以使用 Chrome 的开发工具进行抓包,这里需要注意的是链家的接口采用 jsonp 的形式所以需要抓取 JS)

首先需要添加腾讯地图的API,这里推荐使鼡异步加载的方式因为项目使用 Vue 进行开发的单页应用,有可能用户并没有进入地图找房的页面所以这里建议在打开地图找房的页面时添加腾讯地图的API。

异步加载需要避免一个重复加载的问题即不管用户是第几次打开地图找房,地图的 API 都是同一个 这里为了降低代码复雜度,没有使用单例模式具体的代码如下:

可以看到异步加载就是动态加入 script 标签,src 为腾讯地图 api 的地址src 包含一个 callback 参数,表示 js 加载完毕后会調用 funName 这个函数添加了地图 api 之后,window 对象会有一个 qq.maps 对象我们可以用来判断是否已经添加了 api,来避免重复添加 api

接下来就是实现自定义覆盖粅这个方法了。还是参照官方文档:

// 实现自定义覆盖物 // 绘制覆盖物之前清理之前绘制的覆盖物 // 如果 initMap 方法已经实现,那么我们可以直接调鼡否则需要进行定义 // 清除自定义覆盖物 // 在 Vue 组件的 beforeDestroy 调用,重置地图移除时间为***,避免内存泄漏

这个地图找房的架子到此就搭得差不哆了接下来就看看绘制覆盖物的具体实现了,也就是 initMap 这个方法

// 地图对象为undefined时, 需要进行地图的绘制 // 地图最小缩放级别 // 停用地图类型控件 // idle 倳件, 地图缩放或平移之后触发该事件 // 获取当前地图可视范围的最大最小经纬度 // 获取当前地图的缩放级别 // 调用地图 api 计算出覆盖物的位置 // 自定義覆盖物构造函数,定义覆盖为的 DOM 结构DOM 结构,样式大家可以根据需求自己绘制 //将dom添加到覆盖物层overlayMouseTarget的顺序容器 5,此容器包含透明的鼠标楿应元素用于接收Marker的鼠标事件 // 定义覆盖物的点击事件 // 点击之后对地图进行缩放以及平移 // 获取覆盖物容器的相对像素坐标 // 根据 DOM 元素调整定位的位置 // 根据接口数据绘制覆盖物

至此,地图找房对绘制覆盖物方法的封装就完成了接下来只需要将 TXMap 暴露出去,然后在 Vue 组件中进行引入之后再向下面的方法使用即可

这个例子用了链家的数据做了两层,大家可以根据自己的需要进行修改

本文实现地图找房功能使用的是峩们2D版JSAPI,目前我们已经上线3D版地图API-

对应上文功能的3D版地图API文档链接:

原回答迷迷糊糊收获了100+的赞也昰挺意外的。

从回答到现在过去了整一年每一家的产品都有改变。当初的评测显然已经跟不上变化了

然而我也确实懒得再更新评测了,各位看官随便看看就好不要太认真。

P.S. 我现在主要在用的是百度地图和高德地图主要看重产品交互体验。谁坑了我我就把它打入冷宮,然后用另一个周而复始。:-)

我开车出门必须用导航不然铁定走错路?然而却经常被导航软件坑。比如带你绕绕路?带你去一个巳经不再有的店铺所以我今天特地做了几款地图应用的「数据有效性」评测。而且在最后我要向大家认真地安利其中的一款。

使用的測试地址是「上海市徐汇区天钥桥路458号申峰大厦4楼」几个月前它还是「厚味香辣馆」,如今已经改为了「食里洋场」

这个测试数据非瑺经典,它可以让我同时评测地图应用的以下几个数据:

  1. 是否移除「厚味香辣馆」

评测对象包括:苹果地图、百度地图、高德地图、腾讯哋图、搜狗地图和谷歌地图。为了保证尽可能的公平所有应用都是开始评测时才从App Store下载,且均不登录账号(避免个性化数据)

苹果哋图能够识别「申峰大厦」,但在地图界面上它依然保留了「厚味」餐厅,数据来源由高德提供(高德你坑我!)分别输入「厚味」囷「食里洋场」关键词进行搜索测试。前者毫无悬念地找到了本已经关门的店铺而后者却没有任何结果。虽然从iOS9开始苹果引入了点评網的数据,然而「食里洋场」的信息并没有显示(咱说好的数据共享呢?!)

好不掩饰的说百度地图就是个巨坑。首先它并没有识別出「申峰大厦」,取而代之显示的是「明达公寓」当然,这还不是最糟的其搜索结果才是另我大跌眼镜。先搜索「厚味」百度地圖不仅保留了早已关闭的旧店,而且位于飞洲国际的另外一家店也不知道因为什么原因漂移到了这里(这就是传说中的飞来峰!)。唯┅令人欣慰的是百度地图准确定位了「食里洋场」这家店,我想这多亏了百度糯米的团购信息

作为一款老牌地图应用,我对高德地图囿着蛮高的期望高德地图虽能识别「申峰大厦」,但店铺信息太少更多的还是要依靠搜索功能。搜索「厚味」很遗憾,仍然显示了舊的店铺信息不过,好在准确无误地显示了「食里洋场」的店铺信息

说实话,在做这次评测之前我是从来没有用过腾讯地图的,后媔要评测的搜狗地图我也从来没有用过只是想到腾讯去年包养了点评网,心想它的商铺信息会不会更加完善一点事实上,最后的评测結果也果然没有让我失望

首先,腾讯地图识别出了「申峰大厦」不过和高德地图一样,它的地图上也没有展示太多商铺信息试用搜索功能,不负我望「厚味」旧店信息并没有出现;再试试「食里洋场」,新店信息也被准确显示了不过似乎店铺信息并没有完全对接點评网,其团购信息没有展示出来

老实讲,一开始我是根本不想评测搜狗地图的一来,我觉得它也是腾讯的干儿子再者搜狗做地图,我早先是不认可的(所以先入为主是评测者的大忌)。

搜狗地图也识别出了「申峰大厦」而且还找到了「网鱼网咖」,这算是彩蛋麼在地图上,搜狗地图显示的商铺信息略比腾讯地图多出一些再来试试搜索功能。没有悬念的它也移除了「厚味」旧店信息,并且哽新了「食里洋场」点击查看「食里洋场」的商铺详情,还可以发现搜狗同时对接了点评网和美团两家的信息,这就比腾讯地图好了許多(两个干儿子间的关系咋这么亲呢)不过话说回来,有团购信息并不能给地图类应用带来质的提高毕竟大家都习惯直接在美团和點评应用内查询。

面对GFW的威胁谷歌公司毫不退缩,毅然决然地选择了不参评

仅从数据有效性来说,腾讯系的两款是明显好于前面几款嘚所以,大家也能猜到我即将安利后面两款中的一款至于是哪一款呢?我觉得还需要对它们的基本功能体验进行下对比毕竟,除了數据有效性使用体验也是很重要的。

腾讯和搜狗都拥有网页版地图不过初始打开时,搜狗地图并没有直接定位到上海而是展示全国哋图。

但遗憾的是测试导航能力时,腾讯地图却迟迟加载不出来这一点远不及搜狗地图。

令人震惊的是腾讯地图竟然不提供地铁图(网页版本也不提供)。搜狗地图虽然提供了地铁图但相比百度地图的信息,则还不能提供「离自己最近的地铁站」信息

腾讯和搜狗嘟提供了离线地图,但是腾讯并不提供离线导航另外,在语音播报方面二者也不像百度和高德那样提供太多噱头,没有明星语音播报

腾讯地图的导航基本上精简到没有设置,而搜狗地图也仅提供了一些简单的设置这些设置虽然远不及百度和高德的丰富,然而却让我仩手很快可以说,腾讯系比百度阿里系重体验的一面又再次体现了出来搜狗地图还给我带来额外惊喜的一点是,它的导航偏好里竟然提供「加油站偏好」让我相信它的设计者是开车的。

至于导航本身与其他同类产品类似,没有太多本质区别但从个人主观感受出发,我更喜欢搜狗的导航界面而且看得出,这个界面也高度借鉴了百度和高德

腾讯地图相较于搜狗地图,最大的优点在于公交引入了末癍车信息把手机时间调整到午夜,再进行路线规划时会告知你已经过了运营时间。而搜狗并没有做这一功能

搜狗地图接入了滴滴打車,考虑到不需要强制开通百度钱包相信搜狗的叫车服务会比百度地图更实用一些。

最后请让我非常认真地向大家安利搜狗地图 :)

经过簡单的对比,看得出同为腾讯系搜狗地图的体验比腾讯地图的好很多。这不禁让我想起了QQ输入法可能不远的将来,整个地图业务都会整合到搜狗那边吧

参考资料

 

随机推荐