当前位置:   article > 正文

高德地图API使用~Web开发~从创建到具体功能展示_window._amapsecurityconfig

window._amapsecurityconfig

一、呈现地图

首先在拥有一个自己账号,其次高德开放平台注册一个自己的key值和密钥

 然后在public\index.html文件下,放上这段代码

  1. <script type="text/javascript">
  2. window._AMapSecurityConfig = {
  3. securityJsCode: "「您申请的安全密钥」",
  4. }
  5. </script>
  6. <script src="https://webapi.amap.com/loader.js"></script>
  7. <script type="text/javascript"
  8. src="https://webapi.amap.com/maps?v=2.0&key=「您申请的应用Key」">
  9. </script>

然后找一个页面,

  1. <template>
  2. <div class="content">
  3. <div id="container"></div>
  4. </div>
  5. </template>
  6. <script>
  7. export default {
  8. mounted() {
  9. this.getMap();
  10. },
  11. methods: {
  12. getMap() {
  13. var map = new AMap.Map("container", {
  14. viewMode: "2D", // 默认使用 2D 模式,如果希望使用带有俯仰角的 3D 模式,请设置 viewMode: '3D',
  15. zoom: 11, //初始化地图层级
  16. center: [116.397428, 39.90923], //初始化地图中心点
  17. });
  18. },
  19. },
  20. };
  21. </script>
  22. <style scoped>
  23. #container {
  24. width: 100wh;
  25. height: 93vh;
  26. }
  27. </style>

 放上去。刷新,于是你就得到了一个这样的地图。

 需要注意的点,初始化加载地图的时候,调用方法应该写在mounted而不是created中。其次,我是以我们的首都为中心点定位的,你也可以根据需求,定位你想要的位置

修改这个位置就可以了。

二、修改地图背景

如果你不想要这个原颜色,或者你做的大屏是其他颜色的,在高德地图API中打开控制台-找到自定义地图-你可以自己设计,也可找你的ui小姐姐给你设计,更甚至掏钱买他们现成的模板,选中点击分享,复制模板样式的id到代码中

 三、行政区区分边界

你想特别突出某个城市,那么以北京市为例,参考下属行政区查询-行政区划查询-示例中心-JS API 2.0 示例 | 高德地图API

做出了以我刚刚设置了样式黑底为背景,以北京市为突出点做的“描边”

这里是效果图

 下面是具体代码,直接cv到我们刚刚的地图下面即可。

  1. var district = null;
  2. var polygon;
  3. function drawBounds() {
  4. //加载行政区划插件
  5. // if (!district) {
  6. //实例化DistrictSearch
  7. var opts = {
  8. subdistrict: 0, //获取边界不需要返回下级行政区
  9. extensions: "all", //返回行政区边界坐标组等具体信息
  10. level: "district", //查询行政级别为 市
  11. };
  12. district = new AMap.DistrictSearch(opts);
  13. // }
  14. //行政区查询
  15. district.search("北京市", (status, result) => {
  16. var bounds = result.districtList[0].boundaries;
  17. if (bounds) {
  18. //生成行政区划polygon
  19. for (var i = 0; i < bounds.length; i += 1) {
  20. //构造MultiPolygon的path
  21. bounds[i] = [bounds[i]];
  22. }
  23. polygon = new AMap.Polygon({
  24. strokeWeight: 2, // 定义轮廓的粗细
  25. path: bounds,
  26. fillOpacity: 0.1, // 遮罩层透明度
  27. fillColor: "", // 遮罩层颜色,没有代表不覆盖颜色
  28. strokeColor: "#fff", // 轮廓颜色,因为底色是黑色所以我为了凸显效果用的白色
  29. });
  30. map.add(polygon);
  31. map.setFitView(polygon); //视口自适应
  32. }
  33. });
  34. }
  35. drawBounds();

 四、添加覆盖物

覆盖物就是放在地图上的图片或者文字啦。

我们先来放图片。

接着刚刚的往下写,这一段直接放到drawBounds()方法下面就可以了。

  1. // 我们先来定义几个要出现图标的点,这个你也是可以通过接口区去拿到,然后放进去,我这个是案例久
  2. var lnglats = [
  3. [116.39, 39.92],
  4. [116.41, 39.93],
  5. [116.43, 39.91],
  6. [116.46, 39.93],
  7. ];
  8. var markers = []; //存放覆盖物的数组
  9. for (var i = 0; i < lnglats.length; i++) {
  10. // 这就是去遍历需要添加覆盖物图片的数组,让他的每一项上面加一个图片,只需要用到他的坐标点,和你要加的图片,都可以随意变换
  11. var lnglat = lnglats[i];
  12. var marker = new AMap.Marker({
  13. position: new AMap.LngLat(lnglat[0], lnglat[1]),
  14. icon: require("../../assets/map/img.png"),
  15. });
  16. markers.push(marker);
  17. }
  18. // 创建覆盖物群组,并将 marker 传给 OverlayGroup
  19. var overlayGroups = new AMap.OverlayGroup(markers);
  20. // 添加覆盖物群组
  21. function addOverlayGroup() {
  22. map.add(overlayGroups);
  23. }
  24. addOverlayGroup(); //覆盖物出现了。

 下面是展示效果图~

这个时候你会发现我们创建的图标,太大了,不符合我们的预期,所以我们接下来应该,修改图片大小----

在上面的for循环里面修改图片样式即可,也不一定非得用这一个图片,它遍历的每一项就是一个点嘛,所以你可以根据位置啊或者其他的来给他放不一样的图片

(此处是修改图标大小的代码---)

  1. for (var i = 0; i < lnglats.length; i++) {
  2. // 这就是去遍历需要添加覆盖物图片的数组,让他的每一项上面加一个图片,只需要用到他的坐标点,和你要加的图片,都可以随意变换
  3. var lnglat = lnglats[i];
  4. var icons = require("../../assets/map/img.png");
  5. // 创建点实例
  6. var iconSmall = new AMap.Icon({
  7. size: new AMap.Size(25, 26), // 图标尺寸
  8. image: icons, // Icon的图像
  9. // imageOffset: new AMap.Pixel(0, -60), // 图像相对展示区域的偏移量,适于雪碧图等
  10. imageSize: new AMap.Size(25, 26), // 根据所设置的大小拉伸或压缩图片
  11. });
  12. var marker = new AMap.Marker({
  13. position: new AMap.LngLat(lnglat[0], lnglat[1]),
  14. icon: iconSmall,
  15. });
  16. markers.push(marker);
  17. }

下面是修改完图片之后效果图

 五、添加文本标记

说白了,文本标记,就是覆盖物的一种,只不过刚刚是加图片,现在是文字罢了。

因为是给每一个点添加文本标记,所以还是跟刚刚添加图片一样,在刚刚遍历的for循环添加下面的代码即可。

  1. let label = new AMap.Text({
  2. text: "我是第" + i + "个文本标记",
  3. anchor: "center", // 设置文本标记锚点
  4. draggable: true,
  5. cursor: "pointer",
  6. // angle: 10,
  7. style: {
  8. padding: "10px",
  9. borderColor: "#57AFBB",
  10. borderRadius: "5px",
  11. backgroundColor: "#0f2b42",
  12. width: "15rem",
  13. height: "45px",
  14. lineHeight: "25px",
  15. fontFamily: "微软雅黑",
  16. fontSize: "18px",
  17. "text-align": "center",
  18. color: "#0efcff",
  19. },
  20. position: lnglat,
  21. offset: new AMap.Pixel(20, 50), // 设置文本偏移量
  22. });
  23. label.setMap(map);

六、地图缩放

zoom表示的就是缩放层级,数字越大,放大倍数越大,位置就越精准。

 一般就是根据地图的缩放等级去显示和不显示部分内容吧,那我们就以上面添加的文本标记为例,当放大到一定程度再显示,缩小的时候就不显示。

  1. map.on("zoomend", () => {
  2. let zoom = map.getZoom(); // 获取缩放级别
  3. console.log("zoom", zoom); //你可以打印缩放的层级
  4. for (let i = 0; i < this.labell.length; i++) {
  5. //刚开始的时候因为上面定义的 zoom为11,所以不到15也就是不显示字体,所以用下面的方法清除
  6. map.remove(this.labell[i]);
  7. }
  8. if (zoom > 15) {
  9. //超过15显示
  10. for (let i = 0; i < this.labell.length; i++) {
  11. this.labell[i].setMap(map);
  12. }
  13. } else {
  14. for (let i = 0; i < this.labell.length; i++) {
  15. map.remove(this.labell[i]);
  16. }
  17. }
  18. });

上面的代码仅仅取了下面图片的两处,还有一处修改和定义的,自己记得改0~

 下面放效果图

 可以看出一开始是不显示的,等我放大放大放大---至15的时候,就显示出来了

七、信息窗口

信息窗口的展示,点击小图标的出现个小弹框,有点注释 的作用,基础用法很简单,三步走,调注册调用+事件即可。

这个是效果图 

信息窗口的样式优化

这是最基础的最默认的写法,下面是信息窗口样式的调整,

 修改背景颜色

整体代码添加:这里放了整个map方法

  1. getMap() {
  2. var map = new AMap.Map("container", {
  3. viewMode: "2D", // 默认使用 2D 模式,如果希望使用带有俯仰角的 3D 模式,请设置 viewMode: '3D',
  4. zoom: 11, //初始化地图层级
  5. center: [116.39, 39.92], //初始化地图中心点
  6. mapStyle: "amap://styles/5f1483245b363ab2e7526f4b833dcb27", //设置地图的显示样式
  7. });
  8. var district = null;
  9. var polygon;
  10. function drawBounds() {
  11. //加载行政区划插件
  12. // if (!district) {
  13. //实例化DistrictSearch
  14. var opts = {
  15. subdistrict: 0, //获取边界不需要返回下级行政区
  16. extensions: "all", //返回行政区边界坐标组等具体信息
  17. level: "district", //查询行政级别为 市
  18. };
  19. district = new AMap.DistrictSearch(opts);
  20. // }
  21. //行政区查询
  22. district.search("北京市", (status, result) => {
  23. var bounds = result.districtList[0].boundaries;
  24. if (bounds) {
  25. //生成行政区划polygon
  26. for (var i = 0; i < bounds.length; i += 1) {
  27. //构造MultiPolygon的path
  28. bounds[i] = [bounds[i]];
  29. }
  30. polygon = new AMap.Polygon({
  31. strokeWeight: 2, // 定义轮廓的粗细
  32. path: bounds,
  33. fillOpacity: 0.1, // 遮罩层透明度
  34. fillColor: "", // 遮罩层颜色,没有代表不覆盖颜色
  35. strokeColor: "#fff", // 轮廓颜色,因为底色是黑色所以我为了凸显效果用的白色
  36. });
  37. map.add(polygon);
  38. map.setFitView(polygon); //视口自适应
  39. }
  40. });
  41. district.search("怀柔区", (status, result) => {
  42. var bounds = result.districtList[0].boundaries;
  43. if (bounds) {
  44. //生成行政区划polygon
  45. for (var i = 0; i < bounds.length; i += 1) {
  46. //构造MultiPolygon的path
  47. bounds[i] = [bounds[i]];
  48. }
  49. polygon = new AMap.Polygon({
  50. strokeWeight: 2, // 定义轮廓的粗细
  51. path: bounds,
  52. fillOpacity: 0.1, // 遮罩层透明度
  53. fillColor: "", // 遮罩层颜色,没有代表不覆盖颜色
  54. strokeColor: "#fff", // 轮廓颜色,因为底色是黑色所以我为了凸显效果用的白色
  55. });
  56. map.add(polygon);
  57. map.setFitView(polygon); //视口自适应
  58. }
  59. });
  60. district.search("门头沟区", (status, result) => {
  61. var bounds = result.districtList[0].boundaries;
  62. if (bounds) {
  63. //生成行政区划polygon
  64. for (var i = 0; i < bounds.length; i += 1) {
  65. //构造MultiPolygon的path
  66. bounds[i] = [bounds[i]];
  67. }
  68. polygon = new AMap.Polygon({
  69. strokeWeight: 2, // 定义轮廓的粗细
  70. path: bounds,
  71. fillOpacity: 0.1, // 遮罩层透明度
  72. fillColor: "", // 遮罩层颜色,没有代表不覆盖颜色
  73. strokeColor: "#fff", // 轮廓颜色,因为底色是黑色所以我为了凸显效果用的白色
  74. });
  75. map.add(polygon);
  76. map.setFitView(polygon); //视口自适应
  77. }
  78. });
  79. district.search("平谷区", (status, result) => {
  80. var bounds = result.districtList[0].boundaries;
  81. if (bounds) {
  82. //生成行政区划polygon
  83. for (var i = 0; i < bounds.length; i += 1) {
  84. //构造MultiPolygon的path
  85. bounds[i] = [bounds[i]];
  86. }
  87. polygon = new AMap.Polygon({
  88. strokeWeight: 2, // 定义轮廓的粗细
  89. path: bounds,
  90. fillOpacity: 0.1, // 遮罩层透明度
  91. fillColor: "", // 遮罩层颜色,没有代表不覆盖颜色
  92. strokeColor: "#fff", // 轮廓颜色,因为底色是黑色所以我为了凸显效果用的白色
  93. });
  94. map.add(polygon);
  95. map.setFitView(polygon); //视口自适应
  96. }
  97. });
  98. district.search("密云区", (status, result) => {
  99. var bounds = result.districtList[0].boundaries;
  100. if (bounds) {
  101. //生成行政区划polygon
  102. for (var i = 0; i < bounds.length; i += 1) {
  103. //构造MultiPolygon的path
  104. bounds[i] = [bounds[i]];
  105. }
  106. polygon = new AMap.Polygon({
  107. strokeWeight: 2, // 定义轮廓的粗细
  108. path: bounds,
  109. fillOpacity: 0.1, // 遮罩层透明度
  110. fillColor: "", // 遮罩层颜色,没有代表不覆盖颜色
  111. strokeColor: "#fff", // 轮廓颜色,因为底色是黑色所以我为了凸显效果用的白色
  112. });
  113. map.add(polygon);
  114. map.setFitView(polygon); //视口自适应
  115. }
  116. });
  117. district.search("顺义区", (status, result) => {
  118. var bounds = result.districtList[0].boundaries;
  119. if (bounds) {
  120. //生成行政区划polygon
  121. for (var i = 0; i < bounds.length; i += 1) {
  122. //构造MultiPolygon的path
  123. bounds[i] = [bounds[i]];
  124. }
  125. polygon = new AMap.Polygon({
  126. strokeWeight: 2, // 定义轮廓的粗细
  127. path: bounds,
  128. fillOpacity: 0.1, // 遮罩层透明度
  129. fillColor: "", // 遮罩层颜色,没有代表不覆盖颜色
  130. strokeColor: "#fff", // 轮廓颜色,因为底色是黑色所以我为了凸显效果用的白色
  131. });
  132. map.add(polygon);
  133. map.setFitView(polygon); //视口自适应
  134. }
  135. });
  136. district.search("朝阳区", (status, result) => {
  137. var bounds = result.districtList[0].boundaries;
  138. if (bounds) {
  139. //生成行政区划polygon
  140. for (var i = 0; i < bounds.length; i += 1) {
  141. //构造MultiPolygon的path
  142. bounds[i] = [bounds[i]];
  143. }
  144. polygon = new AMap.Polygon({
  145. strokeWeight: 2, // 定义轮廓的粗细
  146. path: bounds,
  147. fillOpacity: 0.1, // 遮罩层透明度
  148. fillColor: "", // 遮罩层颜色,没有代表不覆盖颜色
  149. strokeColor: "#fff", // 轮廓颜色,因为底色是黑色所以我为了凸显效果用的白色
  150. });
  151. map.add(polygon);
  152. map.setFitView(polygon); //视口自适应
  153. }
  154. });
  155. district.search("石景山区", (status, result) => {
  156. var bounds = result.districtList[0].boundaries;
  157. if (bounds) {
  158. //生成行政区划polygon
  159. for (var i = 0; i < bounds.length; i += 1) {
  160. //构造MultiPolygon的path
  161. bounds[i] = [bounds[i]];
  162. }
  163. polygon = new AMap.Polygon({
  164. strokeWeight: 2, // 定义轮廓的粗细
  165. path: bounds,
  166. fillOpacity: 0.1, // 遮罩层透明度
  167. fillColor: "", // 遮罩层颜色,没有代表不覆盖颜色
  168. strokeColor: "#fff", // 轮廓颜色,因为底色是黑色所以我为了凸显效果用的白色
  169. });
  170. map.add(polygon);
  171. map.setFitView(polygon); //视口自适应
  172. }
  173. });
  174. district.search("西城区", (status, result) => {
  175. var bounds = result.districtList[0].boundaries;
  176. if (bounds) {
  177. //生成行政区划polygon
  178. for (var i = 0; i < bounds.length; i += 1) {
  179. //构造MultiPolygon的path
  180. bounds[i] = [bounds[i]];
  181. }
  182. polygon = new AMap.Polygon({
  183. strokeWeight: 2, // 定义轮廓的粗细
  184. path: bounds,
  185. fillOpacity: 0.1, // 遮罩层透明度
  186. fillColor: "", // 遮罩层颜色,没有代表不覆盖颜色
  187. strokeColor: "#fff", // 轮廓颜色,因为底色是黑色所以我为了凸显效果用的白色
  188. });
  189. map.add(polygon);
  190. map.setFitView(polygon); //视口自适应
  191. }
  192. });
  193. district.search("大兴区", (status, result) => {
  194. var bounds = result.districtList[0].boundaries;
  195. if (bounds) {
  196. //生成行政区划polygon
  197. for (var i = 0; i < bounds.length; i += 1) {
  198. //构造MultiPolygon的path
  199. bounds[i] = [bounds[i]];
  200. }
  201. polygon = new AMap.Polygon({
  202. strokeWeight: 2, // 定义轮廓的粗细
  203. path: bounds,
  204. fillOpacity: 0.1, // 遮罩层透明度
  205. fillColor: "", // 遮罩层颜色,没有代表不覆盖颜色
  206. strokeColor: "#fff", // 轮廓颜色,因为底色是黑色所以我为了凸显效果用的白色
  207. });
  208. map.add(polygon);
  209. map.setFitView(polygon); //视口自适应
  210. }
  211. });
  212. district.search("东城区", (status, result) => {
  213. var bounds = result.districtList[0].boundaries;
  214. if (bounds) {
  215. //生成行政区划polygon
  216. for (var i = 0; i < bounds.length; i += 1) {
  217. //构造MultiPolygon的path
  218. bounds[i] = [bounds[i]];
  219. }
  220. polygon = new AMap.Polygon({
  221. strokeWeight: 2, // 定义轮廓的粗细
  222. path: bounds,
  223. fillOpacity: 0.1, // 遮罩层透明度
  224. fillColor: "", // 遮罩层颜色,没有代表不覆盖颜色
  225. strokeColor: "#fff", // 轮廓颜色,因为底色是黑色所以我为了凸显效果用的白色
  226. });
  227. map.add(polygon);
  228. map.setFitView(polygon); //视口自适应
  229. }
  230. });
  231. district.search("海淀区", (status, result) => {
  232. var bounds = result.districtList[0].boundaries;
  233. if (bounds) {
  234. //生成行政区划polygon
  235. for (var i = 0; i < bounds.length; i += 1) {
  236. //构造MultiPolygon的path
  237. bounds[i] = [bounds[i]];
  238. }
  239. polygon = new AMap.Polygon({
  240. strokeWeight: 2, // 定义轮廓的粗细
  241. path: bounds,
  242. fillOpacity: 0.1, // 遮罩层透明度
  243. fillColor: "", // 遮罩层颜色,没有代表不覆盖颜色
  244. strokeColor: "#fff", // 轮廓颜色,因为底色是黑色所以我为了凸显效果用的白色
  245. });
  246. map.add(polygon);
  247. map.setFitView(polygon); //视口自适应
  248. }
  249. });
  250. district.search("昌平区", (status, result) => {
  251. var bounds = result.districtList[0].boundaries;
  252. if (bounds) {
  253. //生成行政区划polygon
  254. for (var i = 0; i < bounds.length; i += 1) {
  255. //构造MultiPolygon的path
  256. bounds[i] = [bounds[i]];
  257. }
  258. polygon = new AMap.Polygon({
  259. strokeWeight: 2, // 定义轮廓的粗细
  260. path: bounds,
  261. fillOpacity: 0.1, // 遮罩层透明度
  262. fillColor: "", // 遮罩层颜色,没有代表不覆盖颜色
  263. strokeColor: "#fff", // 轮廓颜色,因为底色是黑色所以我为了凸显效果用的白色
  264. });
  265. map.add(polygon);
  266. map.setFitView(polygon); //视口自适应
  267. }
  268. });
  269. district.search("延庆区", (status, result) => {
  270. var bounds = result.districtList[0].boundaries;
  271. if (bounds) {
  272. //生成行政区划polygon
  273. for (var i = 0; i < bounds.length; i += 1) {
  274. //构造MultiPolygon的path
  275. bounds[i] = [bounds[i]];
  276. }
  277. polygon = new AMap.Polygon({
  278. strokeWeight: 2, // 定义轮廓的粗细
  279. path: bounds,
  280. fillOpacity: 0.1, // 遮罩层透明度
  281. fillColor: "", // 遮罩层颜色,没有代表不覆盖颜色
  282. strokeColor: "#fff", // 轮廓颜色,因为底色是黑色所以我为了凸显效果用的白色
  283. });
  284. map.add(polygon);
  285. map.setFitView(polygon); //视口自适应
  286. }
  287. });
  288. district.search("通州区", (status, result) => {
  289. var bounds = result.districtList[0].boundaries;
  290. if (bounds) {
  291. //生成行政区划polygon
  292. for (var i = 0; i < bounds.length; i += 1) {
  293. //构造MultiPolygon的path
  294. bounds[i] = [bounds[i]];
  295. }
  296. polygon = new AMap.Polygon({
  297. strokeWeight: 2, // 定义轮廓的粗细
  298. path: bounds,
  299. fillOpacity: 0.1, // 遮罩层透明度
  300. fillColor: "", // 遮罩层颜色,没有代表不覆盖颜色
  301. strokeColor: "#fff", // 轮廓颜色,因为底色是黑色所以我为了凸显效果用的白色
  302. });
  303. map.add(polygon);
  304. map.setFitView(polygon); //视口自适应
  305. }
  306. });
  307. district.search("房山区", (status, result) => {
  308. var bounds = result.districtList[0].boundaries;
  309. if (bounds) {
  310. //生成行政区划polygon
  311. for (var i = 0; i < bounds.length; i += 1) {
  312. //构造MultiPolygon的path
  313. bounds[i] = [bounds[i]];
  314. }
  315. polygon = new AMap.Polygon({
  316. strokeWeight: 2, // 定义轮廓的粗细
  317. path: bounds,
  318. fillOpacity: 0.1, // 遮罩层透明度
  319. fillColor: "", // 遮罩层颜色,没有代表不覆盖颜色
  320. strokeColor: "#fff", // 轮廓颜色,因为底色是黑色所以我为了凸显效果用的白色
  321. });
  322. map.add(polygon);
  323. map.setFitView(polygon); //视口自适应
  324. }
  325. });
  326. district.search("丰台区", (status, result) => {
  327. var bounds = result.districtList[0].boundaries;
  328. if (bounds) {
  329. //生成行政区划polygon
  330. for (var i = 0; i < bounds.length; i += 1) {
  331. //构造MultiPolygon的path
  332. bounds[i] = [bounds[i]];
  333. }
  334. polygon = new AMap.Polygon({
  335. strokeWeight: 2, // 定义轮廓的粗细
  336. path: bounds,
  337. fillOpacity: 0.1, // 遮罩层透明度
  338. fillColor: "", // 遮罩层颜色,没有代表不覆盖颜色
  339. strokeColor: "#fff", // 轮廓颜色,因为底色是黑色所以我为了凸显效果用的白色
  340. });
  341. map.add(polygon);
  342. map.setFitView(polygon); //视口自适应
  343. }
  344. });
  345. }
  346. drawBounds();
  347. // 我们先来定义几个要出现图标的点,这个你也是可以通过接口区去拿到,然后放进去,我这个是案例久
  348. var lnglats = [
  349. [116.39, 39.92],
  350. [116.41, 39.93],
  351. [116.43, 39.91],
  352. [116.46, 39.93],
  353. ];
  354. var markers = []; //存放覆盖物的数组
  355. var infoWindow = new AMap.InfoWindow({ offset: new AMap.Pixel(0, -30) });
  356. for (var i = 0; i < lnglats.length; i++) {
  357. // 这就是去遍历需要添加覆盖物图片的数组,让他的每一项上面加一个图片,只需要用到他的坐标点,和你要加的图片,都可以随意变换
  358. var lnglat = lnglats[i];
  359. var icons = require("../../assets/map/img.png");
  360. // 创建点实例
  361. var iconSmall = new AMap.Icon({
  362. size: new AMap.Size(25, 26), // 图标尺寸
  363. image: icons, // Icon的图像
  364. // imageOffset: new AMap.Pixel(0, -60), // 图像相对展示区域的偏移量,适于雪碧图等
  365. imageSize: new AMap.Size(25, 26), // 根据所设置的大小拉伸或压缩图片
  366. });
  367. var marker = new AMap.Marker({
  368. position: new AMap.LngLat(lnglat[0], lnglat[1]),
  369. icon: iconSmall,
  370. });
  371. // marker.content = "我是第" + (i + 1) + "个Marker";
  372. var info = [];
  373. info.push(
  374. `<div style=" padding:7px 0px 6px 3px; width:300px;color:black; font-size:18px">${
  375. "我是第" + i + 1 + "标题"
  376. }</div>`
  377. );
  378. info.push(
  379. `<div style="padding:7px 0px 0px 3px; fontSize:15px;fontFamily:微软雅黑; color:black;">叭叭叭叭叭叭</div>`
  380. );
  381. info.push(
  382. `<div style=" padding:7px 0px 0px 3px; fontSize:15px;fontFamily:微软雅黑; color:black;">嘟嘟嘟嘟嘟嘟</div>`
  383. );
  384. marker.content = info.join("");
  385. marker.on("click", markerClick);
  386. markers.push(marker);
  387. let label = new AMap.Text({
  388. text: "我是第" + i + "个文本标记",
  389. anchor: "center", // 设置文本标记锚点
  390. draggable: true,
  391. cursor: "pointer",
  392. // angle: 10,
  393. style: {
  394. padding: "10px",
  395. borderColor: "#57AFBB",
  396. borderRadius: "5px",
  397. backgroundColor: "#0f2b42",
  398. width: "15rem",
  399. height: "45px",
  400. lineHeight: "25px",
  401. fontFamily: "微软雅黑",
  402. fontSize: "18px",
  403. "text-align": "center",
  404. color: "#0efcff",
  405. },
  406. position: lnglat,
  407. offset: new AMap.Pixel(20, 50), // 设置文本偏移量
  408. });
  409. this.labell[i] = label; // label.setMap(map);
  410. }
  411. function markerClick(e) {
  412. infoWindow.setContent(e.target.content);
  413. infoWindow.open(map, e.target.getPosition());
  414. }
  415. // 创建覆盖物群组,并将 marker 传给 OverlayGroup
  416. var overlayGroups = new AMap.OverlayGroup(markers);
  417. // 添加覆盖物群组
  418. function addOverlayGroup() {
  419. map.add(overlayGroups);
  420. }
  421. addOverlayGroup(); //覆盖物出现了。
  422. map.on("zoomend", () => {
  423. let zoom = map.getZoom(); // 获取缩放级别
  424. console.log("zoom", zoom); //你可以打印缩放的层级
  425. for (let i = 0; i < this.labell.length; i++) {
  426. //刚开始的时候因为上面定义的 zoom为11,所以不到15也就是不显示字体,所以用下面的方法清除
  427. map.remove(this.labell[i]);
  428. }
  429. if (zoom > 15) {
  430. //超过15显示
  431. for (let i = 0; i < this.labell.length; i++) {
  432. this.labell[i].setMap(map);
  433. }
  434. } else {
  435. for (let i = 0; i < this.labell.length; i++) {
  436. map.remove(this.labell[i]);
  437. }
  438. }
  439. });
  440. },

 修改信息窗口背景颜色

  1. <style scoped>
  2. #container {
  3. width: 100wh;
  4. height: 93vh;
  5. }
  6. ::v-deep .amap-info-content {
  7. background-color: #2f597c;
  8. /* opacity: 0.6; */
  9. }
  10. </style>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/166167
推荐阅读
相关标签
  

闽ICP备14008679号