利用百度地图JSAPI生成h7n9禽流感分布图实现代码


Posted in Javascript onApril 15, 2013

下图为使用百度地图JSAPI生成的H7N9感染分布图示例,其中的数据来自新华网(4.8号),截图如下:
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
使用的功能列表如下:
1.自定义版权控件功能,即(1)对应的数据来源部分,代码如下:

var cr = new BMap.CopyrightControl({anchor: BMAP_ANCHOR_TOP_RIGHT}); 
map.addControl(cr); //添加版权控件 
var bs = map.getBounds(); 
cr.addCopyright({id: 1, content: "<a href='http://news.xinhuanet.com/local/2013-04/08/c_115307243.htm' style='fontFamily:微软雅黑;font-size:18px;background:white'>H7N9数据来源</a>", bounds: bs});

2.获取行政边界功能,即(2)对应的四个省市边界,代码如下:
var bdary = new BMap.Boundary();//行政边界服务 
var length=data.length; 
for (var index=0;index<length ;index++ ) 
{ 
(function(index){ //闭包用法 
bdary.get(data[index].city, function(rs){ //获取行政区域 
var count = rs.boundaries.length; //行政区域有几部分多边形组成 
var bounds; 
var center; 
for(var i = 0; i < count; i++){ 
ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: data[index].color,fillColor: data[index].color,fillOpacity:0.8 }); //建立多边形覆盖物 
if (!bounds)//取行政区域第一组成部分的中心点 
{ 
center=ply.getBounds().getCenter(); 
} 
map.addOverlay(ply); //添加行政边界 
} 
}); 
})(index); 
}

3. 添加marker点和label,即(3,4)显示表示人的图片及感染人数的label:
var myIcon = new BMap.Icon("infection.png", new BMap.Size(27,60)); 
var marker1 = new BMap.Marker(center,{icon:myIcon}); // marker 
map.addOverlay(marker1); 
var label = new BMap.Label("人数"+data[index].infect,{offset:new BMap.Size(-10,0)});//显示label 
marker1.setLabel(label);

完整代码如下:
<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<style type="text/css"> 
body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;} 
#l-map{height:100%;width:78%;float:left;border-right:2px solid #bcbcbc;} 
#r-result{height:100%;width:20%;float:left;} 
</style> 
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.4"></script> 
<title>H7N9分布图</title> 
</head> 
<body> 
<div id="allmap"></div> 
</body> 
</html> 
<script type="text/javascript"> 
var map = new BMap.Map("allmap"); 
map.centerAndZoom(new BMap.Point(116.403765, 39.914850), 5); 
map.enableScrollWheelZoom(); 
var cr = new BMap.CopyrightControl({anchor: BMAP_ANCHOR_TOP_RIGHT}); 
map.addControl(cr); //添加版权控件 
var bs = map.getBounds(); 
cr.addCopyright({id: 1, content: "<a href='http://news.xinhuanet.com/local/2013-04/08/c_115307243.htm' style='fontFamily:微软雅黑;font-size:18px;background:white'>H7N9数据来源</a>", bounds: bs}); 
map.setViewport(new BMap.Bounds(new BMap.Point(114.603589,26.853244),new BMap.Point(122.863975,35.288772))); //调整视野 
var data=[{city:'上海市',infect:10,color:'#FF0000'},{city:'江苏省',infect:6,color:'#EE3B3B'},{city:'安徽省',infect:2,color:'#FFAEB9'},{city:'浙江省',infect:3,color:'#EE3B3B'}]; 
//上海(10例,死亡4例)、江苏(6例)、安徽(2例)、浙江(3例,死亡2例) 4.8号数据 
var bdary = new BMap.Boundary(); 
var length=data.length; 
for (var index=0;index<length ;index++ ) 
{ 
(function(index){ //闭包用法 
bdary.get(data[index].city, function(rs){ //获取行政区域 
var count = rs.boundaries.length; //行政区域有几部分多边形组成 
var bounds; 
var center; 
for(var i = 0; i < count; i++){ 
ply = new BMap.Polygon(rs.boundaries[i], {strokeWeight: 2, strokeColor: data[index].color,fillColor: data[index].color,fillOpacity:0.8 }); //建立多边形覆盖物 
if (!bounds)//取行政区域第一组成部分的中心点 
{ 
center=ply.getBounds().getCenter(); 
} 
map.addOverlay(ply); //添加覆盖物 
} var myIcon = new BMap.Icon("infection.png", new BMap.Size(27,60)); 
var marker1 = new BMap.Marker(center,{icon:myIcon}); // marker 
map.addOverlay(marker1); 
var label = new BMap.Label("人数"+data[index].infect,{offset:new BMap.Size(-10,0)});//显示label 
marker1.setLabel(label); 
}); 
})(index); 
} 
</script>

Done!
Javascript 相关文章推荐
JavaScript中的object转换成number或string规则介绍
Dec 31 Javascript
真正好用的js验证上传文件大小的简单方法
Oct 27 Javascript
vue-resource 拦截器(interceptor)的使用详解
Jul 04 Javascript
微信小程序scroll-view组件实现滚动动画
Jan 31 Javascript
angularjs 获取默认选中的单选按钮的value方法
Feb 28 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
Aug 16 Javascript
JS/CSS实现字符串单词首字母大写功能
Sep 03 Javascript
js实现图片无缝循环轮播
Oct 28 Javascript
jQuery实时统计输入框字数及限制
Jun 24 jQuery
Vue环境搭建+VSCode+Win10的详细教程
Aug 19 Javascript
Antd-vue Table组件添加Click事件,实现点击某行数据教程
Nov 17 Javascript
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
Apr 24 Vue.js
jquery分页插件AmSetPager(自写)
Apr 15 #Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
Apr 15 #Javascript
关于jQuery object and DOM element
Apr 15 #Javascript
在jQuery中 关于json空对象筛选替换
Apr 15 #Javascript
在Javascript中 声明时用&quot;var&quot;与不用&quot;var&quot;的区别
Apr 15 #Javascript
关于jQuery $.isNumeric vs. $.isNaN vs. isNaN
Apr 15 #Javascript
深入了解javascript中的prototype与继承
Apr 14 #Javascript
You might like
利用 window_onload 实现select默认选择
2006/10/09 PHP
windows7下安装php的php-ssh2扩展教程
2014/07/04 PHP
PHP会话操作之cookie用法分析
2016/09/28 PHP
替换php字符串中的单引号为双引号的方法
2017/02/16 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
2019/10/21 PHP
符合W3C网页标准的iframe标签的使用方法
2007/07/19 Javascript
Javascript实现重力弹跳拖拽运动效果示例
2013/06/28 Javascript
对frameset、frame、iframe的js操作示例代码
2013/08/16 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
2016/02/19 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
JS正则表达式验证密码格式的集中情况总结
2017/02/23 Javascript
AngularJs 最新验证手机号码的实例,成功测试通过
2017/11/26 Javascript
JS实现的邮箱提示补全效果示例
2018/01/30 Javascript
jQuery创建及操作xml格式数据示例
2018/05/26 jQuery
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
浅谈实现在线预览PDF的几种解决办法
2020/08/10 Javascript
VUE : vue-cli中去掉路由中的井号#操作
2020/09/04 Javascript
JavaScript实现多球运动效果
2020/09/07 Javascript
网站渗透常用Python小脚本查询同ip网站
2017/05/08 Python
Python基于numpy灵活定义神经网络结构的方法
2017/08/19 Python
Python Tkinter 简单登录界面的实现
2019/06/14 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
python实现图像全景拼接
2020/03/27 Python
pycharm下pyqt4安装及环境配置的教程
2020/04/24 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
详解CSS3 用border写 空心三角箭头 (两种写法)
2017/09/29 HTML / CSS
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
捷克街头、运动和滑板一站式商店:BoardStar.cz
2019/10/06 全球购物
校园活动策划书范文
2014/01/10 职场文书
2015幼儿园庆元旦活动方案
2014/12/09 职场文书
最美乡村教师观后感
2015/06/11 职场文书
VUE使用draggable实现组件拖拽
2022/04/06 Vue.js