高德地图 开发
1、高德地图开发 文档 :https://lbs.amap.com/api/javascript-api/summary
在线编辑 预览 :https://lbs.amap.com/api/javascript-api/example/map-lifecycle/map-show
(个人)可以把地图的创建使用过程,想象成 vue 的创建使用过程。都有生命周期,创建完成之后 再将真实的 DOM 节点插入到对应的 挂载元素上。
key值 :
<script src="https://webapi.amap.com/maps?v=1.4.9&key=e396ba49399513e60262b3a8653d5d4f"></script>
2、高德地图最简单教程 : https://blog.csdn.net/qq_39588818/article/details/79421025 或 https://www.cnblogs.com/milkmap/p/3687855.html (比较详细) 或 https://blog.csdn.net/wuyou1336/article/details/52387502
3、手机定位的原理 : http://www.sohu.com/a/76257016_335896
一、创建地图,地图的底图 (创建的同时可以给地图设置中心点、级别、显示模式、自定义样式等属性)
var map = new AMap.Map('container', { zoom:11 //级别 });
二、地图生命周期:
1、创建地图对象:这个就是上面的创建地图。
var map = new AMap.Map('container');
2、地图加载完成: 这个可以控制地图加载出来前,loading显示。
map.on('complete', function(){ // 地图图块 加载完成 后触发 });
3、销毁地图对象: 这个只是一个 销毁的 API
map.destroy( );
三、覆盖物:(点标记、地图控件、矢量图形、信息窗体 等)
1、点标记:
var marker = new AMap.Marker({ // 创建一个 Marker 实例: position: new AMap.LngLat(116.39, 39.9), // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9] title: '北京' }); map.add(marker); // 将创建的点标记添加到已有的地图实例:
2、地图控件:
AMap.plugin([ 'AMap.ToolBar', ], function(){ map.addControl(new AMap.ToolBar()); // 将控件添加到已有的地图实例 });
3、矢量图形: 折线、面、圆形等覆盖物
// 折线的节点坐标数组,每个元素为 AMap.LngLat 对象 var path = [ new AMap.LngLat(116.368904,39.913423), new AMap.LngLat(116.382122,39.901176) ]; var polyline = new AMap.Polyline({ // 创建折线实例 path: path, borderWeight: 2, // 线条宽度,默认为 1 strokeColor: 'red', // 线条颜色 lineJoin: 'round' // 折线拐点连接处样式 }); map.add(polyline); // 将折线添加至地图实例
4、窗体信息: 信息窗体 是可以 随地图移动的。
a、地图上只允许 同时展示1个信息窗体
// 信息窗体的内容 var content = `<div>这是信息窗体!这是信息窗体</div>` // 创建 infoWindow 实例 var infoWindow = new AMap.InfoWindow({ content: content //传入 dom 对象,或者 html 字符串 }); // 打开信息窗体 infoWindow.open(map, map.getCenter()); // 这里要注意,窗体显示的坐标。默认的坐标不一定看得到,一般需要配。自己配置成 map.getCenter()
四、图层 (默认情况下,地图只显示标准底图,如需要叠加别的图层,可以通过 map.add
方法 添加图层)
JS API 提供了标准、卫星、路网、路况、建筑等多个官方图层, 同时也提供了加载第三方WMS、WMTS、XYZ等标准图层的接口,也提供了把一般的图片、Canvas、视频、热力等作为图层的能力
叠加 路况图层后
//实时路况图层 var trafficLayer = new AMap.TileLayer.Traffic({ zIndex: 10 }); map.add(trafficLayer);//添加图层到地图
五、事件系统:
1、对整个地图 的事件:具体的事件 类型有哪些,看官方文档。
var map = new AMap.Map("container"); var clickHandler = function(e) { alert('您在[ '+e.lnglat.getLng()+','+e.lnglat.getLat()+' ]的位置点击了地图!'); }; // 绑定事件 map.on('click', clickHandler); // 解绑事件 map.off('click', clickHandler);
2、覆盖物、叠加层对象的 事件:和map事件绑定方式是一样的。
六、其它一些功能:其它一些功能不常用,需要的话,到官方文档上找资料就可以了。这里就不介绍了。
1、计算距离( 各种距离)
2、区域面积
3、计算线面关系等(如点是否在面内)
等等。。。
七、UI组件库 (上面的结构,UI组件库中也有,组件库中有多种样式选择)
a、SimpleMarker(简单标注)库 。继承自AMap.Marker(所以上面的信息窗体的属性方法,这里的可以使用)。在已有功能的基础上,额外增加一些功能。就是上面的 点标记的功能,但是样式更多的定制性。
b、SimpleInfoWindow(简单信息窗体)库。 继承自 AMap.InfoWindow,所以上面的信息窗体的属性方法,这里的可以使用,即 SimpleInfoWindow 是 AMap.InfoWindow对象的扩展。
c、PositionPicker(拖拽选址) 库。 用于在地图上选取位置,并获取所选位置的地址信息,以及周边POI、周边道路、周边路口等信息。(这个图标和 点标记 不同的地方是,PositionPicker这个图标是获取当前定位点的信息的)
webpack 中使用高德地图(如react 和 vue上使用高德地图)
说明:直接在webpack中使用 地图,直接通过script标签引入使用也是可以的。如果会有问题,也可以使用 模块形式的 react-amap。
var map = new AMap.Map('container',{}); // 这里会报 AMap 未定义的错误
1、react 中 使用地图,有一个 react-amap 插件:https://elemefe.github.io/react-amap/articles/start(react-amap 里面提供的 功能样式 和官网上的还是有差异 的)
a、里面可以自定义 地图的 版本
b、其它的和高德官网上的是一样的,只是需要通过属性把值传递进去。
知识扩展:
地球经纬线:https://baike.baidu.com/item/%E7%BB%8F%E7%BA%AC%E7%BA%BF/5596978?fr=aladdin
1、经度:
2、纬度:
若数值向北越来越大,则是北纬;若数值向南越来越大,则是南纬。
3、我国的地理坐标:对于开发而言,其它的国家的坐标基本不会用到,不用管。 http://www.gaosan.com/gaokao/231977.html
定一个方向:.一般定向法——面对地图,上北下南,左西右东。
经度范围:73°33′ E 至 135°05′ E
纬度范围:3°51′ N 至 53°33′ N
中国属于北半球
所以,站在规定的方向上,往右经度越来越大,往上纬度越来越大。可以类比直角坐标系记忆。