高德地图简单使用教程JS

本文介绍了如何获取高德地图API的开发者Key,包括创建、使用过程,以及如何安全地在JSAPI中集成。还详细讲解了插件的引用和使用,如PolylineEditor插件,以及计算距离、轨迹长度的方法。
摘要由CSDN通过智能技术生成

一、写在前面

注意:这个文档介绍的内容需要获取高德开发者key,才能使用(充钱购买高德服务)

二、官方文档

文档是最好的教程,推荐看文档。
高德开放平台

api文档

三、文档构成

面对不同开发者有一下文档参考。我这里教程是面相JS API的 纯js代码。不同开发方式有不同的开发者key,这个需要注意
在这里插入图片描述

四、创建key

注册登录,购买服务后。
在这里插入图片描述

可以每个系统创建一个应用,这个可随意,主要用来分类的。

在这里插入图片描述

这个类型,可以选比较贴合的,可能会筛查违规使用地图。

在这里插入图片描述

添加key

在这里插入图片描述

在这里插入图片描述

五、使用

高德地图,所有资源视乎都是线上的,没有什么静态js文件这些

引入高德地图方式:
在这里插入图片描述

这里是用JS API Loader

安全密钥 ,这个是保护key泄漏的,key直接放到页面中,很容易被盗取。具体可以看这里在这里插入图片描述

<script src="https://webapi.amap.com/loader.js"></script>
<script type="text/javascript">
  //这个要写,不然一些插件会用不了
  window._AMapSecurityConfig = {
    securityJsCode: "「你申请的安全密钥」",
  };
  var map
   AMapLoader.load({ //首次调用 load
        key:'',//首次load key为必填
        version:'2.0',
        plugins:['AMap.Scale','AMap.ToolBar']
    }).then((AMap)=>{
        map = new AMap.Map('container');
        map.addControl(new AMap.Scale())
        map.addControl(new AMap.ToolBar())
        map.add(new AMap.Marker({
            position:map.getCenter()
        }));
    }).catch((e)=>{
        console.error(e);
    });
   	
   	//可以多次调用,第二次调用可以省略第一次调用的很多配置。
    AMapLoader.load({ //可多次调用load
        plugins:['AMap.MapType']
    }).then((AMap)=>{
       // 注意多次使用如果要叠加效果,需要将内容放到同一个map里面
        map.addControl(new AMap.MapType())
    }).catch((e)=>{
        console.error(e);
    });
</script>

(一)了解插件

在这里插入图片描述

插件列表

在这里插入图片描述

(二)例子

在这里插入图片描述
折线编辑插件使用

//引入折线编辑器插件
map.plugin(["AMap.PolylineEditor"], function () {
  //实例化折线编辑器,传入地图实例和要进行编辑的折线实例
  polylineEditor = new AMap.PolylineEditor(map, polyline);
  //开启编辑模式
  polylineEditor.open();
});

完整代码:

  window._AMapSecurityConfig = {
    securityJsCode: "「你申请的安全密钥」",
  };
  AMapLoader.load({ //首次调用 load
                key: mapKey,//首次load key为必填
                version: '2.0',
                plugins: ['AMap.Scale','AMap.ToolBar', 'AMap.PolylineEditor']
            }).then((AMap) => { 
         	var map = new AMap.Map('container');
        	map.addControl(new AMap.Scale())
        	map.addControl(new AMap.ToolBar())
        	map.add(new AMap.Marker({
            	position:map.getCenter()
            }));
            //配置折线路径
			var path = [
  				new AMap.LngLat(116.368904, 39.913423),
  				new AMap.LngLat(116.382122, 39.901176),
  				new AMap.LngLat(116.387271, 39.912501),
  				new AMap.LngLat(116.398258, 39.9046),
			];
			//创建 Polyline 实例
			var polyline = new AMap.Polyline({
  				path: path,
  				strokeWeight: 2, //线条宽度
  				strokeColor: "red", //线条颜色
  				lineJoin: "round", //折线拐点连接处样式
			});
            var polylineEditor = new AMap.PolylineEditor(map, polyline);
  			//开启编辑模式
			polylineEditor.open();
			}).catch((e) => {
                console.error(e);
            });

(三)不是所有AMap.XXX都是插件

比如: AMap.Polyline。
这个不用在plugins声明,直接new就能使用了

六、计算距离、长度、面积

文档
在这里插入图片描述

七、绘制轨迹和计算轨迹长度

文档上有两种绘制轨迹方式,一种是折线,一种是贝塞尔曲线

这里讲一下怎么绘制折线,其实前面折线编辑插件已经有使用过。

//注意:point 是一个点对象数组。如下
/*
[{'lng':112.637039,'lat':34.796399},{'lng':113.637039,'lat':34.796399},{'lng':114.637039,'lat':34.796399}]
*/
AMapLoader.load({
    key: mapKey,//首次load key为必填
    version: '2.0',
    plugins: ['AMap.Scale', 'AMap.ToolBar', 'AMap.MapType', 'AMap.MouseTool']
}).then((AMap) => {
	//初始化地图 ,设置轨迹中心点
    let lng = 116.362209;
    let lat = 39.887487;
    if (point.length > 0) {
        lng = point[0].lng + point[0].glng;
        lat = point[0].lat + point[0].glat;
    }
    var map = new AMap.Map('container', {
        zoom: 15, //初始地图级别
        center: [lng, lat], //初始地图中心点
    });
    map.addControl(new AMap.Scale())
    map.addControl(new AMap.ToolBar())
    map.addControl(new AMap.MapType({
        defaultType: 1
    }))
    map.add(new AMap.Marker({
        position: map.getCenter()
    }));
    return map;
}).then((map) => {
	// 绘制轨迹
    let path = [];
    for (let i = 0; i < point.length; i++) {
        let lnglat = [];
        let lng = point[i].lng + point[i].glng;
        let lat = point[i].lat + point[i].glat;
        lnglat.push(lng);
        lnglat.push(lat);
        path.push(lnglat)
    }
    var polyline = new AMap.Polyline({
        path: path,
        strokeStyle: "solid",
        strokeColor: "red"
    })
	
	//计算轨迹长度
	//调用AMap.Polyline 提供的方法就能获取轨迹长度
	let length = polyline.getLength(isTerrain)
	
    //把轨迹,绘制到地图
    map.add([polyline]);
    map.setFitView();
    map.setZoom(15);
    return map;
}).catch((e) => {
    console.error(e);
});

折线类文档

获取轨迹长度方法详细如下:

在这里插入图片描述

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenLayers是一个开源的JavaScript库,用于在Web页面上显示交互式地图。高德地图是国内一家知名的地图服务提供商,OpenLayers可以通过加载高德地图的图层来显示高德地图数据。 在OpenLayers中加载高德地图时,需要使用高德地图的瓦片图层URL和投影方式。通过设置正确的投影方式,可以确保地图数据在OpenLayers中正确显示。在代码中,可以使用类似下面的方式加载高德地图图层: ```javascript var gdMapLayer = new TileLayer({ source: new XYZ({ projection: gcj02Mecator, url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}' }), zIndex: 0 }); ``` 这段代码中,`gcj02Mecator`是高德地图的投影方式,`url`是高德地图瓦片的URL模板。通过设置正确的URL和投影方式,可以加载高德地图的图层并在OpenLayers中显示。 然而,根据引用\[1\]和引用\[3\]的描述,切换到高德地图后可能会出现坐标点偏移的问题。这可能是由于高德地图和其他地图服务商使用不同的坐标系统导致的。在切换地图时,需要确保坐标点的转换和显示方式正确,以避免出现位置偏移的情况。 总结来说,OpenLayers可以通过加载高德地图的图层来显示高德地图数据。但在切换地图时,需要注意坐标点的转换和显示方式,以确保地图数据在不同地图之间正确显示。 #### 引用[.reference_title] - *1* *2* *3* [vue openlayers 加载高德地图等 gcj02 的图层偏移问题](https://blog.csdn.net/weixin_42776111/article/details/126539024)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值