使用腾讯位置服务 JavaScript API GL 打造自己的 3D 地图

一、介绍

Javascript API GL是基于WebGL技术打造的3D版地图API,3D化的视野更为自由,交互更加流畅。

提供丰富的功能接口,包括点、线、面绘制,自定义图层、个性化样式及绘图、测距工具等,使开发者更加容易的实现产品构思。

充分发挥GPU的并行计算能力,同时结合WebWorker多线程技术,大幅度提升了大数据量的渲染性能。最高支持百万级点、线、面绘制,同时可以保持高帧率运行。

效果预览
(图片来自腾讯位置服务)

二、开始使用

(一) 注册成为腾讯位置服务开发者

点击前往腾讯位置服务官网 >>>

(二)创建应用和Key
  1. 进入控制台后,展开应用管理菜单并选择【我的应用】。

  2. 点击右侧【创建应用】,如果已经创建过应用,可以直接选择【添加Key】。

  3. Javascript API GL并不需要勾选任何产品,直接创建 Key 就可以使用(在引入 API 库时需要将 key 做为参数传入)。

在这里插入图片描述
在这里插入图片描述

三、地图显示

在地图显示时,实际需求是以用户所在位置为中心点显示地图,在 H5 端,我们可以使用腾讯位置服务的前端定位组件来实现对用户的定位,定位时,会询问用户是否给予定位权限。

(一)在地图页面引入 JS 库
  1. 引入Javascript API GL
<script charset="utf-8" src="https://map.qq.com/api/gljs?v=1.exp&key=这里是你的Key"></script>
  1. 引入前端定位组件
<script type="text/javascript" src="https://apis.map.qq.com/tools/geolocation/min?key=这里是你的Key&referer=你的应用名称"></script>
(二)定义显示地图的容器
<div id="mapContainer"></div>
(三)初始化并显示地图
<script type="text/javascript">
     // 页面加载完成,先定位当前用户位置
	 window.onload = function () {
	     var geolocation = new qq.maps.Geolocation();
	     geolocation.getLocation(showPosition, showErr);
	 }
	 
	 // 若定位成功,执行此方法
	 function showPosition(position) {
	     // 带着获取到的经纬度参数,初始化地图显示
	     showMyMap(position.lat, position.lng);
	 };
	 
	 // 若定位失败,执行此方法
	 function showErr(e) {
	     alert('定位失败-' + e);
	 };
	 
	 // 初始化地图的方法,需要传入经度和纬度作为地图的中心点
	 function showMyMap(lat, lng) {
	     // 实例化地图
	     var map = new TMap.Map('mapContainer', {
	         center: new TMap.LatLng(lat, lng),
	         zoom: 18,
	         viewMode: '3D'
	     }); 
	 }
</script>

zoom 参数是地图缩放级别,值越大,缩放越大,即看到的视野变小,反之看到的建筑物越多。

viewMode 是显示模式,即以 2D 还是 3D 显示地图。默认 3D ,地图可旋转、倾斜;2D 则固定上北下南,不可旋转和倾斜。

四、效果图

在这里插入图片描述

五、其它

腾讯位置服务官网 >>>

前端定位组件介绍 >>>

腾讯位置服务 JavaScript API GL 文档 >>>

  • 40
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 24
    评论
/* *author:XudongChen *Date:2010-03-09 *QQ:233828249 81023617(不才) *Email:xznd@163.com */ 2009-8-13 1.加载分块地图 2.添加全景标记窗体 2009-8-14 1.增加控制条 2.增加全景标记、公交车标记显示层 3.解决地图定位问题 4.增加经纬度层功能 5.未修正图标层的定位 2009-8-15 1.已修正8.14地图定位错误,还存在放大缩小时定位不准 2.存在ie内存泄漏问题 2009-8-16 1.已修正8.15 ie内存泄漏问题,chrome下可能还存在内存泄漏 2.增加图标定位功能 3.增加鼠标滚轮事件(http://yongzhi.blog.hexun.com/5057947_d.html) 4.通过jquery加载json数据文件(图标显示层数据) 2009-8-17 1.增加建筑物高亮显示(还需完成鼠标mouseover和mouseout事件) 2009-8-18 1.完成建筑物高亮显示,有点小bug 2009-8-19 1.增加记录原始缩放比例的全局变量 2.解决建筑物高亮显示bug 2009-8-20 1.增加三维全景展示功能 2.浏览建筑详细功能 2009-8-21 1.引入jqueryAlert插件,美化弹出窗体 2009-8-23 1.增加搜索功能 2.清理建筑信息显示页和公交信息页多余数据 2009-10-22 1.增加小沙盘拖动类(鹰眼视图) BirdEye.js 完成小沙盘到地图的同步,同步方法:检测mouseup事件触发->修改url->request->计算坐标->同步行为 2.增加小沙盘样式表BirdEye.css 地图图片路径birdeyemap 3.完成window.parent地图->小沙盘的同步 问题:小沙盘->window.parent地图存在bug,可以尝试开启 2009-10-23 1.在小沙盘中增加浮动绿色框 2009-11-6 1.实现“鹰眼地图”不需移动,一幅可以看到见全景, 当主场景移动时,“鹰眼地图”只有小框在移动。 同时“小框” 主场景也在移动。 2009-12-17 1.测距功能事件配置 2009-12-21 1.完成测距功能 2009-12-22 1.配置搜索功能,后台改用s2sh框架 2.完成hessian+spring+hibernate整合,提供建筑信息和公司信息hessian查找服务 2009-12-23 1.配置hessian服务端缓存 2.配置hessian日志记录,输出到文件/log/wzucxd/html 3.完成建筑信息显示页,配置2级缓存 4.配置oscache 5.配置新闻信息模块 2010-1-13 1.完成chrome和ff下的搜索功能 2.搜索功能支持ie6.0+ //设置Theodolite$setPoint var cpointtmp = new CPoint(this.holder.offsetLeft + evt.clientX - this.mvl.offsetLeft, this.mvl.offsetTop + evt.clientY - this.mvl.offsetTop); Theodolite$setPoint(cpointtmp);
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

相逢不晚何必匆匆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值