利用百度地圖JSAPI產生h7n9禽流感分布圖實現代碼

來源:互聯網
上載者:User

為使用百度地圖JSAPI產生的H7N9感染分布圖樣本,其中的資料來自新華網(4.8號),如下:

使用的功能列表如下:
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!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.