vue使用地图道路渐变色绘制解决方案

本文介绍了在Vue项目中解决地图道路渐变色的需求,针对mapBox和mineMap不同版本的特点,提出了一种利用道路坐标切分并逐段绘制的方案。该方法无需更换基础地图服务,但需要后端支持数据切分,并存在均匀切分和遍历效率的问题。此外,还探讨了如何处理道路历史回放的需求,动态展示道路性能。
摘要由CSDN通过智能技术生成

一:需求点:对数动力道路,车辆,人流道路,载能分析道路等等

道路渐变色属性支持:mapBox(支持),mineMap(3.0支持,目前我们内部使用);官网提供的为mineMap2.0(不支持),传统瓦片地图(不支持)
解决对象:
1.使用传统道路绘制方式,绘制道路的地图。
2.mineMap2.0使用者。
3.传统瓦片地图使用方案者。

核心:道路数据特点,geo数据中核心点的coordinates:[]是一个Array这是我们可以最大化利用的一点;

方案:已知的所有道路coordinates是一个连续的数量级庞大的经纬度集合,那么我们可以将它切分成n个小片段,每一个片段当成一个line绘制,最后将所有的lines绘制到一个layer上就是一个多色的线路了。

优缺点分析:
1:优点:在没有line-gradient属性的支持下实现了渐变色道路需求,不需要更换基础地图服务。(ps:实现了产品的异想天开)
2:缺点:需要切分时有色值范围界定,切分力度要均匀。切分需要后端支持。绘制是涉及到遍历问题。

下面就是一段样例数据:

{
   
      "color":"#2B8BF6",
      "kind": 1,
      "point":[

        [
          103.91941094747173,
          36.05338385953002
        ],
        [
          103.9194868531241,
          36.05331180635726
        ],
        [
          103.91956275845868,
          36.0532397529264
        ],
        [
          103.91963866347551,
          36.05316769923753
        ],
        [
          103.91971456817467,
          36.05309564529067
        ],
        [
          103.91979047255619,
          36.053023591085875
        ]
      ]
    }

实际代码代码操作:

 getHandleInfo(params,map,type,back){
   
      this.delSinglePopup(map);
      if(params.roadPoints!==""||params.roadName!==""&&params.roadName!==undefined){
   
        this.changePanel("show")
      }
      if(params.roadPoints===""&&params.roadName===undefined){
   
        // this.handleOnMapInfo(true);
      }
      let that=this;
      let layer=null;
      let sourceId=null;
      let stops=null;
      that.currentHistoryStops={
   };
      //只有再道路选择下才绘制道路
      if(type==="1") {
   
        //所有刻度lable数组
        let timeScale=[];
        GetAnyRoads(params).then((res)=>{
   
          if(res.code===200){
   
            if(res.data!=={
   }){
   
              let list=res.data;
              blur.$emit("setLegend",true)
              if
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值