地图
地图
地图数据的获取
声明
- 之前提供的矢量地图数据来自第三方,由于部分数据不符合国家《测绘法》规定,BI发布版中不再打包提供地图数据
- 由于行政区域是不断在变动的,离线地图文件很容易过期,对地图精度要求较高的用户请向相关权威部门申请地图数据
- 离线区域地图从技术上来说仅仅为区块示意图,其目的为展示不同区块的数据强度,精准的边界线数据往往体积非常大,网络请求也会变慢,因此地图可视化过程中经常会用到轮廓数据精简手段
精简之后的轮廓数据,势必会有一些细节丢失,但这并不代表开发者、分析师、厂商的任何政治立场,请勿过渡解读

- 如果用户对使用要求严格,请使用中国地图(经纬度地图/百度在线地图),使用前通过在百度地图开发平台付费申请apikey
一些推荐地图信息获取地址, 以及下载配置:
github geoJson-cn
- 下载geoJson-cn数据,拷贝mapdata文件夹到bi的
user-files/ext文件夹
- 更新区域索引:用管理员账号登录bi平台,在管理->图表配置->区域地图索引中填入
ext/mapdata/area-code/index.json文件内容
- 刷新页面即可生效
- 关于地图数据相关的操作的详细说明请参考区域地图数据自定义
延申阅读
区域地图工作原理
原理
- 地图绘制首先要有符合规范的
地图数据用于绘制地图轮廓, IBI图形库ECharts使用GeoJson 格式的数据,具体格式见 - 有了地图轮廓绘制之后,第二步是把自己的数据映射到地图上去
- 映射方式分为两种: 区域映射与经纬度映射。可以把地图轮廓想象为一个坐标系,
区域映射以名称为坐标的一维坐标系经纬度映射以经纬度为坐标的二维坐标系
- 百度在线地图,不需要准备
地图数据,通过百度地图在线服务绘制地图轮廓,数据映射为经纬度映射
几种地图说明
| 地图类型 | 数据查询类型 | 映射方式 |
|---|---|---|
| 区域地图 | 聚合数据 | 区域名称 |
| 3D地图 | 聚合数据 | 区域名称,标线地图(区域名称或经纬) |
| 3D地球 | 聚合数据 | 城市或国家名称 |
| 世界地图(也是一种区域地图) | 聚合数据 | 国家名称 |
| 中国地图本地(经纬度地图) | 明细数据 | 经纬度数据 |
| 中国地图(经纬度地图/百度在线地图) | 明细数据 | 经纬度数据 |
区域地图
顾名思义区域地图是映射的地图的区块,在以区域名称为坐标的一维坐标系上,用户提供的数据名称和区块名称能对上号,则该名称对应的区域被点亮(视觉映射),下图为默认的中国三级行政区域第一级区域

区域选择
- 区域选择,地图的区域可以选择,选定了区域之后,数据想要在地图上被正确映射就必须提供对应的区域数据

中国三级行政区域
一级区域为全国省级区、直辖市、自治区、特别行政区, 二级区域为地级市, 三级区域为区/县/县级市
图层级别选定
用户在选定地图数据之后,取消区域自适应勾选,可以选定固定的级别的区域

常见问题
Q: 我可以在一级中国雄鸡图上映射城市区域吗?
A: 不可以,一级地图的区块为省份,你可以自己准备一张按城市分割的地图数据,通过自定义区域地图,映射城市区域。
你还可以选择用经纬度地图,数据类型设置为城市,展示类型为散点实现需求
区域下钻
区域自适应用于地图下钻,要求有和区域地图级别对应的层级维度, 区域自适应勾选之后点击下钻操作,上一级数据被限定于点击的区域,改区域会用来自动改变地图图层

中国地图本地(经纬度地图)
区域选择
中国地图本地区域选择与区域地图所使用的地图数据(geo data)是相同的,不同的是区域地图映射到地图的区块,经纬度地图映射的是地图上的点或线(两个经纬度点连线)
数据配置
使用者需提供经纬度数据明细数据,数据不会做聚合操作,也就是明细数据。
考虑到用户的数据会出现经纬度组合一个字段、经纬度分开存储,我们也准备了相应的数据配置项应对;

数据配置
Q: 经纬度映射,数据配置里面有一个名称选项?
A: 我们内置了一套中国城市经纬度的字典,方便只有城市名称的情况下也能使用经纬度地图。使用城市名称做数据映射需要手工对数据进行聚合
城市经纬度字典
{
"阿克苏地区": [80.260604, 41.168779],
"和田地区": [79.922211, 37.114157],
"上海": [121.480237, 31.236305],
"东莞": [113.758231, 23.026997],
"东营": [118.588614, 37.454925],
"中山": [113.399023, 22.522262],
"临汾": [111.526153, 36.094052],
"临沂": [118.36299, 35.110531],
"丹东": [124.362564, 40.00569],
"丽水": [119.929503, 28.472979],
"乌鲁木齐": [87.623314, 43.832806],
"佛山": [113.128432, 23.027707],
"保定": [115.471052, 38.880055],
"兰州": [103.840692, 36.067312],
"包头": [109.846755, 40.663636],
"北京": [116.413554, 39.911013],
"北海": [109.126614, 21.486955],
"南京": [118.802891, 32.064735],
"南宁": [108.373351, 22.823037],
"南昌": [115.864528, 28.687675],
"南通": [120.900301, 31.985237],
"厦门": [118.095915, 24.485821],
"台州": [121.426996, 28.662297],
"合肥": [117.235447, 31.82687],
"呼和浩特": [111.758518, 40.847461],
"咸阳": [108.715712, 34.335599],
"哈尔滨": [126.542417, 45.807782],
"唐山": [118.187036, 39.636673],
"嘉兴": [120.762045, 30.750912],
"大同": [113.306446, 40.082539],
"大连": [121.621391, 38.919345],
"天津": [117.205914, 39.090908],
"太原": [112.55706, 37.876885],
"威海": [122.128245, 37.519322],
"宁波": [121.556686, 29.880177],
"宝鸡": [107.243899, 34.367747],
"宿迁": [118.282062, 33.967686],
"常州": [119.980142, 31.816791],
"广州": [113.270793, 23.135308],
"廊坊": [116.69034, 39.54352],
"延安": [109.496361, 36.591003],
"张家口": [114.894165, 40.830172],
"徐州": [117.29235, 34.210143],
"德州": [116.365825, 37.441313],
"惠州": [114.423348, 23.116409],
"成都": [104.071216, 30.576279],
"扬州": [119.419107, 32.39986],
"承德": [117.969798, 40.957855],
"拉萨": [91.121025, 29.650088],
"无锡": [120.318954, 31.496704],
"日照": [119.533606, 35.422798],
"昆明": [102.839667, 24.885953],
"杭州": [120.161693, 30.280059],
"枣庄": [117.328513, 34.816569],
"柳州": [109.42198, 24.331519],
"株洲": [113.140431, 27.833737],
"武汉": [114.311831, 30.598428],
"汕头": [116.688739, 23.359289],
"江门": [113.088165, 22.584459],
"沈阳": [123.438973, 41.811339],
"沧州": [116.845272, 38.31022],
"河源": [114.707097, 23.749829],
"泉州": [118.682316, 24.880242],
"泰安": [117.094893, 36.205905],
"泰州": [119.932115, 32.4612],
"济南": [117.001319, 36.671627],
"济宁": [116.593852, 35.420269],
"海口": [110.206424, 20.050057],
"淄博": [118.061254, 36.819182],
"淮安": [119.022429, 33.616272],
"深圳": [114.066112, 22.548515],
"清远": [113.062619, 23.688238],
"温州": [120.705869, 28.001095],
"渭南": [109.516739, 34.505687],
"湖州": [120.094566, 30.899015],
"湘潭": [112.950575, 27.83585],
"滨州": [117.9792, 37.388387],
"潍坊": [119.168138, 36.713212],
"烟台": [121.454425, 37.469868],
"玉溪": [102.5537, 24.357512],
"珠海": [113.583235, 22.276392],
"盐城": [120.168187, 33.355301],
"盘锦": [122.077269, 41.125939],
"石家庄": [114.520828, 38.048684],
"福州": [119.302938, 26.080447],
"秦皇岛": [119.606184, 39.941259],
"绍兴": [120.586673, 30.036519],
"聊城": [115.992077, 36.462681],
"肇庆": [112.47177, 23.052984],
"舟山": [122.214339, 29.991092],
"苏州": [120.589613, 31.304566],
"莱芜": [117.683221, 36.219357],
"菏泽": [115.487696, 35.239435],
"营口": [122.241475, 40.672565],
"葫芦岛": [120.843388, 40.717364],
"衡水": [115.676942, 37.745166],
"衢州": [118.880768, 28.941661],
"西宁": [101.784269, 36.623477],
"西安": [108.946306, 34.347436],
"贵阳": [106.636816, 26.652747],
"连云港": [119.229571, 34.602342],
"邢台": [114.510889, 37.076646],
"邯郸": [114.545808, 36.631222],
"郑州": [113.631349, 34.753488],
"鄂尔多斯": [109.787314, 39.61463],
"重庆": [106.557165, 29.570997],
"金华": [119.654027, 29.084455],
"铜川": [108.951558, 34.902957],
"银川": [106.238976, 38.492392],
"镇江": [119.431494, 32.195688],
"长春": [125.33017, 43.82178],
"长沙": [112.945333, 28.233971],
"长治": [113.123046, 36.201585],
"阳泉": [113.587087, 37.86234],
"青岛": [120.389445, 36.072358],
"韶关": [113.603757, 24.816174],
"九江": [116.007993, 29.711328],
"大庆": [125.109727, 46.593216],
"宁德": [119.554701, 26.671748],
"忻州": [112.740804, 38.422382],
"石嘴山": [106.39078, 38.989783],
"池州": [117.497839, 30.67098],
"淮南": [117.006189, 32.631837],
"吐鲁番地区": [89.196029, 42.957303],
"宜昌": [111.292971, 30.697602],
"景德镇": [117.184967, 29.274337],
"安庆": [117.070127, 30.548594],
"怒江傈僳族自治州": [98.863189, 25.823736],
"白城": [122.845302, 45.6254],
"萍乡": [113.86077, 27.62897],
"抚州": [116.364627, 27.953603],
"朝阳": [120.457301, 41.579487],
"海东": [102.003965, 36.406412],
"湘西土家族苗族自治州": [109.745507, 28.317399],
"鹰潭": [117.075765, 28.265879],
"阿拉善盟": [105.735357, 38.857806],
"大阪府": [0, 0],
"鹤岗": [130.304284, 47.356043],
"吴忠": [106.205161, 38.003863],
"石河子": [86.085507, 44.312423],
"开封": [114.313904, 34.802941],
"延边朝鲜族自治州": [129.515602, 42.897211],
"白银": [104.144182, 36.550821],
"吕梁": [111.148086, 37.525476],
"随州": [113.389071, 31.696341],
"雅安": [103.04636, 30.021277],
"平顶山": [113.198935, 33.772051],
"阜新": [121.676518, 42.027983],
"普洱": [100.98114, 22.788486],
"三亚": [109.518646, 18.258217],
"赣州": [114.94126, 25.837179],
"广元": [105.849993, 32.441808],
"锦州": [121.133631, 41.100869],
"南充": [106.117231, 30.843297],
"衡阳": [112.578397, 26.899517],
"齐齐哈尔": [123.924531, 47.360087],
"兴安盟": [122.044544, 46.088444],
"乌海": [106.80185, 39.660154],
"楚雄彝族自治州": [101.534082, 25.051226],
"伊春": [128.84704, 47.733329],
"陇南": [104.928233, 33.406825],
"荆门": [112.205843, 31.041792],
"辽源": [125.150107, 42.8943],
"怀化": [110.008116, 27.575595],
"牡丹江": [129.638976, 44.558647],
"黄南藏族自治州": [102.021495, 35.526125],
"湛江": [110.365494, 21.277163],
"天水": [105.731276, 34.587162],
"黔东南苗族侗族自治州": [107.990602, 26.589858],
"云浮": [112.051045, 22.921154],
"安康": [109.03592, 32.690575],
"日喀则地区": [88.956063, 29.26816],
"海北藏族自治州": [100.907395, 36.960702],
"海西蒙古族藏族自治州": [97.377823, 37.382839],
"吉安": [115.00027, 27.119751],
"黄石": [115.045433, 30.205336],
"宿州": [116.970454, 33.652034],
"茂名": [110.931773, 21.669051],
"阳江": [111.989051, 21.864421],
"信阳": [114.099264, 32.153186],
"三门峡": [111.206832, 34.778442],
"咸宁": [114.328967, 29.847123],
"许昌": [113.858804, 34.041737],
"保山": [99.168373, 25.117882],
"鹤壁": [114.304044, 35.752656],
"运城": [111.013379, 35.032587],
"达州": [107.474504, 31.214347],
"常德": [111.704994, 29.037723],
"酒泉": [98.500427, 39.738615],
"马鞍山": [118.512691, 31.67633],
"南阳": [112.535009, 32.996701],
"邵阳": [111.474133, 27.245167],
"黔南布依族苗族自治州": [107.528663, 26.260586],
"孝感": [113.922962, 30.930712],
"安顺": [105.952622, 26.259904],
"辽阳": [123.243726, 41.274452],
"黔西南布依族苗族自治州": [104.910858, 25.095974],
"克拉玛依": [84.89587, 45.585765],
"庆阳": [107.649305, 35.716096],
"呼伦贝尔": [119.77221, 49.217977],
"六盘水": [104.836786, 26.599086],
"新余": [114.923664, 27.823541],
"七台河": [131.009618, 45.776512],
"商丘": [115.662798, 34.420378],
"漯河": [114.02323, 33.587703],
"乌兰察布": [113.140223, 40.999972],
"潜江": [112.905773, 30.407633],
"定西": [104.631662, 35.587354],
"鸡西": [130.976161, 45.300906],
"汕尾": [115.381693, 22.791322],
"四平": [124.356844, 43.172447],
"西双版纳傣族自治州": [100.803836, 22.013792],
"遂宁": [105.599152, 30.539156],
"商洛": [109.94688, 33.876525],
"海南藏族自治州": [100.626831, 36.292132],
"文山壮族苗族自治州": [104.221606, 23.404187],
"六安": [116.529651, 31.741226],
"张家界": [110.484925, 29.122477],
"潮州": [116.62943, 23.662923],
"蚌埠": [117.395835, 32.921498],
"桂林": [110.296442, 25.279893],
"甘南藏族自治州": [102.917605, 34.98901],
"驻马店": [114.029465, 33.017546],
"林芝地区": [94.368109, 29.654792],
"百色": [106.624969, 23.907845],
"鞍山": [123.000974, 41.114122],
"郴州": [113.021311, 25.776711],
"巴中": [106.753912, 31.872851],
"恩施土家族苗族自治州": [109.494763, 30.277908],
"十堰": [110.80454, 32.635042],
"临沧": [100.10566, 23.914336],
"泸州": [105.449092, 28.877577],
"平凉": [106.671741, 35.549266],
"宣城": [118.765196, 30.946576],
"绵阳": [104.686164, 31.473364],
"佳木斯": [130.32696, 46.806581],
"遵义": [106.933658, 27.731749],
"钦州": [108.66089, 21.985392],
"玉树藏族自治州": [97.01308, 33.011061],
"本溪": [123.773468, 41.299847],
"朔州": [112.438184, 39.33789],
"毕节": [105.333323, 27.408562],
"张掖": [100.456221, 38.932187],
"南平": [118.1843, 26.647662],
"濮阳": [115.035917, 35.767586],
"宜宾": [104.648103, 28.75761],
"铜仁": [109.168558, 27.674903],
"松原": [124.831633, 45.147201],
"漳州": [117.653827, 24.519197],
"梧州": [111.285647, 23.482873],
"洛阳": [112.460033, 34.624376],
"龙岩": [117.023668, 25.081257],
"莆田": [119.014232, 25.45996],
"济源": [112.609314, 35.072867],
"哈密地区": [93.522785, 42.824642],
"昭通": [103.723311, 27.344057],
"大理白族自治州": [100.274223, 25.612206],
"昌吉回族自治州": [87.314822, 44.016923],
"迪庆藏族自治州": [99.70948, 27.825264],
"黑河": [127.535014, 50.251193],
"吉林": [126.556073, 43.843512],
"广安": [106.639772, 30.461708],
"黄山": [118.174807, 30.133213],
"德阳": [104.404319, 31.133105],
"河池": [108.091898, 24.698828],
"益阳": [112.361677, 28.559818],
"通化": [125.946506, 41.733906],
"永州": [111.618703, 26.426612],
"周口": [114.703433, 33.631958],
"梅州": [116.129179, 24.294311],
"锡林郭勒盟": [116.054141, 43.939525],
"固原": [106.24917, 36.021609],
"滁州": [118.323252, 32.308165],
"荆州": [112.24722, 30.340606],
"芜湖": [118.439561, 31.358798],
"襄阳": [112.250093, 32.229169],
"吉隆坡": [0, 0],
"榆林": [109.741195, 38.290886],
"果洛藏族自治州": [100.251341, 34.477207],
"玉林": [110.18743, 22.660656],
"临夏回族自治州": [103.217303, 35.607475],
"鄂州": [114.901557, 30.396522],
"晋中": [112.759375, 37.692757],
"巴音郭楞蒙古自治州": [86.151584, 41.770226],
"澳门": [113.549403, 22.192961],
"内江": [105.065028, 29.585836],
"揭阳": [116.37922, 23.555773],
"通辽": [122.251207, 43.658363],
"阜阳": [115.821389, 32.895879],
"中卫": [105.203332, 37.506058],
"铜陵": [117.818795, 30.950899],
"红河哈尼族彝族自治州": [103.38215, 23.369914],
"曲靖": [103.802685, 25.496328],
"香港": [114.171994, 22.281089],
"汉中": [107.030197, 33.07382],
"乐山": [103.77193, 29.558141],
"新乡": [113.933349, 35.308973],
"晋城": [112.857706, 35.496081],
"巴彦淖尔": [107.394129, 40.749427],
"武威": [102.644524, 37.934078],
"岳阳": [113.135679, 29.363262],
"赤峰": [118.895463, 42.264586],
"白山": [126.431052, 41.94643],
"攀枝花": [101.725262, 26.588109],
"黄冈": [114.878872, 30.459422],
"绥化": [126.975678, 46.658789],
"双鸭山": [131.165442, 46.652966],
"凉山彝族自治州": [102.273965, 27.887685],
"伊犁哈萨克自治州": [81.330697, 43.922815],
"德宏傣族景颇族自治州": [98.591419, 24.438031],
"安阳": [114.3996, 36.103649],
"三明": [117.645742, 26.269683],
"宜春": [114.422683, 27.820089],
"上饶": [117.950028, 28.460864],
"自贡": [104.784891, 29.345379],
"娄底": [112.001082, 27.703196],
"丽江": [100.23357, 26.862521],
"防城港": [108.361138, 21.693439],
"淮北": [116.804878, 33.96064],
"儋州": [109.587145, 19.527081],
"怒江州": [98.863189, 25.823736],
"焦作": [113.248557, 35.221493],
"铁岭": [123.848797, 42.292573],
"抚顺": [123.963595, 41.886078],
"巢湖": [117.88049, 31.608733],
"西双版纳": [100.803836, 22.013792],
"德宏州": [98.591419, 24.438031],
"恩施": [109.485727, 30.30089],
"湘西州": [109.745507, 28.317399],
"西昌": [102.269526, 27.900601],
"阿坝州": [102.231186, 31.905609],
"黔南州": [107.528663, 26.260586],
"黔东南州": [107.990602, 26.589858],
"黔西南州": [104.910858, 25.095974],
"大理州": [100.274223, 25.612206],
"红河州": [103.38215, 23.369914],
"文山州": [104.221606, 23.404187],
"楚雄州": [101.534082, 25.051226],
"迪庆州": [99.70948, 27.825264],
"山南地区": [91.779601, 29.24309],
"那曲地区": [92.0578, 31.482375],
"博尔塔拉蒙古自治州": [82.073064, 44.912168],
"临夏州": [103.217303, 35.607475],
"甘南州": [102.917605, 34.98901],
"格尔木": [94.909745, 36.408588],
"奎屯": [84.90832, 44.432645],
"亳州": [115.7786, 33.8445],
"崇左": [107.3647, 22.3765],
"定安县": [110.3588, 19.6814],
"东方": [108.6518, 19.0953],
"贵港": [109.5989, 23.1115],
"贺州": [111.5666, 24.4035],
"嘉峪关": [98.2891, 39.7731],
"金昌": [102.1880, 38.5200],
"来宾": [109.2214, 23.7503],
"乐东黎族自治县": [109.1730, 18.7502],
"陵水黎族自治县": [110.0375, 18.5060],
"眉山": [103.8485, 30.0754],
"琼海": [110.4921, 19.2396],
"台湾": [120.9605, 23.6978],
"天门": [113.3169, 30.8657],
"屯昌县": [110.1034, 19.3517],
"万宁": [110.3816, 18.8078],
"文昌": [113.8259, 25.8228],
"五指山": [109.5169, 18.7751],
"仙桃": [113.4234, 30.3608],
"资阳": [104.6520, 30.1246],
"安徽": [117.17, 31.52],
"福建": [119.18, 26.05],
"甘肃": [103.51, 36.04],
"广东": [113.14, 23.08],
"广西": [108.19, 22.48],
"贵州": [106.42, 26.35],
"海南": [110.20, 20.02],
"河北": [114.30, 38.02],
"河南": [113.40, 34.46],
"黑龙江": [126.36, 45.44],
"湖北": [114.17, 30.35],
"湖南": [112.59, 28.12],
"江苏": [118.46, 32.03],
"江西": [115.55, 28.40],
"辽宁": [123.25, 41.48],
"内蒙古": [111.41, 40.48],
"宁夏": [106.16, 38.27],
"青海": [101.48, 36.38],
"山东": [117.00, 36.40],
"山西": [112.33, 37.54],
"陕西": [108.57, 34.17],
"四川": [104.04, 30.40],
"西藏": [91.08, 29.39],
"新疆": [87.36, 43.45],
"云南": [102.42, 25.04],
"浙江": [120.10, 30.16]
}中国地图(经纬度地图/百度在线地图)

该地图调用百度在线地图, 数据要求和上面的中国地图本地一致, 需要联网请求百度地图 API, 基于明细数据渲染(需自行申请百度开发者ak)
百度地图开发密钥获取流程: 点击这里
注意:百度地图开发者密钥商用需要向百度公司缴费获取权限
设置开发者密钥
通过扩展配置,增加百度地图开发者调用

[
[
"script", {
"src": "http://api.map.baidu.com/api?v=2.0&ak=xxxx"
}
]
]百度地图数据配置
数据配置与本地地图完全一致,经纬度映射,明细数据
使用BMap高阶开发
BMap为开发者提供了很多强大的图层样式控制API,百度地图开放平台JavaScript API v3.0, 在IBI平台上用户可以通过开发者模式,在afterSetOption函数中进行控制
afterSetOption = function(chart) {
const map = chart.getModel().getComponent('bmap').getBMap();
var top_left_control = new BMap.ScaleControl({anchor: BMAP_ANCHOR_TOP_LEFT});
map.addControl(new BMap.NavigationControl());
map.addControl(new BMap.OverviewMapControl());
}