地图显示西安经济开发区边界线-2023.12

这是2023年12月写的,不知为何没有发出。这里做一个补发

以曲江新区为例

1.目前只有百度地图可以查看经济开发区(但开发文档未提供对应api),其他地图只能查看行政区。

2.使用多边形编辑器吸附功能在地图上描绘出曲江边界线

多边形编辑器吸附功能-矢量覆盖物编辑-示例中心-JS API 2.0 示例 | 高德地图API (amap.com)

3.高德地图显示曲江经济开发区

4.高德地图围墙显示西安六大行政区demo

复制代码
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>动态围墙线</title>
</head>

  <script charset="utf-8"
  src="https://map.qq.com/api/gljs?v=1.exp&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77&libraries=visualization,service"></script>

  <!-- <script src="./qujaing.js" ></script> -->
  <script src="./myqujiang.js" ></script>
  
<style type="text/css">
  html,
  body {
    height: 100%;
    margin: 0px;
    padding: 0px;
  }

  #container {
    width: 100%;
    height: 100%;
  }
</style>

<body onload="initMap()">
  <div id="container"></div>
  <script>





 function initMap() {
  //初始化地图
  var map = new TMap.Map("container", {
    zoom: 11, //设置地图缩放级别
    center: new TMap.LatLng(34.214328, 108.944669), //设置地图中心点坐标   雁塔区
    // 以下展示为黑色
    pitch: 40, // 设置地图俯仰角
    mapStyleId: "style4", //个性化样式
    renderOptions: {
      enableBloom: true, // 泛光
    },
    baseMap: {
      type: "vector",
      features: ["base", "building3d"], // 隐藏矢量文字
    },
  });



  var district = new TMap.service.District({
    // 新建一个行政区划类
    polygon: 1, // 返回行政区划边界的类型
  });
  var Wall = new TMap.visualization.Wall({
    styles: {
      style1: {
        color: new TMap.GradientColor({
          stops: {
            0: "rgba(1,124,247,0.6)",
            1: "rgba(29,250,242,1)",
          },
          angle: 90, //渐变色中的断点集合
        }),
        strokeColor: 'rgba(29,250,242,1)', //边线颜色
        strokeWidth: 2, //边线宽度
      },
      style2: {
        color: new TMap.GradientColor({
          stops: {
            0: "rgba(255,165,0,0.5)",
            1: "rgba(255,165,0,1)",
          },
          angle: 90, //渐变色中的断点集合
        }),
        strokeColor: 'rgba(255,165,0,1)', //边线颜色
        strokeWidth: 2, //边线宽度
      },
      style3: {
        color: new TMap.GradientColor({
          stops: {
            0: "rgba(255,0,153,0.5)",
            1: "rgba(255,0,153,1)",
          },
          angle: 90, //渐变色中的断点集合
        }),
        strokeColor: 'rgba(255,0,153,1)', //边线颜色
        strokeWidth: 2, //边线宽度
      },
      style4: {
        color: new TMap.GradientColor({
          stops: {
            0: "rgba(0,231,255,0.5)",
            1: "rgba(0,231,255,1)",
          },
          angle: 90, //渐变色中的断点集合
        }),
        strokeColor: 'rgba(0,231,255,1)', //边线颜色
        strokeWidth: 2, //边线宽度
      },
      style5: {
        color: new TMap.GradientColor({
          stops: {
            0: "rgba(0,93,209,0.5)",
            1: "rgba(0,93,209,1)",
          },
          angle: 90, //渐变色中的断点集合
        }),
        strokeColor: 'rgba(0,93,209,1)', //边线颜色
        strokeWidth: 2, //边线宽度
      },
      style6: {
        color: new TMap.GradientColor({
          stops: {
            0: "rgba(3,89,41,0.5)",
            1: "rgba(3,89,41,1)",
          },
          angle: 90, //渐变色中的断点集合
        }),
        strokeColor: 'rgba(3,89,41,1)', //边线颜色
        strokeWidth: 2, //边线宽度
      },
      style7: {
        color: new TMap.GradientColor({
          stops: {
            0: "rgba(255,111,131,0.5)",
            1: "rgba(255,111,131,1)",
          },
          angle: 90, //渐变色中的断点集合
        }),
        strokeColor: 'rgba(255,111,131,1)', //边线颜色
        strokeWidth: 2, //边线宽度
      },

      
    },
    processAnimation: {
      animationType: "breath", //动画类型名称
      breathAmplitude: 0.5, //呼吸幅度
      yoyo: true, //是否回弹
      duration: 1000, //动画时长
    },

  })
    .addTo(map)

  function convertToPath(array) {
    return array.map((p) => {
      if (p.length == 2) return new TMap.LatLng(p[0], p[1]);
      if (p.length == 3) return new TMap.LatLng(p[0], p[1], p[2]);
    });
  }


// 曲江
  // var  qujiangwallLine = latlngarr
  // var path = convertToPath(qujiangwallLine);
  // var wallData2 = {
  //   path: path, //	经纬度数组
  //   height: 4500, //围墙面高度
  //   styleId: "style1", //围墙面样式配置id
  // };




var wallLineArr = []


function getWall(keyword,index){
  // let newIndex = index+3
  if(!keyword){
    console.log('==============');
    return 
  }
  district
    .search({ keyword })
    .then((result) => {
      console.log('result',result);
      var polygon = result?.result?.[0]?.[0]?.polygon
      var latlngcur = polygon[polygon.length-1]
      var wallLine = latlngcur.map(item => {
        return [item.lat, item.lng]
      })
      var path = convertToPath(wallLine);
      var wallData = {
        path: path, //	经纬度数组
        height: 4500, //围墙面高度
        styleId: "style"+index, //围墙面样式配置id
        keyword: keyword,
      };
      wallLineArr.push(wallData)
  })

}


// // 西安 610100
var keywordArrArr = [['610102','610103','610104','610111','610112',],['610113']] 

  // var keywordArrArr = [['610118','610122','610124'],['610102','610103','610104','610111','610112'],['610113','610114','610115','610116','610117'],]

  // 西安市行政区
  keywordArrArr.map((keywordArr,index)=>{
    
    setTimeout(()=>{
      keywordArr.map((item,index2)=>{
        // let newIndex = index*5+index2+2
        // console.log('newIndex',newIndex);
        // let newIndex = index2+3
        let newIndex = 1
        console.log('newIndex',newIndex);
        getWall(item,newIndex)
      })
      },(index+1)*1000)
  })

  setTimeout(()=>{
    console.log('wallLineArr',wallLineArr);
    Wall.setData(wallLineArr);

  },3500)


}
  </script>
</body>

</html>
相关推荐
lizhongxuan2 小时前
LLM Wiki:让大模型替你打理知识库的完整指南
前端·后端·面试
宇擎智脑科技3 小时前
Claude Code 源码分析(七):终端 UI 工程 —— 用 React Ink 构建工业级命令行界面
前端·人工智能·react.js·ui·claude code
dragon7253 小时前
Flutter错误处理机制
前端·flutter
数据知道3 小时前
claw-code 源码详细分析:Bootstrap Graph——启动阶段图式化之后,排障与扩展为什么会变简单?
前端·算法·ai·bootstrap·claude code·claw code
悟空瞎说3 小时前
深度解析:Vue3 为何弃用 defineProperty,Proxy 到底强在哪里?
前端·javascript
leafyyuki3 小时前
告别 Vuex 的繁琐!Pinia 如何以更优雅的方式重塑 Vue 状态管理
前端·javascript·vue.js
Amos_Web3 小时前
Solana开发(1)- 核心概念扫盲篇&&扫雷篇
前端·rust·区块链
Hooray3 小时前
AI 时代的管理后台框架,应该是什么样子?
前端·vue.js·ai编程
ZC跨境爬虫3 小时前
极验滑动验证码自动化实战(ddddocr免费方案):本地缺口识别与Playwright滑动模拟
前端·爬虫·python·自动化