天地图专题七:行政区域标记,热力图(以广西为例)

56 篇文章 5 订阅
7 篇文章 27 订阅

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


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

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

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


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


先上效果图:


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

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

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


核心代码:

		//绘制边界,来自天地图demo.
		function drawArea(json,opacity){

			var area = json.area; 
			var points = area.points; 
			//如果有区域坐标信息,画出此行政区的多边形。 
			if(points && points.length != 0){ 
				//面的线的样式 
				var style = { 
					strokeColor : "#0027eb", 
					fillColor : "red", 
					strokeWeight : 1, 
					strokeOpacity : 0.000001, 
		        	fillOpacity : opacity, //透明度,随机生成。 
		        	strokeStyle : "dashed" //虚线 
		        } 
		        for(var i = 0;i < points.length;i++){ 
					var region = points[i].region;//单个面 
					var pointArr = region.split(","); 
					var pointsz = []; 
					for(var j = 0;j < pointArr.length - 1;j++){ 
						var p = pointArr[j]; 
						var pArr = p.split(" "); 
						var point = new TLngLat(pArr[0],pArr[1]); 
						pointsz.push(point);				 
					} 
					var poly = new TPolygon(pointsz,style); 
					map.addOverLay(poly); 
				} 
			} 
		}



var areaArr = [nanningArea,liuzhouArea,gunlinArea,wuzhouArea,beihaiArea,fangchenggangArea,qinzhouArea,guigangArea,yulinArea,baiseArea,hezhouArea,hechiArea,laibinArea,chongzuoArea,guilinArea];


for (var i = 0,aLen = areaArr.length; i < aLen; i++) {
	drawArea(areaArr[i],getRandom(50)/100);
};


//生成随机正整数 1到n之间。
function getRandom(n){
	return Math.floor(Math.random()*n+1)
}


演示:

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


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

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

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


  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值