zoukankan      html  css  js  c++  java
  • 天地图专题七:行政区域标记,热力图(以广西为例)

    天地图方面的文章已很久不写。 主要是因为上一个项目结束,基本就不用天地图了。用百度地图的可能更大一些。

    最近上个项目甲方想搞一个类似热力图,热点图的东西。在天地图API上没有找到类似的直接画热力图的接口,只好用了一些替代的方法。

    天地图行政区域,行政区划直接接口也没找到,用边界点自己画。

     琢磨了一阵。 记下来。有需要的可以参考 。

    比如绘制广西省的热力图,实现思路很简单:给广西省每个城市行政区域涂上颜色。 根据热度不同,给每个城市涂的颜色加上不同的透明度。

    先上效果图:

    在天地图上根据坐标点绘制区域 有接口TPolygon。 可以调节颜色,透明度,边线什么的。

    然后就是如何得到的这些行政区域边界点。说来惭愧,我是用很笨的方法:

    到天地图代码示例那里:http://api.tianditu.com/api-new/examples.html,用他们的搜索接口去搜索一个省,城市,然后就可以用 浏览器工具 得到这个区域的边界坐标了。

    核心代码:

    [javascript] view plain copy
     
    1. //绘制边界,来自天地图demo.  
    2. function drawArea(json,opacity){  
    3.   
    4.     var area = json.area;   
    5.     var points = area.points;   
    6.     //如果有区域坐标信息,画出此行政区的多边形。   
    7.     if(points && points.length != 0){   
    8.         //面的线的样式   
    9.         var style = {   
    10.             strokeColor : "#0027eb",   
    11.             fillColor : "red",   
    12.             strokeWeight : 1,   
    13.             strokeOpacity : 0.000001,   
    14.             fillOpacity : opacity, //透明度,随机生成。   
    15.             strokeStyle : "dashed" //虚线   
    16.         }   
    17.         for(var i = 0;i < points.length;i++){   
    18.             var region = points[i].region;//单个面   
    19.             var pointArr = region.split(",");   
    20.             var pointsz = [];   
    21.             for(var j = 0;j < pointArr.length - 1;j++){   
    22.                 var p = pointArr[j];   
    23.                 var pArr = p.split(" ");   
    24.                 var point = new TLngLat(pArr[0],pArr[1]);   
    25.                 pointsz.push(point);                   
    26.             }   
    27.             var poly = new TPolygon(pointsz,style);   
    28.             map.addOverLay(poly);   
    29.         }   
    30.     }   
    31. }  




    [javascript] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. var areaArr = [nanningArea,liuzhouArea,gunlinArea,wuzhouArea,beihaiArea,fangchenggangArea,qinzhouArea,guigangArea,yulinArea,baiseArea,hezhouArea,hechiArea,laibinArea,chongzuoArea,guilinArea];  
    2.   
    3.   
    4. for (var i = 0,aLen = areaArr.length; i < aLen; i++) {  
    5.     drawArea(areaArr[i],getRandom(50)/100);  
    6. };  
    7.   
    8.   
    9. //生成随机正整数 1到n之间。  
    10. function getRandom(n){  
    11.     return Math.floor(Math.random()*n+1)  
    12. }  



    演示:

    http://runningls.com/demos/tianditu/index.html?to=loadgx

    注意:1.边界值放大了看会有一些不重合的地方。补救方法是限制天地图绽放级别。     2.随机不透明度不要设太高,不然视觉效果不好。上面的图是最高不透明度0.5的效果。

    有更好的建议欢迎留言交流。

    转载注明出处:http://blog.csdn.net/liusaint1992/article/details/50531015

  • 相关阅读:
    appium在Mac上环境搭建
    判断元素的16中方法expected_conditions
    python3条件表达式和字符串
    webdriver的API
    什么是web接口
    python2函数
    python1变量,表达式和语句
    XPath学习
    接口相关概念
    解决jdk1.7,1.8共存问题小思
  • 原文地址:https://www.cnblogs.com/telwanggs/p/6484379.html
Copyright © 2011-2022 走看看