关于echarts获取下级区的通用方法

复制下面代码到html文件中,即可直接看到效果,百度地图的ak值可以用我的

<!DOCTYPE html>

<html>

<head>

<meta name="viewport" content="width=device-width"/>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<title></title>

<script src="http://code.jquery.com/jquery-3.3.1.min.js"

            integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="

            crossorigin="anonymous"></script>

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=6zGoQAC06Bf2oUDHeT4VFxsGtXt6xx2o"></script>

<script type="text/javascript"

            src="http://api.map.baidu.com/library/AreaRestriction/1.2/src/AreaRestriction_min.js"></script>

<style type="text/css">

html {

height:100%;

}

body {

height:100%;

margin:0px;

padding:0px;

}

#container {

height:100%;

}

</style>

</head>

<body>

<div id="container"></div>

<script type='text/javascript'>

//提示:下面的代码用jquery,所以如果有不能运行的情况请引用后尝试

//百度地图api container对应前端div名称 前端要引用2.0版本的百度地图api

//需引用api.map.baidu.com/library/AreaRestriction/1.2/src/AreaRestriction_min.js

  var map =new BMap.Map("container", {enableMapClick:false});// 创建地图实例,禁止点击地图底图

//设置样式

  map.setMapStyle({

styleJson: [

{//不显示点信息

        "featureType":"poi",

"elementType":"all",

"stylers": {

"color":"#ffffff",

"visibility":"off"

        }

}

]

});

map.disableDragging();//禁止拖动

  map.disableDoubleClickZoom();//禁止双击缩放

  var blist = [];

var districtLoading =0;

function getBoundary() {

addDistrict("镇海区");

}

/**

* 添加行政区划

  * @param {} districtName 行政区划名

  * @returns  无返回值

*/

  function addDistrict(districtName) {

//使用计数器来控制加载过程

    districtLoading++;

var bdary =new BMap.Boundary();

bdary.get(districtName,function (rs) {//获取行政区域

      console.log(rs)

var count = rs.boundaries.length;//行政区域的点有多少个

      if (count ===0) {

alert('未能获取当前输入行政区域');

return;

}

for (var i =0;i

blist.push({points: rs.boundaries[i],name: districtName});

}

;

//加载完成区域点后计数器-1

      districtLoading--;

if (districtLoading ==0) {

//全加载完成后画端点

        drawBoundary();

}

});

}

/**

* 各种鼠标事件绑定

*/

  function click(evt) {

alert(evt.target.name);

}

function mouseover(evt) {

evt.target.label.setZIndex(99);

evt.target.label.setPosition(evt.point);

evt.target.label.show();

}

function mousemove(evt) {

evt.target.label.setPosition(evt.point);

}

function mouseout(evt) {

evt.target.label.hide();

}

function drawBoundary() {

//包含所有区域的点数组

    var pointArray = [];

/*画遮蔽层的相关方法

*思路: 首先在中国地图最外画一圈,圈住理论上所有的中国领土,然后再将每个闭合区域合并进来,并全部连到西北角。

*      这样就做出了一个经过多次西北角的闭合多边形*/

//定义中国东南西北端点,作为第一层

    var pNW = {lat:59.0,lng:73.0}

var pNE = {lat:59.0,lng:136.0}

var pSE = {lat:3.0,lng:136.0}

var pSW = {lat:3.0,lng:73.0}

//向数组中添加一次闭合多边形,并将西北角再加一次作为之后画闭合区域的起点

    var pArray = [];

pArray.push(pNW);

pArray.push(pSW);

pArray.push(pSE);

pArray.push(pNE);

pArray.push(pNW);

//循环添加各闭合区域

    for (var i =0;i

//添加显示用标签层

      var label =new BMap.Label(blist[i].name, {offset:new BMap.Size(20, -10)});

label.hide();

map.addOverlay(label);

//添加多边形层并显示

      var ply =new BMap.Polygon(blist[i].points, {

strokeWeight:5,

strokeColor:"#FF0000",

fillOpacity:0.01,

fillColor:" #FFFFFF"

      });//建立多边形覆盖物

      ply.name =blist[i].name;

ply.label =label;

ply.addEventListener("click",click);

ply.addEventListener("mouseover",mouseover);

ply.addEventListener("mouseout",mouseout);

ply.addEventListener("mousemove",mousemove);

map.addOverlay(ply);

//添加名称标签层

      var centerlabel =new BMap.Label(blist[i].name, {offset:new BMap.Size(0,0)});

centerlabel.setPosition(ply.getBounds().getCenter());

map.addOverlay(centerlabel);

//将点增加到视野范围内

      var path =ply.getPath();

pointArray =pointArray.concat(path);

//将闭合区域加到遮蔽层上,每次添加完后要再加一次西北角作为下次添加的起点和最后一次的终点

      pArray =pArray.concat(path);

pArray.push(pArray[0]);

}

//限定显示区域,需要引用api库

    var boundply =new BMap.Polygon(pointArray);

BMapLib.AreaRestriction.setBounds(map,boundply.getBounds());

map.setViewport(pointArray);//调整视野

//添加遮蔽层

    var plyall =new BMap.Polygon(pArray, {

strokeOpacity:0.0000001,

strokeColor:"#000000",

strokeWeight:0.00001,

fillColor:"#000000",

fillOpacity:0.4

    });//建立多边形覆盖物

    map.addOverlay(plyall);

}

setTimeout(function () {

getBoundary();

},100);

</script>

</body>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,076评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,658评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,732评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,493评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,591评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,598评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,601评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,348评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,797评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,114评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,278评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,953评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,585评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,202评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,180评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,139评论 2 352

推荐阅读更多精彩内容