一、注册账号
-高德开放网址:lbs.amap.com/dev/id/choo…
二、创建应用
账号主体可能有不同的应用项目,比如你想开发DD出行、C操、大Z点评等,每个项目里面又分小程序、
APP
、PC
端等等不同的使用场景,每个场景都有一个key
,这个key
有点像ID、密码之类的,用来访问地图时可以知道哪个应用、接口访问了这个地图。
创建应用
添加key
- 创建成功后账号主体跟项目都有了,
key
还没有,点击添加创建key
,用于访问的时候提供身份认证.key
的名称最好跟应用场景有关,方便后期管理
申请完毕后
三、创建高德地图
- 在首页可以看到有多种开发支持平台,点击进去可以看到不同应用场景的
API
文档
- 可以在
script
引入,vue
中可以进行异步加载JS
,在mounted
加载完毕以后进行异步加载,- 这里示范
vue
,key
是刚刚申请的值- 注意:1.window在ssr/nuxt只有在mounted加载以后才出现,所以不能写在created
- 2.doc需要补全document
<script>
export default {
mounted() {
// 页面加载完,开始异步引入高德地图
//创建了一个回调函数,高德地图加载完毕会调用
window.onLoad = function () {
// 所有关于地图的逻辑全部都要写在这个回调里面
// 保证高德地图加载完毕
var map = new AMap.Map("container");
};
// key是申请的值
var url =
"https://webapi.amap.com/maps?v=1.4.15&key=16a302b5bbfb4ecd11a3738d9e6b3552&callback=onLoad";
//创建一个 script dom元素
// doc需要补全document
var jsapi = document.createElement("script");
//设定script标签属性
jsapi.charset = "utf-8";
jsapi.src = url;
//将API文件引入页面中,加载完毕以后会调用函数
document.head.appendChild(jsapi);
},
};
</script>
最后只要在页面添加一句代码
- 构造参数中的
container
为准备阶段添加的地图容器的id:
<template>
<div id="container"></div>
</template>
- 如上已经实现了,只是因为没有宽高所以没有显示,给上宽高就可以了
<style lang="less" scoped>
#container {
width: 600px;
height: 400px;
}
</style>
效果
四、简单配置
- 创建的同时可以给地图设置中心点、级别、显示模式、自定义样式等属性:
- 在container后面添加一个对象
zoom
:缩放级别center
:指定数组以经纬度的方式设中心点,默认是当前位置viewMode
:3D视图
var map = new AMap.Map("container", {
zoom: 20, //级别
center: [113.3245904, 23.1066805], //中心点坐标
viewMode: "3D", //使用3D视图
});
五、点标记
- 官方文档中有很多标记的类型,这里示范点标记
- 在回调函数里面创建
Marker
实例,添加经纬度和标题,可以分别注释看效果,如果是一起出现部分会发生互斥
// 创建一个 Marker 实例:
var marker = new AMap.Marker({
//position: new AMap.LngLat(116.39, 39.9), // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
position: [113.3245904, 23.1066805], // 地理位置经纬度
title: "广州塔", // 鼠标移上去时显示的内容
offset: new AMap.Pixel(-100, -100), // 偏移量
// 可以指定图标图片地址
icon: "//vdata.amap.com/icons/b18/1/2.png", // 添加 Icon 图标 URL
// 可以自定义标记点显示的内容,允许插入html字符串
content: "<h1>广州塔Content</h1>",
});
// 将创建的点标记添加到已有的地图实例:
map.add(marker);
效果
六、插件的使用
- 高德中有很多功能,但不是每个都自带而是需要我们自己引入.这里示例一个导航条
- 插件依旧写在回调函数内,通过
AMap.plugin
方法按需引入插件,第一个参数是插件名,第二个是在plugin
回调之后使用插件功能。
// 插件的添加,第一个参数为插件名,第二个为回调函数
AMap.plugin("AMap.ToolBar", function () {
//异步加载插件
var toolbar = new AMap.ToolBar();
map.addControl(toolbar);
});
效果
七、完整代码参考
<template>
<div id="container"></div>
</template>
<script>
export default {
mounted() {
// 页面加载完,开始异步引入高德地图
//创建了一个回调函数,高德地图加载完毕会调用
window.onLoad = function () {
// 所有关于地图的逻辑全部都要写在这个回调里面
// 保证高德地图加载完毕
var map = new AMap.Map("container", {
zoom: 20, //级别
center: [113.3245904, 23.1066805], //中心点坐标
viewMode: "3D", //使用3D视图
});
// 创建一个 Marker 实例:
var marker = new AMap.Marker({
//position: new AMap.LngLat(116.39, 39.9), // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
position: [113.3245904, 23.1066805], // 地理位置经纬度
title: "广州塔", // 鼠标移上去时显示的内容
offset: new AMap.Pixel(-100, -100), // 偏移量
// 可以指定图标图片地址
icon: "//vdata.amap.com/icons/b18/1/2.png", // 添加 Icon 图标 URL
// 可以自定义标记点显示的内容,允许插入html字符串
content: "<h1>广州塔Content</h1>",
});
// 插件的添加,第一个参数为插件名,第二个为回调函数
AMap.plugin("AMap.ToolBar", function () {
//异步加载插件
var toolbar = new AMap.ToolBar();
map.addControl(toolbar);
});
// 将创建的点标记添加到已有的地图实例:
map.add(marker);
};
// key是申请的值
var url =
"https://webapi.amap.com/maps?v=1.4.15&key=16a302b5bbfb4ecd11a3738d9e6b3552&callback=onLoad";
//创建一个 script dom元素
// doc需要补全document
var jsapi = document.createElement("script");
//设定script标签属性
jsapi.charset = "utf-8";
jsapi.src = url;
//将API文件引入页面中,加载完毕以后会调用函数
document.head.appendChild(jsapi);
},
};
</script>
.<style lang="less" scoped>
#container {
width: 600px;
height: 400px;
}
</style>