• 高德地图js开发,给城市某个区添加颜色


    index.less

     1 .amap-logo,
     2 .amap-copyright {
     3     display: none !important;
     4 }
     5 
     6 #container {
     7     width: 600px;
     8     height: 600px;
     9 }
    10 
    11 @keyframes fadeToBottom {
    12     0% {
    13         transform: translateY(-20px);
    14         opacity: 0;
    15     }
    16 }
    17 
    18 
    19 .factory {
    20     width: 1px;
    21     height: 1px;
    22     position: relative;
    23 
    24     .factory-in {
    25         // display: none;
    26         width: 90px;
    27         padding: 5px;
    28         font-size: 12px;
    29         background-color: #fff;
    30         border: 1px solid orangered;
    31         border-radius: 5px;
    32         text-align: center;
    33         animation: fadeToBottom 1s 0s both;
    34         position: absolute;
    35         left: 50%;
    36         margin-left: -38px;
    37         margin-top: -20px;
    38 
    39         h5 {
    40             font-weight: bold;
    41             line-height: 12px;
    42             font-size: 12px;
    43         }
    44 
    45         p {
    46             margin-bottom: 0;
    47         }
    48 
    49         &::after {
    50             content: '';
    51             position: absolute;
    52             display: block;
    53             border-left: 5px solid transparent;
    54             border-right: 5px solid transparent;
    55             border-top: 5px solid orangered;
    56             bottom: -5px;
    57             left: 50%;
    58             transform: translateX(-50%);
    59         }
    60     }
    61 }
    View Code

    index.js

      1 /* eslint-disable react-hooks/exhaustive-deps */
      2 import React, { useEffect } from 'react';
      3 import './index.less';
      4 
      5 function Amap3() {
      6     const city = {
      7         center: [113.936543, 22.540771],
      8         code: '440305',
      9         factory: [
     10             {
     11                 name: '荔湾',
     12                 center: [113.893485, 22.497821],
     13                 data: 100,
     14             },
     15             {
     16                 name: '腾讯大厦',
     17                 center: [113.934497, 22.540517],
     18                 data: 300,
     19             },
     20             {
     21                 name: '高新园地铁站',
     22                 center: [113.953842, 22.540236],
     23                 data: 400,
     24             },
     25         ],
     26     };
     27 
     28     const init = () => {
     29         // 地图完全加载完的处理
     30         window.amapCallback = function () {
     31             const { AMap } = window;
     32 
     33             // 初始化默认定位
     34             const map = new AMap.Map('container', {
     35                 // animateEnable: false, //是否允许平移动画
     36                 zoomEnable: false, //是否允许缩放
     37                 dragEnable: false, //是否允许拖拽
     38                 zoom: 12,
     39                 center: city.center,
     40                 mapStyle: 'amap://styles/c9f95da26ef2a12ee978baea669f3bd6', //使用自定义地图样式
     41             });
     42 
     43             // 440305 表示南山区,还有其他区域的编码可在 AMap_adcode_citycode.xlsx 查询到,对应官网下载地址 https://lbs.amap.com/api/javascript-api/download
     44             new AMap.DistrictSearch({
     45                 // 关键字对应的行政区级别,共有5种级别
     46                 level: 'province',
     47                 //  是否显示下级行政区级数,1表示返回下一级行政区
     48                 subdistrict: 0,
     49                 // 返回行政区边界坐标点
     50                 extensions: 'all',
     51             }).search(city.code, function (status, result) {
     52                 var holes = result.districtList[0].boundaries;
     53                 new AMap.Polygon({
     54                     map: map,
     55                     path: holes, //轮廓线的节点坐标数组
     56                     strokeWeight: 2, // 轮廓线宽度
     57                     strokeColor: '#256edc', //线条颜色
     58                     fillOpacity: 0.2, //透明度
     59                     fillColor: '#256edc', //填充颜色
     60                 });
     61             });
     62 
     63             // 每两秒执行一次位置更新,并且显示工厂数据
     64             let num = 0;
     65             let marker = null;
     66             const getCenter = () => {
     67                 if (num > city.factory.length - 1) {
     68                     num = 0;
     69                 }
     70                 num = num > city.factory.length - 1 ? 0 : num++;
     71                 // 删除之前的marker点
     72                 if (marker) {
     73                     map.remove(marker);
     74                 }
     75                 // 单个工厂信息获取
     76                 const { center, name, data } = city.factory[num];
     77                 const content = `<div class="factory">
     78                                     <div class="factory-in">
     79                                         <h5>${name}</h5>
     80                                         <p>数据:${data}</p>
     81                                     </div>
     82                                 </div>`;
     83                 marker = new AMap.Marker({
     84                     content: content,
     85                     position: center,
     86                 });
     87 
     88                 map.add(marker);
     89                 map.setCenter(center);
     90             };
     91 
     92             getCenter();
     93             setInterval(() => {
     94                 num++;
     95                 getCenter();
     96             }, 2000);
     97         };
     98 
     99         // 动态生成script标签并把地图加载进来
    100         const scriptEl = document.createElement('script');
    101         scriptEl.src =
    102             'https://webapi.amap.com/maps?v=1.4.15&key=您的高德地图key&plugin=AMap.DistrictSearch&callback=amapCallback';
    103         document.body.appendChild(scriptEl);
    104     };
    105 
    106     useEffect(() => {
    107         init();
    108     }, []);
    109 
    110     return (
    111         <>
    112             <div id="container"></div>
    113         </>
    114     );
    115 }
    116 export default Amap3;
    View Code

    效果截图

  • 相关阅读:
    校验相关问题
    类型转换和操作符重载 (c#)
    泛型委托Func<string,string>()
    第三次作业 刘惠惠
    刘惠惠1.12
    第二次作业刘惠惠2.6,2.15
    刘惠惠1.8
    第四次作业 刘惠惠
    刘惠惠1.2
    设计模式中的单件模式
  • 原文地址:https://www.cnblogs.com/zion0707/p/13785604.html
Copyright © 2020-2023  润新知