多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
设计页 路径D:\ireport365\ireport365.war\WEB-INF\pages\enduser\designer\index.jsp 添加下面的代码 `_scripts.push({url: "http://gallery.echartsjs.com/dep/echarts/map/js/world.js?v="+updateVersion});` 路径 D:\ireport365\ireport365.war\js\enduser\designer\vs-component-echarts.js 一 添加世界图 ~~~ { name: "", type: "worldMap", coverImage: contextPath + "/images/componenttypes/" + locale + "/echarts/zh_kline.png", coverImageWidth: "50%", tip: "世界地图" } ~~~ 二 添加中英文转换对象和世界图 option 模板对象 ~~~ // 世界地图英文汉语转换对象 start var nameMap = { 'Afghanistan':'阿富汗', 'Albania':'阿尔巴尼亚', 'Algeria':'阿尔及利亚', 'Andorra':'安道尔', 'Angola':'安哥拉', 'Antarctica':'南极洲', 'Antigua and Barbuda':'安提瓜和巴布达', 'Argentina':'阿根廷', 'Armenia':'亚美尼亚', 'Australia':'澳大利亚', 'Austria':'奥地利', 'Azerbaijan':'阿塞拜疆', 'The Bahamas':'巴哈马', 'Bahrain':'巴林', 'Bangladesh':'孟加拉国', 'Barbados':'巴巴多斯', 'Belarus':'白俄罗斯', 'Belgium':'比利时', 'Belize':'伯利兹', 'Benin':'贝宁', 'Bermuda':'百慕大', 'Bhutan':'不丹', 'Bolivia':'玻利维亚', 'Bosnia and Herzegovina':'波斯尼亚和黑塞哥维那', 'Botswana':'博茨瓦纳', 'Brazil':'巴西', 'Brunei':'文莱', 'Bulgaria':'保加利亚', 'Burkina Faso':'布基纳法索', 'Burundi':'布隆迪', 'Cambodia':'柬埔寨', 'Cameroon':'喀麦隆', 'Canada':'加拿大', 'Cape Verde':'佛得角', 'Central African Republic':'中非共和国', 'Chad':'乍得', 'Chile':'智利', 'China':'中国', 'Colombia':'哥伦比亚', 'Comoros':'科摩罗', 'Republic of the Congo':'刚果共和国', 'Costa Rica':'哥斯达黎加', 'Croatia':'克罗地亚', 'Cuba':'古巴', 'Cyprus':'塞浦路斯', 'Czech Republic':'捷克共和国', 'Denmark':'丹麦', 'Djibouti':'吉布提', 'Dominica':'多米尼加', 'Dominican Republic':'多明尼加共和国', 'Ecuador':'厄瓜多尔', 'Egypt':'埃及', 'El Salvador':'萨尔瓦多', 'Equatorial Guinea':'赤道几内亚', 'Eritrea':'厄立特里亚', 'Estonia':'爱沙尼亚', 'Ethiopia':'埃塞俄比亚', 'Falkland Islands':'福克兰群岛', 'Faroe Islands':'法罗群岛', 'Fiji':'斐济', 'Finland':'芬兰', 'France':'法国', 'French Guiana':'法属圭亚那', 'French Southern and Antarctic Lands':'法属南半球和南极领地', 'Gabon':'加蓬', 'Gambia':'冈比亚', 'Gaza Strip':'加沙', 'Georgia':'格鲁吉亚', 'Germany':'德国', 'Ghana':'加纳', 'Greece':'希腊', 'Greenland':'格陵兰', 'Grenada':'格林纳达', 'Guadeloupe':'瓜德罗普', 'Guatemala':'危地马拉', 'Guinea':'几内亚', 'Guinea Bissau':'几内亚比绍', 'Guyana':'圭亚那', 'Haiti':'海地', 'Honduras':'洪都拉斯', 'Hong Kong':'香港', 'Hungary':'匈牙利', 'Iceland':'冰岛', 'India':'印度', 'Indonesia':'印尼', 'Iran':'伊朗', 'Iraq':'伊拉克', 'Iraq-Saudi Arabia Neutral Zone':'伊拉克阿拉伯中立区', 'Ireland':'爱尔兰', 'Isle of Man':'马恩岛', 'Israel':'以色列', 'Italy':'意大利', 'Ivory Coast':'科特迪瓦', 'Jamaica':'牙买加', 'Jan Mayen':'扬马延岛', 'Japan':'日本', 'Jordan':'约旦', 'Kazakhstan':'哈萨克斯坦', 'Kenya':'肯尼亚', 'Kerguelen':'凯尔盖朗群岛', 'Kiribati':'基里巴斯', 'North Korea':'北朝鲜', 'South Korea':'韩国', 'Kuwait':'科威特', 'Kyrgyzstan':'吉尔吉斯斯坦', 'Laos':'老挝', 'Latvia':'拉脱维亚', 'Lebanon':'黎巴嫩', 'Lesotho':'莱索托', 'Liberia':'利比里亚', 'Libya':'利比亚', 'Liechtenstein':'列支敦士登', 'Lithuania':'立陶宛', 'Luxembourg':'卢森堡', 'Macau':'澳门', 'Macedonia':'马其顿', 'Madagascar':'马达加斯加', 'Malawi':'马拉维', 'Malaysia':'马来西亚', 'Maldives':'马尔代夫', 'Mali':'马里', 'Malta':'马耳他', 'Martinique':'马提尼克', 'Mauritania':'毛里塔尼亚', 'Mauritius':'毛里求斯', 'Mexico':'墨西哥', 'Moldova':'摩尔多瓦', 'Monaco':'摩纳哥', 'Mongolia':'蒙古', 'Morocco':'摩洛哥', 'Mozambique':'莫桑比克', 'Myanmar':'缅甸', 'Namibia':'纳米比亚', 'Nepal':'尼泊尔', 'Netherlands':'荷兰', 'New Caledonia':'新喀里多尼亚', 'New Zealand':'新西兰', 'Nicaragua':'尼加拉瓜', 'Niger':'尼日尔', 'Nigeria':'尼日利亚', 'Northern Mariana Islands':'北马里亚纳群岛', 'Norway':'挪威', 'Oman':'阿曼', 'Pakistan':'巴基斯坦', 'Panama':'巴拿马', 'Papua New Guinea':'巴布亚新几内亚', 'Paraguay':'巴拉圭', 'Peru':'秘鲁', 'Philippines':'菲律宾', 'Poland':'波兰', 'Portugal':'葡萄牙', 'Puerto Rico':'波多黎各', 'Qatar':'卡塔尔', 'Reunion':'留尼旺岛', 'Romania':'罗马尼亚', 'Russia':'俄罗斯', 'Rwanda':'卢旺达', 'San Marino':'圣马力诺', 'Sao Tome and Principe':'圣多美和普林西比', 'Saudi Arabia':'沙特阿拉伯', 'Senegal':'塞内加尔', 'Seychelles':'塞舌尔', 'Sierra Leone':'塞拉利昂', 'Singapore':'新加坡', 'Slovakia':'斯洛伐克', 'Slovenia':'斯洛文尼亚', 'Solomon Islands':'所罗门群岛', 'Somalia':'索马里', 'South Africa':'南非', 'Spain':'西班牙', 'Sri Lanka':'斯里兰卡', 'St. Christopher-Nevis':'圣', 'St. Lucia':'圣露西亚', 'St. Vincent and the Grenadines':'圣文森特和格林纳丁斯', 'Sudan':'苏丹', 'Suriname':'苏里南', 'Svalbard':'斯瓦尔巴特群岛', 'Swaziland':'斯威士兰', 'Sweden':'瑞典', 'Switzerland':'瑞士', 'Syria':'叙利亚', 'Taiwan':'台湾', 'Tajikistan':'塔吉克斯坦', 'United Republic of Tanzania':'坦桑尼亚', 'Thailand':'泰国', 'Togo':'多哥', 'Tonga':'汤加', 'Trinidad and Tobago':'特里尼达和多巴哥', 'Tunisia':'突尼斯', 'Turkey':'土耳其', 'Turkmenistan':'土库曼斯坦', 'Turks and Caicos Islands':'特克斯和凯科斯群岛', 'Uganda':'乌干达', 'Ukraine':'乌克兰', 'United Arab Emirates':'阿联酋', 'United Kingdom':'英国', 'United States of America':'美国', 'Uruguay':'乌拉圭', 'Uzbekistan':'乌兹别克斯坦', 'Vanuatu':'瓦努阿图', 'Venezuela':'委内瑞拉', 'Vietnam':'越南', 'Western Sahara':'西撒哈拉', 'Western Samoa':'西萨摩亚', 'Yemen':'也门', 'Yugoslavia':'南斯拉夫', 'Democratic Republic of the Congo':'刚果民主共和国', 'Zambia':'赞比亚', 'Zimbabwe':'津巴布韦', 'South Sudan':'南苏丹', 'Somaliland':'索马里兰', 'Montenegro':'黑山', 'Kosovo':'科索沃', 'Republic of Serbia':'塞尔维亚', }; // 世界地图英文汉语转换对象 end // 世界地图对象 start worldMapOptionTemplate = { title: { show:false }, roam: true, tooltip: { show: true, trigger: "item", formatter: "{b}: {c}" }, dataRange: { show:false, y: "top", min: 0, max: 100, itemWidth: 12, itemHeight: 10, calculable: false, color: ["#ff3333", "orange", "yellow", "lime", "aqua"], textStyle: { color: "#000" } }, series: [{ type: 'map', mapType: 'world', nameMap: nameMap, roam: true, data: [], itemStyle: { normal: { label: { show: false, textStyle: { fontSize: "10", color: "#999" } }, borderColor: "#608EE1", borderWidth: 0.5, areaStyle: { color: "#022047" } }, }, markLine: { smooth: true, effect: { show: true, scaleSize: 1, period: 30, color: "#fff", shadowBlur: 10 }, itemStyle: { normal: { label: { show: true }, borderWidth: 1, lineStyle: { type: "solid", shadowBlur: 10 } } }, data: [] }, markPoint: { symbol: "emptyCircle", symbolSize: 0, effect: { show: true, shadowBlur: 0 }, itemStyle: { normal: { label: { show: false } }, emphasis: { label: { show: false, position: "top" } } }, data: [] }, }] }; // 世界地图对象 end ~~~ 二 在下面添加 类别 等 ![](https://box.kancloud.cn/b34f6c36de42fd6ed48ea52504156031_686x675.png) 三 在 chinaAreaMap 下面添加 如图的位置 ~~~ case "worldMap": delete option.legend; break; ~~~ ![](https://box.kancloud.cn/79730eb7c04cb4b5da45102931682120_760x212.png) 四 与chinaAreaMap chinaHeatMap 共用弹框代码 如图 ![](https://box.kancloud.cn/114175553f7a230ebc8742440e1c03d0_1064x843.png) 五 数据处理函数 ~~~ var internalRefreshWorldMapModelData = function () { var option = component.config.chartConfig; var dimensions = component.config.datasourceConfig.dimensions; var measures = component.config.datasourceConfig.measures; var data = component.context.data; var chartData = []; var chartDataMap = {}; var measureIdx = 0; if (component.config.receiveMeasureLink != null && component.config.receiveMeasureLink === true) { var newMeasures = scope.getSelectedLinkMeasure(component, component.config.datasourceConfig.measures); for (var i = 0; i < measures.length; i++) { if (newMeasures[i] != null) { measureIdx = i; break } } } for (var i = 0; i < data.length; i++) { var value = data[i][measures[measureIdx].name]; var name = factory._internalFindKvValue(component, data[i][dimensions[dimensions.length - 1].name]); chartData.push({ name: name, value: value }); var dataMap = chartDataMap[data[i][dimensions[dimensions.length - 1].name]]; if (dataMap == null) { dataMap = {}; chartDataMap[name] = dataMap } for (var m = 0; m < measures.length; m++) { dataMap[measures[m].name] = data[i][measures[m].name] } } option.series[0].data = chartData; option.series[0].name = measures[measureIdx].label; if (component.config["measureAlias_" + measureIdx] != null && component.config["measureAlias_" + measureIdx].length > 0) { option.series[0].name = component.config["measureAlias_" + measureIdx] } option.series[0].seriesIndex = measureIdx; var thresholdConfig = component.config.thresholdConfig[measures[measureIdx].name]; var splitList = []; if (thresholdConfig != null && thresholdConfig.length > 0) { var valueType = component.config["thresholdValueType_" + measures[measureIdx].name]; if (valueType == null) { valueType = "value" } var maxValue = parseFloat(component.config["maxValue_" + measures[measureIdx].name]); var minValue = parseFloat(component.config["minValue_" + measures[measureIdx].name]); if (isNaN(maxValue) || isNaN(minValue)) { var calculatedMaxValue = -9999999999; var calculatedMinValue = 9999999999; for (var i = 0; i < data.length; i++) { var value = data[i][measures[measureIdx].name]; calculatedMaxValue = Math.max(calculatedMaxValue, parseFloat(value)); calculatedMinValue = Math.min(calculatedMinValue, parseFloat(value)) } if (isNaN(maxValue)) { maxValue = calculatedMaxValue } if (isNaN(minValue)) { minValue = calculatedMinValue } } var minToMaxValue = maxValue - minValue; for (var i = 0; i < thresholdConfig.length; i++) { var fromValue = parseFloat(component.config[thresholdConfig[i].fromBind]); var toValue = parseFloat(component.config[thresholdConfig[i].toBind]); if (isNaN(fromValue) && isNaN(toValue)) { continue } if (valueType === "percent") { fromValue = fromValue * minToMaxValue; toValue = toValue * minToMaxValue } var color = component.config[thresholdConfig[i].colorBind]; var item = { color: color }; if (!isNaN(fromValue)) { item.start = fromValue } if (!isNaN(toValue)) { item.end = toValue } if (component.config.dataRangeUnit) { if (item.start == null) { item.label = "< " + item.end } else { if (item.end == null) { item.label = "> " + item.start } else { item.label = item.start + " - " + item.end } } item.label = item.label + component.config.dataRangeUnit } splitList.push(item) } } if (splitList.length === 0) { splitList = [{ start: 0, color: "#A8DAF6" }] } option.dataRange.splitList = splitList; option.data = chartDataMap; component.context.chart.setOption(option, true) }; ~~~ 六 调用数据处理函数 ~~~ case "worldMap": internalRefreshWorldMapModelData(); break; ~~~ 七 添加接收联动数据代码 在radar的接收联动代码 下面添加 ~~~ case "worldMap": var dataIndex = -1; // console.log(component.config.chartConfig) var option = component.config.chartConfig; // console.log(option) for (var i = 0; i < component.config.chartConfig.series[0].data.length; i++) { if ("" + component.config.chartConfig.series[0].data[i].name === "" + event.source.value) { console.log(component.config.chartConfig.series[0].data[i].name) dataIndex = i; break } } // console.log(dataIndex) if (dataIndex < 0) { component.context.chart.dispatchAction({ type: "hideTip" }); return } if (dataIndex > -1) { // console.log(event.source.value) component.context.chart.dispatchAction({ type: "showTip", name: event.source.value, seriesIndex: 0 }) } break; ~~~ 八 在 中国面积图 热力地图 弹框地图 的推动数据下面 添加 下面代码 如图的位置 ![](https://box.kancloud.cn/6c6adf4d3748a6d3e71edb820d7d8e6f_1005x768.png) ~~~ case "worldMap": component.context.chart.on("mouseover", function (param) { console.log(param.dataIndex) if (param.dataIndex < 0) { return } if (component.context.tooltipName != null && "" + component.context.tooltipName === "" + param.name) { return } component.context.tooltipName = param.name; scope.notifyDimensionValueChange(null, scope.getLastDimension(), param.name) }); break; ~~~ 九 在_buildChinaAreaMapAreaChartDescription 方法下面添加 下面的方法代码 ~~~ _buildWorldMapAreaChartDescription: function (dataCategory, scope, element, component, $compile) { dataCategory.groups.push({ name: "text", title: { text: vsLang.area_blocks }, elements: [{ title: vsLang.default_color, type: "colorpicker", bind: "areaColor" }, { title: vsLang.border_color, type: "colorpicker", bind: "areaBorderColor" }] }); dataCategory.groups.push({ name: "text", title: { text: vsLang.data_range_tool }, elements: [{ title: vsLang.display, type: "switch", bind: "showDataRange", on: vsLang.on, off: vsLang.off }, { title: vsLang.unit, type: "text-input-sl", bind: "dataRangeUnit" }, { title: vsLang.orientation, type: "radio-icon", bind: "dataRangeOrient", items: [{ name: vsLang.vertical, value: "vertical", icon: "fa fa-ellipsis-v" }, { name: vsLang.horizontal, value: "horizontal", icon: "fa fa-ellipsis-h" }] }, { title: vsLang.vertical_position_short, type: "radio-icon", bind: "dataRangePosY", items: [{ name: vsLang.position_top, value: "top", icon: "fa fa-minus", pStyle: "padding-top:0;padding-bottom:12px;" }, { name: vsLang.position_middle, value: "center", icon: "fa fa-minus", pStyle: "padding-top:6px;padding-bottom:6px;" }, { name: vsLang.position_bottom, value: "bottom", icon: "fa fa-minus", pStyle: "padding-top:12px;padding-bottom:0px;" }] }, { title: vsLang.horizontal_position_short, type: "radio-icon", bind: "dataRangePosX", items: [{ name: vsLang.position_left, value: "left", icon: "fa fa-align-left" }, { name: vsLang.position_center, value: "center", icon: "fa fa-align-center" }, { name: vsLang.position_right, value: "right", icon: "fa fa-align-right" }] }, { title: vsLang.vertical_offset_short, type: "configSlide", bind: "dataRangeOffsetY", config: { slideEnd: 1000 } }, { title: vsLang.horizontal_offset_short, type: "configSlide", bind: "dataRangeOffsetX", config: { slideEnd: 1000 } }, { title: vsLang.font_color, type: "colorpicker", bind: "dataRangeFontColor" }, { title: vsLang.font_size, type: "configSlide", bind: "dataRangeFontSize", config: { slideEnd: 100 } }, { title: vsLang.width, type: "configSlide", bind: "dataRangeWidth", config: { slideEnd: 100 } }, { title: vsLang.height, type: "configSlide", bind: "dataRangeHeight", config: { slideEnd: 100 } }] }); scope.$watch("component.config.showItemLabel", function(newValue, oldValue) { if (newValue != null && (oldValue == null || oldValue !== newValue)) { var option = component.config.chartConfig; option.series[0].itemStyle.normal.label.show = newValue; scope.component.context.chart.setOption(option, true) } }); scope.$watch("component.config.itemLabelSize", function(newValue, oldValue) { if (newValue != null && (oldValue == null || oldValue !== newValue)) { var option = component.config.chartConfig; option.series[0].itemStyle.normal.label.textStyle.fontSize = newValue; scope.component.context.chart.setOption(option, true) } }); scope.$watch("component.config.itemLabelColor", function(newValue, oldValue) { if (isValidColorValue(newValue)) { var option = component.config.chartConfig; option.series[0].itemStyle.normal.label.textStyle.color = newValue; scope.component.context.chart.setOption(option, true) } }); scope.$watch("component.config.areaBorderColor", function(newValue, oldValue) { if (newValue != null && (oldValue == null || oldValue !== newValue)) { var option = component.config.chartConfig; option.series[0].itemStyle.normal.borderColor = newValue; scope.component.context.chart.setOption(option, true) } }); scope.$watch("component.config.areaColor", function(newValue, oldValue) { if (isValidColorValue(newValue)) { var option = component.config.chartConfig; option.series[0].itemStyle.normal.areaStyle.color = newValue; scope.component.context.chart.setOption(option, true) } }); scope.$watch("component.config.showDataRange", function(newValue, oldValue) { if (newValue != null && (oldValue == null || oldValue !== newValue)) { var option = component.config.chartConfig; option.dataRange.show = newValue; scope.component.context.chart.setOption(option, true) } }); scope.$watch("component.config.dataRangeUnit", function(newValue, oldValue) { if (newValue != null && (oldValue == null || oldValue !== newValue)) { scope.$broadcast(event_refreshChartView, {}) } }); scope.$watch("component.config.dataRangeOrient", function(newValue, oldValue) { if (newValue != null && (oldValue == null || oldValue !== newValue)) { var option = component.config.chartConfig; option.dataRange.orient = newValue; scope.component.context.chart.setOption(option, true) } }); scope.$watch("component.config.dataRangePosY", function(newValue, oldValue) { if (newValue != null && (oldValue == null || oldValue !== newValue)) { var option = component.config.chartConfig; option.dataRange.y = newValue; scope.component.context.chart.setOption(option, true) } }); scope.$watch("component.config.dataRangeOffsetX", function(newValue, oldValue) { if (newValue != null && (oldValue == null || oldValue !== newValue)) { var option = component.config.chartConfig; option.dataRange.x = newValue; scope.component.context.chart.setOption(option, true) } }); scope.$watch("component.config.dataRangeOffsetY", function(newValue, oldValue) { if (newValue != null && (oldValue == null || oldValue !== newValue)) { var option = component.config.chartConfig; option.dataRange.y = newValue; scope.component.context.chart.setOption(option, true) } }); scope.$watch("component.config.dataRangePosX", function(newValue, oldValue) { if (newValue != null && (oldValue == null || oldValue !== newValue)) { var option = component.config.chartConfig; option.dataRange.x = newValue; scope.component.context.chart.setOption(option, true) } }); // 值域文字颜色 scope.$watch("component.config.dataRangeFontColor", function(newValue, oldValue) { if (isValidColorValue(newValue)) { var option = component.config.chartConfig; if (option.dataRange.textStyle == null) { option.dataRange.textStyle = {} } option.dataRange.textStyle.color = newValue; scope.component.context.chart.setOption(option, true) } }); scope.$watch("component.config.dataRangeFontSize", function(newValue, oldValue) { if (newValue != null && (oldValue == null || oldValue !== newValue)) { var option = component.config.chartConfig; if (option.dataRange.textStyle == null) { option.dataRange.textStyle = {} } option.dataRange.textStyle.fontSize = newValue; scope.component.context.chart.setOption(option, true) } }); scope.$watch("component.config.dataRangeWidth", function(newValue, oldValue) { if (newValue != null && (oldValue == null || oldValue !== newValue)) { var option = component.config.chartConfig; option.dataRange.itemWidth = newValue; scope.component.context.chart.setOption(option, true) } }); scope.$watch("component.config.dataRangeHeight", function(newValue, oldValue) { if (newValue != null && (oldValue == null || oldValue !== newValue)) { var option = component.config.chartConfig; option.dataRange.itemHeight = newValue; scope.component.context.chart.setOption(option, true) } }) }, ~~~ 十 在 热力图 弹框地图 面积地图 下面添加 如图的位置 ![](https://box.kancloud.cn/b28bd9aaf5f97b099a76caaef689119a_792x788.png) ~~~ case "worldMap": groupDesc.elements.push({ title: vsLang.value_type, type: "radio-icon", bind: "valueType" + identifier, items: [{ name: vsLang.value_original, icon: "fa fa-font", value: "value" }, { name: vsLang.value_percent, icon: "fa fa-percent", value: "percent" }] }); break; ~~~ 十一 新建 世界面积图 配置面板自定义服务 在中国面积图下面 添加 如图 ![](https://box.kancloud.cn/563051800935db16b8e845c4d70e75e1_973x804.png) ~~~ // 新建世界面积图自定义服务 if (component.type === "worldMap") { factory._buildWorldMapAreaChartDescription(chartCategory, scope, element, component, $compile); var valueMapCategory = { name: "valueMap", title: vsLang.area_mapping, groups: [] }; component.description.categories.push(valueMapCategory); factory._buildChinamapKeyValueMapChartDescription(valueMapCategory, scope, element, component, $compile); valueMapCategory.groups.push({ name: "text", title: { text: "", show: false }, elements: [{ title: vsLang.reload_component, type: "button", onClick: function () { scope.$broadcast(event_refreshChartView, {}) } }] }) } ~~~ 十二 在copy option 对象 添加 下面代码 ~~~ case "worldMap": option = angular.copy(worldMapOptionTemplate); delete option.series[0].markLine; delete option.series[0].markPoint; option.dataRange = { y: "top", itemWidth: 12, itemHeight: 10, splitList: [{ start: 140, color: "#dd6b66" }, { start: 70, end: 140, color: "#ea7e53" }, { start: 40, end: 70, color: "#e69d87" }, { start: 20, end: 40, color: "#8dc1a9" }, { start: 0, end: 20, color: "#73b9bc" }] }; option.series[0].data = [ {name:'卢旺达',value:56.99}, {name:'布隆迪',value:20.27}, {name:'尼泊尔',value:40.01}, {name:'乌干达',value:40.37}, {name:'老挝',value:71.28}, {name:'埃塞俄比亚',value:19.96}, {name:'马达加斯加',value:21.82}, {name:'海地',value:33.11}, {name:'也门',value:51.51}, {name:'肯尼亚',value:33.33}, {name:'菲律宾',value:68.82}, {name:'索马里',value:0}, {name:'阿富汗',value:15.94}, {name:'巴基斯坦',value:28.16}, {name:'朝鲜',value:0}, {name:'印度',value:33.2}, {name:'厄立特里亚',value:10.59}, {name:'哥伦比亚',value:143.51}, {name:'哥伦比亚',value:143.51}, {name:'巴布亚新几内亚',value:32.39}, {name:'布基纳法索',value:12.84}, {name:'马拉维',value:9.97}, {name:'埃及',value:53.39}, {name:'塞拉利昂',value:8.72}, {name:'尼加拉瓜',value:29.14}, {name:'坦桑尼亚',value:13.09}, {name:'尼日利亚',value:43.94}, {name:'尼日尔',value:6.35}, {name:'毛里塔尼亚',value:21.69}, {name:'喀麦隆',value:19.69}, {name:'新加坡',value:788.07}, {name:'缅甸',value:15.48}, {name:'印尼',value:49.68}, {name:'贝宁',value:11.62}, {name:'摩洛哥',value:44.39}, {name:'马里',value:10.68}, {name:'哥斯达黎加',value:124.23}, {name:'萨尔瓦多',value:53.55}, {name:'厄瓜多尔',value:69.56}, {name:'泰国',value:75.76}, {name:'斯里兰卡',value:40.52}, {name:'多米尼加',value:77.08}, {name:'韩国',value:312.71}, {name:'刚果民主共和国',value:4.37}, {name:'越南',value:18.4}, {name:'几内亚',value:5.92}, {name:'危地马拉',value:37.58}, {name:'利比里亚',value:4.31}, {name:'多哥',value:6.35}, {name:'秘鲁',value:64.13}, {name:'毛里求斯',value:100.04}, {name:'莫桑比克',value:5.08}, {name:'阿尔及利亚',value:53.74}, {name:'柬埔寨',value:9.37}, {name:'斯威士兰',value:45.26}, {name:'乍得',value:10.66}, {name:'塞内加尔',value:11.74}, {name:'津巴布韦',value:7.85}, {name:'黎巴嫩',value:95.02}, {name:'洪都拉斯',value:22.47}, {name:'伊拉克',value:47.76}, {name:'科特迪瓦',value:13.1}, {name:'孟加拉国',value:7.25}, {name:'赞比亚',value:13.51}, {name:'巴拿马',value:72.29}, {name:'中非共和国',value:3.97}, {name:'突尼斯',value:36.71}, {name:'加纳',value:11.49}, {name:'斐济',value:31.41}, {name:'安哥拉',value:32.99}, {name:'冈比亚',value:4.76}, {name:'中国',value:37.89}, {name:'刚果共和国',value:24.02}, {name:'古巴',value:45.95}, {name:'苏丹',value:14.59}, {name:'伊朗',value:49.76}, {name:'委内瑞拉',value:106.43}, {name:'土耳其',value:73.85}, {name:'牙买加',value:32.98}, {name:'叙利亚',value:0}, {name:'玻利维亚',value:13.1}, {name:'巴西',value:68.18}, {name:'阿联酋',value:204.32}, {name:'智利',value:70.17}, {name:'马来西亚',value:47.23}, {name:'苏里南',value:43.68}, {name:'前南马其顿',value:23.52}, {name:'加蓬',value:47.86}, {name:'日本',value:224.41}, {name:'阿尔巴尼亚',value:19.88}, {name:'墨西哥',value:42.05}, {name:'波多黎各',value:122.98}, {name:'以色列',value:137.51}, {name:'西班牙',value:139}, {name:'特立尼达和多巴哥',value:73.85}, {name:'卡塔尔',value:312.81}, {name:'克罗地亚',value:19.07}, {name:'乌拉圭',value:50.36}, {name:'塔吉克斯坦',value:3.13}, {name:'巴林',value:85.71}, {name:'巴拉圭',value:13.55}, {name:'沙特阿拉伯',value:75.26}, {name:'瑞士',value:290.61}, {name:'蒙古',value:10.27}, {name:'科威特',value:144.27}, {name:'圭亚那',value:11.3}, {name:'英国',value:142.92}, {name:'塞浦路斯',value:85.21}, {name:'阿根廷',value:36.4}, {name:'爱尔兰',value:170.27}, {name:'意大利',value:122.84}, {name:'南非',value:25.19}, {name:'荷兰',value:167.29}, {name:'黑山共和国',value:20.69}, {name:'利比亚',value:35.61}, {name:'亚美尼亚',value:9.26}, {name:'斯洛文尼亚',value:68.59}, {name:'波兰',value:35.51}, {name:'希腊',value:74.84}, {name:'纳米比亚',value:14.1}, {name:'德国',value:113.16}, {name:'阿曼',value:53.31}, {name:'格鲁吉亚',value:7.76}, {name:'卢森堡',value:261.76}, {name:'葡萄牙',value:56.74}, {name:'阿塞拜疆',value:14.7}, {name:'新喀里多尼亚',value:0}, {name:'吉尔吉斯斯坦',value:2.18}, {name:'新西兰',value:81.44}, {name:'乌兹别克斯坦',value:3.28}, {name:'塞尔维亚',value:12.33}, {name:'法国',value:91.28}, {name:'奥地利',value:102.69}, {name:'捷克共和国',value:39.81}, {name:'斯洛伐克',value:33.15}, {name:'拉脱维亚',value:21.6}, {name:'挪威',value:164.82}, {name:'土库曼斯坦',value:8.36}, {name:'比利时',value:81.96}, {name:'丹麦',value:99.84}, {name:'匈牙利',value:22.46}, {name:'伯利兹',value:6.99}, {name:'瑞典',value:82.78}, {name:'博茨瓦纳',value:9.84}, {name:'罗马尼亚',value:12.26}, {name:'俄罗斯',value:15.51}, {name:'澳大利亚',value:74.66}, {name:'加拿大',value:67.79}, {name:'保加利亚',value:9.73}, {name:'哈萨克斯坦',value:12.24}, {name:'立陶宛',value:16.14}, {name:'爱沙尼亚',value:19.49}, {name:'白俄罗斯',value:7.67}, {name:'美国',value:63.52}, {name:'美国',value:63.52}, {name:'文莱',value:45.69}, {name:'摩尔多瓦',value:2.08}, {name:'巴哈马',value:26.37}, {name:'芬兰',value:55.07}, {name:'乌克兰',value:3.33}, {name:'北马里亚纳',value:0}, {name:'南苏丹',value:0}, {name:'索马里兰',value:0}, {name:'黑山',value:0}, {name:'科索沃',value:0}, {name:'塞尔维亚',value:0}]; break; ~~~ 2018-08-1 ----08-18 选择地区地图 完 代码已整理 k线图重写了 完 代码已整理 k线图轴线相关配置 完 代码已整理 k线图图形里相关配置 完 代码已整理 世界地图 完 代码已整理 2018-8-20 雷达分享bug 完 山西流向地图模板 完 汽车仪表盘 单位值乱码 完