博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【高德地图API】从零开始学高德JS API(一)地图展现
阅读量:6347 次
发布时间:2019-06-22

本文共 3661 字,大约阅读时间需要 12 分钟。

  hot3.png

以前写过从零开始学百度地图API系列,写得比较浅显。如今,自己在LBS领域成长了几年,学到比较多的专业知识,所以此次再次写到”从零系列”,希望加上更多功能,更多想法。比如这期的地图展现,不单单只是告诉大家,一张2D地图如何用代码写出来,同时,还会加上3D地图,卫星图,街景,交通流量图,麻点图,仙剑奇侠传地图等。也希望借此可以和大家更多的交流。

-----------------------------------------------------------------------

一、万物的首先第一步,当然是申请一个key。

申请key:

登录之后,点新建地图,就有一个自动的key了。

 

key在右上角密钥管理处

 

 

二、 2D地图

2D地图,就是一张普通的高德地图。只需要简单几句话就可以实现。 

复制代码

var mapObj;var point = new AMap.LngLat(120.148373,30.290422);function mapInit(){   //初始化地图对象,加载地图。    mapObj = new AMap.Map("iCenter",{    center : point, //地图中心点    level : 15  //地图显示的缩放级别    });}

复制代码

其中,level指的是地图级别,默认为[3,18]。3为世界地图,18为街道级地图。

center指的是地图的中心点,可以用坐标拾取工具来取点。坐标拾取工具:

2D效果图:

 

 

三、实时路况

添加实时路况,只需要两句话

var trafficLayer = new AMap.TileLayer.Traffic({zIndex:10}); //实时路况图层trafficLayer.setMap(mapObj);   //添加实时路况图层

消除实时路况有2种方法,一是隐藏hide方法,二是重置地图setMap(null)

trafficLayer.setMap(null);   //隐藏实时路况图层trafficLayer.hide();   //隐藏实时路况图层

实时路况效果:

 

四、路网,卫星图

路网、卫星图,都跟实时路况路况差不多,只是换了个类名。

添加路网、卫星图,只需要两句话

var roadNetLayer = new AMap.TileLayer.RoadNet({zIndex:10}); //实例化路网图层roadNetLayer.setMap(mapObj); //在map中添加路网图层var satellLayer = new AMap.TileLayer.Satellite({zIndex:10}); //实例化卫星图satellLayer.setMap(mapObj); //在map中添加卫星图

消除路网、卫星图,有2种方法,一是隐藏hide方法,二是重置地图setMap(null)

roadNetLayer.setMap(null); //隐藏路网roadNetLayer.hide(); //隐藏路网satellLayer.setMap(null);   //隐藏卫星图satellLayer.hide();   //隐藏卫星图

路网、卫星图效果: 

 

五、3D地图

3D地图,是在地图比较详细的级别17-18的时候,有三维楼块效果的地图。

所以,要看到3D效果,必须把地图级别调整到17-18才可以看到。

var buildingLayer = new AMap.Buildings(); //实例化3D地图图层buildingLayer.setMap(mapObj); //在map中添加3D图层mapObj.setZoom(18); //改变地图级别到17-18

3D地图没有hide方法,所以隐藏他,需要重置地图。

buildingLayer.setMap(null);

3D地图效果: 

 

六、麻点图

(记得以前研究百度地图API的时候,麻点图的制作很苦难,要自己去对准坐标,自己生成麻点图,然后自己切片……实在费力……)

高德地图API最好用的就是麻点图。不用自己生成麻点图,不用自己切图。只需要在云图上点一点,就可以完成所有操作。

打开云图管理台:

新建或打开已有的地图:

点右上角的按钮,可以手工一个一个标注你自己的麻点。

当然也可以批量导入你的数据。

数据填充完毕后,记录下你的tableid。这就是你的云图层(麻点图)的id,放到下面的代码里。

复制代码

//加载云图层插件      mapObj.plugin('AMap.CloudDataLayer', function () {          var layerOptions = {               query:{keywords: ''},               clickable:true          };          var cloudDataLayer = new AMap.CloudDataLayer('【您的tableid】', layerOptions); //实例化云图层类          cloudDataLayer.setMap(mapObj); //叠加云图层到地图         });

复制代码

云图层,就是麻点图,是实时渲染的,你在云图管理台操作之后,立马在你的前台得到显示。

这真是我用过最好用的麻点图了。marker大于500之后,终于有如此方便的解决方案了。

 

更多关于云图的教程,可以看我以前发过的教程

云存储:

三甲医院例子:

东莞酒店例子:

 

七、仙剑地图

 这个算是投机取巧,将仙剑地图直接覆盖在高德地图上,属于图片覆盖物。

图片覆盖物需要指定一个显示范围,取左下角和右上角。

显示范围设定后,不管地图放大缩小,图片都只在这个范围中显示。

这样的图片覆盖物,比较适合制作校园地图,厂区地图,小区地图等。

而且,跟云图一样,图片覆盖物不需要切图

(又想感叹一句!真真是开发者的福音!为何高德API做得那么好,之前我都不知道!!)

复制代码

var bounds = new AMap.Bounds(new AMap.LngLat(120.120993,30.271596), new AMap.LngLat(120.184593,30.309171)),      groundImageOpts = {          opacity: 1,   //图片透明度          clickable: true,//图片相应鼠标点击事件,默认:false          map: mapObj     //图片叠加的地图对象      };     //实例化一个图片覆盖物对象      var groundImage = new AMap.GroundImage('xianjian.jpg', bounds, groundImageOpts);

复制代码

仙剑地图效果:

 

八、自定义地图

 这里用谷歌的底图作为例子,将高德底图直接换为谷歌底图。跟上一段的内容不一样,不是图片覆盖物那么简单哦。

 高德的切图方式,和谷歌的一样。所以,在网上找的谷歌地图的切图工具,都可以适用于高德地图。

google = new AMap.TileLayer({          tileUrl:"http://mt{1,2,3,0}.google.cn/vt/lyrs=m@142&hl=zh-CN&gl=cn&x=[x]&y=[y]&z=[z]&s=Galil"//图块取图地址      });      google.setMap(mapObj);

谷歌地图:

 

九、街景

高德地图街景覆盖城市共33个,分别为:杭州,南京,成都,西安,拉萨,昆明,烟台,沈阳,哈尔滨,长春,常州,南通,林芝,泰安,日照,那曲,东营,日喀则,德州,滨州,聊城,莱芜,郑州,洛阳,平顶山,开封,安阳,信阳,新乡,焦作,商丘,周口,驻马店。

使用街景,必须将您的网页文件传到服务器上。

复制代码

var opts = {          pov: {              heading:270,              pitch:0          },          position: point      };  var panorama = new AMap.Panorama('iCenter',opts);

复制代码

position,就是街景的位置,必须在33个城市有街景的范围内,才能看到街景哦。 可以先到amap上看一眼,哪里有街景,然后再设置您的街景位置。高德地图

街景效果:

 

十、全部源代码,请点击这里:

 View Code

 

示例demo在线看:

 

效果预览:

原文出处: 

转载于:https://my.oschina.net/u/1776356/blog/266848

你可能感兴趣的文章
浅析package.json中的devdependencies 和 dependencies
查看>>
又一个 iOS 侧边栏组件: SideMenu
查看>>
Python每日一练0019
查看>>
vue.js 打包遇到的问题
查看>>
【译】更优秀的GraphQL官方中文文档-客户端如何使用
查看>>
git pull遇到的问题
查看>>
eclipse下maven spring项目环境配置
查看>>
无缝轮播
查看>>
js实现的哈夫曼编码
查看>>
Apache Kafka 编程实战
查看>>
神经网络初始化
查看>>
多种云服务器安全协同运维改变
查看>>
CTS失败项分析(2)android.telephony.cts.VisualVoicemailServiceTest#testFilter_data
查看>>
三分钟,轻松了解Dapp
查看>>
GMQ交易平台满足不同客户群体的多种投资需求
查看>>
大数据开发如何入门你必须知道这些
查看>>
关于js(es5)如何优雅地创建对象
查看>>
阿里云前端周刊 - 第 28 期
查看>>
iOS 主队列同步造成死锁的原因
查看>>
[现场实录] VueConf 2019 尤雨溪演讲总结
查看>>