|  | <!DOCTYPE html> | 
|  | <!-- | 
|  | Licensed to the Apache Software Foundation (ASF) under one | 
|  | or more contributor license agreements.  See the NOTICE file | 
|  | distributed with this work for additional information | 
|  | regarding copyright ownership.  The ASF licenses this file | 
|  | to you under the Apache License, Version 2.0 (the | 
|  | "License"); you may not use this file except in compliance | 
|  | with the License.  You may obtain a copy of the License at | 
|  |  | 
|  | http://www.apache.org/licenses/LICENSE-2.0 | 
|  |  | 
|  | Unless required by applicable law or agreed to in writing, | 
|  | software distributed under the License is distributed on an | 
|  | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
|  | KIND, either express or implied.  See the License for the | 
|  | specific language governing permissions and limitations | 
|  | under the License. | 
|  | --> | 
|  |  | 
|  |  | 
|  | <html> | 
|  | <head> | 
|  | <meta charset="utf-8"> | 
|  | <meta name="viewport" content="width=device-width, initial-scale=1" /> | 
|  | <script src="lib/simpleRequire.js"></script> | 
|  | <script src="lib/config.js"></script> | 
|  | <script src="lib/jquery.min.js"></script> | 
|  | <script src="lib/facePrint.js"></script> | 
|  | <script src="lib/testHelper.js"></script> | 
|  | <!-- <script src="ut/lib/canteen.js"></script> --> | 
|  | <link rel="stylesheet" href="lib/reset.css" /> | 
|  | </head> | 
|  | <body> | 
|  | <style> | 
|  | </style> | 
|  |  | 
|  |  | 
|  |  | 
|  | <div id="main_simple_geo_svg_coord"></div> | 
|  | <div id="main_simple_geo_svg_viewBox_svgWH"></div> | 
|  | <div id="main_geo_json_focus_blur"></div> | 
|  | <div id="main_geo_svg_emphasis_select"></div> | 
|  | <div id="main_pure_geo_svg"></div> | 
|  | <div id="main_pure_map_svg"></div> | 
|  | <div id="main_map_geo_svg"></div> | 
|  | <div id="main_geo_svg_click_finder"></div> | 
|  | <div id="main_geo_svg_multiple_geo"></div> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | function listenAndPrintEvent(chart) { | 
|  | if (!chart) { | 
|  | return; | 
|  | } | 
|  | const out = { | 
|  | }; | 
|  | chart.on('geoselectchanged', function (params) { | 
|  | out.geoselectechanged = { | 
|  | allSelected: params.allSelected | 
|  | }; | 
|  | console.log('geoselectechanged', params); | 
|  | chart.__testHelper.updateInfo(out, 'event'); | 
|  | }); | 
|  | chart.on('selectchanged', function (params) { | 
|  | out.selectechanged = { | 
|  | selected: params.selected | 
|  | }; | 
|  | console.log('selectechanged', params); | 
|  | chart.__testHelper.updateInfo(out, 'event'); | 
|  | }); | 
|  | chart.on('click', function (params) { | 
|  | out.click = { | 
|  | componentIndex: params.componentIndex, | 
|  | componentType: params.componentType, | 
|  | geoIndex: params.geoIndex, | 
|  | name: params.name | 
|  | }; | 
|  | console.log('click', params); | 
|  | chart.__testHelper.updateInfo(out, 'event'); | 
|  | }); | 
|  | } | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require(['echarts'/*, 'map/js/china' */], function (echarts) { | 
|  | const svg = [ | 
|  | '<?xml version="1.0" encoding="utf-8"?>', | 
|  | '<svg xmlns="http://www.w3.org/2000/svg" xmlns:ooo="http://xml.openoffice.org/svg/export" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" fill-rule="evenodd" xml:space="preserve">', | 
|  | '<path name="left_rect" d="M 0,0 L 0,100 100,100 100,0 Z" fill="#765" stroke="rgb(56,93,138)" stroke-width="0" stroke-linecap="square" stroke-linejoin="miter"/>', | 
|  | '<path name="right_rect" d="M 150,0 L 150,100 250,100 250,0 Z" fill="#567" stroke="rgb(56,93,138)" stroke-width="0" stroke-linecap="square" stroke-linejoin="miter"/>', | 
|  | '</svg>' | 
|  | ].join('') | 
|  |  | 
|  | echarts.registerMap('testGeoSVG_coord', { svg: svg }); | 
|  |  | 
|  | option = { | 
|  | animation: false, | 
|  | tooltip: { | 
|  | }, | 
|  | geo: { | 
|  | map: 'testGeoSVG_coord', | 
|  | roam: true, | 
|  | top: 0, | 
|  | bottom: 0, | 
|  | left: 0, | 
|  | right: 0, | 
|  | }, | 
|  | series: [{ | 
|  | type: 'scatter', | 
|  | geoIndex: 0, | 
|  | coordinateSystem: 'geo', | 
|  | symbolSize: 30, | 
|  | data: [{ | 
|  | value: [200, 50], | 
|  | itemStyle: { | 
|  | color: 'blue' | 
|  | } | 
|  | }] | 
|  | }] | 
|  | }; | 
|  |  | 
|  | var chart = testHelper.create(echarts, 'main_simple_geo_svg_coord', { | 
|  | title: [ | 
|  | 'A **blue circle** should be in the center of the right rect.', | 
|  | '**Click** inside the rect or outside the rect.', | 
|  | 'Check SVG coord displayed (via convertFromPixel).', | 
|  | '(The left rect is 100*100 and left-top corner is (0,0))', | 
|  | '**Click btn1**, check Pixel.point[1] should be around 100', | 
|  | '**Click btn2**, check Pixel.point[1] should be around 200' | 
|  | ], | 
|  | option: option, | 
|  | infoKey: 'SVG coord', | 
|  | info: {}, | 
|  | height: 200, | 
|  | buttons: [{ | 
|  | text: 'converToPixel({ geoIndex: 0 }, "left_rect")', | 
|  | onclick: function () { | 
|  | var point = chart.convertToPixel({ geoIndex: 0 }, 'left_rect'); | 
|  | console.log(point); | 
|  | chart.__testHelper.updateInfo( | 
|  | { point: point }, | 
|  | 'Pixel' | 
|  | ); | 
|  | } | 
|  | }, { | 
|  | text: 'convertToPixel({ geoIndex: 0 }, [100, 100])', | 
|  | onclick: function () { | 
|  | var point = chart.convertToPixel({ geoIndex: 0 }, [100, 100]); | 
|  | console.log(point); | 
|  | chart.__testHelper.updateInfo( | 
|  | { point: point }, | 
|  | 'Pixel' | 
|  | ); | 
|  | } | 
|  | }] | 
|  | }); | 
|  |  | 
|  | if (chart) { | 
|  | chart.getZr().on('click', function (event) { | 
|  | var x = event.offsetX; | 
|  | var y = event.offsetY; | 
|  | console.log(x, y); | 
|  | var svgCoord = chart.convertFromPixel({ geoIndex: 0 }, [x, y]); | 
|  | console.log(svgCoord); | 
|  | chart.__testHelper.updateInfo( | 
|  | { x: svgCoord[0], y: svgCoord[1] }, | 
|  | 'SVG coord' | 
|  | ); | 
|  | }); | 
|  | } | 
|  |  | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require(['echarts'], function (echarts) { | 
|  | const xmlHeader = '<?xml version="1.0" encoding="utf-8"?>'; | 
|  | const svgTagCommonAttr = ' xmlns="http://www.w3.org/2000/svg" xmlns:ooo="http://xml.openoffice.org/svg/export" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" fill-rule="evenodd" xml:space="preserve" '; | 
|  |  | 
|  | // Both svgWdith svgHeight viewBox | 
|  | const svg1 = [ | 
|  | xmlHeader, | 
|  | '<svg ' + svgTagCommonAttr, | 
|  | 'viewBox="99500 99500 1000 1000"', | 
|  | 'width="5px" height="5px"', | 
|  | '>', | 
|  | '<circle cx="100000" cy="100000" r="500" fill="blue" stroke-linecap="square" stroke-linejoin="miter"/>', | 
|  | '</svg>' | 
|  | ].join(' '); | 
|  | // Both svgWdith svgHeight viewBox and clip | 
|  | const svg2 = [ | 
|  | xmlHeader, | 
|  | '<svg ' + svgTagCommonAttr, | 
|  | 'viewBox="99500 99500 500 500"', | 
|  | 'width="5px" height="5px"', | 
|  | '>', | 
|  | '<circle cx="100000" cy="100000" r="500" fill="blue" stroke-linecap="square" stroke-linejoin="miter"/>', | 
|  | '</svg>' | 
|  | ].join(' '); | 
|  | // Only svgWdith svgHeight | 
|  | const svg3 = [ | 
|  | xmlHeader, | 
|  | '<svg ' + svgTagCommonAttr, | 
|  | 'width="100000" height="100000"', | 
|  | '>', | 
|  | '<circle cx="100000" cy="100000" r="100000" fill="blue" stroke-linecap="square" stroke-linejoin="miter"/>', | 
|  | '</svg>' | 
|  | ].join(' '); | 
|  | // Only viewBox | 
|  | const svg4 = [ | 
|  | xmlHeader, | 
|  | '<svg ' + svgTagCommonAttr, | 
|  | 'viewBox="99500 99500 500 500"', | 
|  | '>', | 
|  | '<circle cx="100000" cy="100000" r="500" fill="blue" stroke-linecap="square" stroke-linejoin="miter"/>', | 
|  | '</svg>' | 
|  | ].join(' '); | 
|  | // Neither viewBox and svgWidth svgHeight | 
|  | const svg5 = [ | 
|  | xmlHeader, | 
|  | '<svg ' + svgTagCommonAttr, | 
|  | '>', | 
|  | '<circle cx="100000" cy="100000" r="500" fill="blue" stroke-linecap="square" stroke-linejoin="miter"/>', | 
|  | '</svg>' | 
|  | ].join(' '); | 
|  | // Both viewBox but only svgHeight no svgWidth | 
|  | const svg6 = [ | 
|  | xmlHeader, | 
|  | '<svg ' + svgTagCommonAttr, | 
|  | 'viewBox="99500 99500 1000 1000"', | 
|  | 'height="500"', | 
|  | '>', | 
|  | '<circle cx="100000" cy="100000" r="500" fill="blue" stroke-linecap="square" stroke-linejoin="miter"/>', | 
|  | '</svg>' | 
|  | ].join(' '); | 
|  |  | 
|  | echarts.registerMap('testGeoSVG_viewBox_svgWH_1', { svg: svg1 }); | 
|  | echarts.registerMap('testGeoSVG_viewBox_svgWH_2', { svg: svg2 }); | 
|  | echarts.registerMap('testGeoSVG_viewBox_svgWH_3', { svg: svg3 }); | 
|  | echarts.registerMap('testGeoSVG_viewBox_svgWH_4', { svg: svg4 }); | 
|  | echarts.registerMap('testGeoSVG_viewBox_svgWH_5', { svg: svg5 }); | 
|  | echarts.registerMap('testGeoSVG_viewBox_svgWH_6', { svg: svg6 }); | 
|  |  | 
|  | const RECT_SIZE = 50; | 
|  | const Y_TOP = 10; | 
|  | const X_LEFT = 10; | 
|  | const GAP = 20; | 
|  |  | 
|  | var _itemIndex = 0; | 
|  | var _graphicOptionArr = []; | 
|  | var _geoOptionArr = []; | 
|  |  | 
|  | function makeItem(text, mapType) { | 
|  | var x = X_LEFT + (RECT_SIZE + GAP) * _itemIndex++; | 
|  | _graphicOptionArr.push({ | 
|  | type: 'rect', | 
|  | silent: true, | 
|  | shape: { x: x, y: Y_TOP, width: RECT_SIZE, height: RECT_SIZE }, | 
|  | style: { stroke: 'red', lineWidth: 1, fill: null } | 
|  | }, { | 
|  | type: 'text', | 
|  | silent: true, | 
|  | style: { | 
|  | text: text, x: x + RECT_SIZE / 2, y: Y_TOP + RECT_SIZE + GAP, | 
|  | fill: '#000', textAlign: 'center', textVerticalAlign: 'middle' | 
|  | } | 
|  | }); | 
|  | _geoOptionArr.push({ | 
|  | map: mapType, | 
|  | left: x, top: Y_TOP, width: RECT_SIZE, height: RECT_SIZE, | 
|  | itemStyle: { color: 'blue' } | 
|  | }); | 
|  | } | 
|  |  | 
|  | makeItem('circle', 'testGeoSVG_viewBox_svgWH_1'); | 
|  | makeItem('1/4 sector', 'testGeoSVG_viewBox_svgWH_2'); | 
|  | makeItem('1/4 sector', 'testGeoSVG_viewBox_svgWH_3'); | 
|  | makeItem('1/4 sector', 'testGeoSVG_viewBox_svgWH_4'); | 
|  | makeItem('circle', 'testGeoSVG_viewBox_svgWH_5'); | 
|  | makeItem('thin ellipse', 'testGeoSVG_viewBox_svgWH_6'); | 
|  |  | 
|  | option = { | 
|  | animation: false, | 
|  | tooltip: { | 
|  | }, | 
|  | graphic: _graphicOptionArr, | 
|  | geo: _geoOptionArr | 
|  | }; | 
|  |  | 
|  | var chart = testHelper.create(echarts, 'main_simple_geo_svg_viewBox_svgWH', { | 
|  | title: [ | 
|  | 'viewBox test:', | 
|  | 'Check each shape should be inside each red rect.', | 
|  | 'Check each shape be correspondence with the text.', | 
|  | ], | 
|  | option: option, | 
|  | height: 100 | 
|  | }); | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require(['echarts'/*, 'map/js/china' */], function (echarts) { | 
|  | const testGeoJson1 = { | 
|  | 'type': 'FeatureCollection', | 
|  | 'features': [ | 
|  | { | 
|  | 'type': 'Feature', | 
|  | 'geometry': { | 
|  | 'type': 'Polygon', | 
|  | 'coordinates': [ | 
|  | [[2000, 2000], [5000, 2000], [5000, 5000], [2000, 5000]] | 
|  | ] | 
|  | }, | 
|  | 'properties': { | 
|  | 'name': 'Afghanistan' | 
|  | } | 
|  | }, | 
|  | { | 
|  | 'type': 'Feature', | 
|  | 'geometry': { | 
|  | 'type': 'Polygon', | 
|  | 'coordinates': [ | 
|  | [[6000, 2300], [9300, 2300], [9000, 5000]] | 
|  | ] | 
|  | }, | 
|  | 'properties': { | 
|  | 'name': 'BBB' | 
|  | } | 
|  | } | 
|  | ] | 
|  | }; | 
|  |  | 
|  | echarts.registerMap('testGeoJson2', testGeoJson1); | 
|  |  | 
|  | option = { | 
|  | tooltip: { | 
|  | }, | 
|  | geo: { | 
|  | map: 'testGeoJson2', | 
|  | roam: true, | 
|  | selectedMode: 'single', | 
|  | label: { | 
|  | show: true | 
|  | }, | 
|  | emphasis: { | 
|  | focus: 'self' | 
|  | }, | 
|  | // height: '100%', | 
|  | // center | 
|  | // layoutCenter: ['30%', 40], | 
|  | // layoutSize: 40, | 
|  | // boundingCoords | 
|  | zoom: 1, | 
|  | aspectScale: 1 | 
|  | } | 
|  | }; | 
|  |  | 
|  | var chart = testHelper.create(echarts, 'main_geo_json_focus_blur', { | 
|  | title: [ | 
|  | 'check geoJSON focus-blur', | 
|  | '**Click** them, check click info' | 
|  | ], | 
|  | option: option, | 
|  | info: {}, | 
|  | infoKey: 'event', | 
|  | height: 200 | 
|  | }); | 
|  |  | 
|  | listenAndPrintEvent(chart); | 
|  |  | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require(['echarts'/*, 'map/js/china' */], function (echarts) { | 
|  | const svg = [ | 
|  | '<?xml version="1.0" encoding="utf-8"?>', | 
|  | '<svg xmlns="http://www.w3.org/2000/svg" xmlns:ooo="http://xml.openoffice.org/svg/export" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" fill-rule="evenodd" xml:space="preserve">', | 
|  | '<path name="a" d="M 0,0 L 0,100 100,100 100,0 Z" transform="rotate(45)" fill="rgb(16,193,138)" stroke="green" stroke-width="2" stroke-linecap="square" stroke-linejoin="miter"/>', | 
|  | '<path name="a" d="M 110,0 L 110,100 210,100 210,0 Z" fill="rgb(16,193,138)" stroke="green" stroke-width="2" stroke-linecap="square" stroke-linejoin="miter"/>', | 
|  | '<g name="b">', | 
|  | '<path d="M 0,110 L 0,210 100,110 Z" fill="rgb(16,193,138)" stroke="green" stroke-width="2" stroke-linecap="square" stroke-linejoin="miter"/>', | 
|  | '<path d="M 110,110 L 110,210 210,110 Z" fill="rgb(16,193,138)" stroke="green" stroke-width="2" stroke-linecap="square" stroke-linejoin="miter"/>', | 
|  | '</g>', | 
|  | '<radialGradient id="XMLID_1_" cx="0" cy="220" r="59.4363" gradientUnits="userSpaceOnUse">', | 
|  | '<stop  offset="0" style="stop-color:#E6E6E6"/>', | 
|  | '<stop  offset="1" style="stop-color:#4D4D4D"/>', | 
|  | '</radialGradient>', | 
|  | '<path name="c" d="M 0,220 L 0,320 100,220 Z" fill="url(#XMLID_1_)" stroke="green" stroke-width="2" stroke-linecap="square" stroke-linejoin="miter"/>', | 
|  | '<radialGradient id="XMLID_2_" cx="110" cy="220" r="59.4363" gradientUnits="userSpaceOnUse">', | 
|  | '<stop  offset="0" style="stop-color:#E6E6E6"/>', | 
|  | '<stop  offset="1" style="stop-color:#4D4D4D"/>', | 
|  | '</radialGradient>', | 
|  | '<path name="c" d="M 110,220 L 110,320 210,220 Z" fill="url(#XMLID_2_)" stroke="green" stroke-width="2" stroke-linecap="square" stroke-linejoin="miter"/>', | 
|  | '</svg>' | 
|  | ].join('') | 
|  |  | 
|  | echarts.registerMap('testGeoSVG_select_hover', { svg: svg }); | 
|  |  | 
|  | option = { | 
|  | // tooltip: { | 
|  | // }, | 
|  | geo: { | 
|  | map: 'testGeoSVG_select_hover', | 
|  | roam: true, | 
|  | selectedMode: 'single', | 
|  | // height: '100%', | 
|  | // center | 
|  | // layoutCenter: ['30%', 40], | 
|  | // layoutSize: 40, | 
|  | // boundingCoords | 
|  | zoom: 1, | 
|  | aspectScale: 1, | 
|  | label: { | 
|  | show: true | 
|  | }, | 
|  | emphasis: { | 
|  | focus: 'self', | 
|  | label: { | 
|  | show: true, | 
|  | fontSize: 100 | 
|  | } | 
|  | }, | 
|  | select: { | 
|  | itemStyle: { | 
|  | color: 'red' | 
|  | } | 
|  | } | 
|  | } | 
|  | }; | 
|  |  | 
|  | var chart = testHelper.create(echarts, 'main_geo_svg_emphasis_select', { | 
|  | title: [ | 
|  | 'click buttons', | 
|  | 'hover check', | 
|  | 'check focus-blur', | 
|  | 'check label no scale/rotate' | 
|  | ], | 
|  | option: option, | 
|  | info: {}, | 
|  | infoKey: 'event', | 
|  | height: 200, | 
|  | button: [{ | 
|  | text: 'highlight a', | 
|  | onclick: function () { | 
|  | chart.dispatchAction({ type: 'highlight', geoIndex: 0, name: 'a' }); | 
|  | } | 
|  | }, { | 
|  | text: 'downplay a', | 
|  | onclick: function () { | 
|  | chart.dispatchAction({ type: 'downplay', geoIndex: 0, name: 'a' }); | 
|  | } | 
|  | }, { | 
|  | text: 'select a', | 
|  | onclick: function () { | 
|  | chart.dispatchAction({ type: 'geoSelect', geoIndex: 0, name: 'a' }); | 
|  | } | 
|  | }, { | 
|  | text: 'unselect a', | 
|  | onclick: function () { | 
|  | chart.dispatchAction({ type: 'geoUnSelect', geoIndex: 0, name: 'a' }); | 
|  | } | 
|  | }, { | 
|  | text: 'highlight b', | 
|  | onclick: function () { | 
|  | chart.dispatchAction({ type: 'highlight', geoIndex: 0, name: 'b' }); | 
|  | } | 
|  | }, { | 
|  | text: 'downplay b', | 
|  | onclick: function () { | 
|  | chart.dispatchAction({ type: 'downplay', geoIndex: 0, name: 'b' }); | 
|  | } | 
|  | }, { | 
|  | text: 'select b', | 
|  | onclick: function () { | 
|  | chart.dispatchAction({ type: 'geoSelect', geoIndex: 0, name: 'b' }); | 
|  | } | 
|  | }, { | 
|  | text: 'unselect b', | 
|  | onclick: function () { | 
|  | chart.dispatchAction({ type: 'geoUnSelect', geoIndex: 0, name: 'b' }); | 
|  | } | 
|  | }] | 
|  | }); | 
|  |  | 
|  | listenAndPrintEvent(chart); | 
|  |  | 
|  | if (chart) { | 
|  | chart.on('highlight', function () { | 
|  | }); | 
|  | } | 
|  |  | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts', | 
|  | 'data/svg/flight-seats.svg' | 
|  | ], function (echarts, svg) { | 
|  | echarts.registerMap('flight-seats', { | 
|  | svg: svg | 
|  | }); | 
|  |  | 
|  | option = { | 
|  | tooltip: { | 
|  | }, | 
|  | geo: { | 
|  | map: 'flight-seats', | 
|  | roam: true, | 
|  | selectedMode: 'multiple', | 
|  | tooltip: { | 
|  | show: true | 
|  | }, | 
|  | emphasis: { | 
|  | itemStyle: { | 
|  | color: null, | 
|  | borderColor: '#780705', | 
|  | borderWidth: 3 | 
|  | }, | 
|  | label: { | 
|  | textBorderColor: '#fff', | 
|  | textBorderWidth: 2 | 
|  | } | 
|  | }, | 
|  | select: { | 
|  | itemStyle: { | 
|  | color: '#b50205' | 
|  | }, | 
|  | label: { | 
|  | show: false, | 
|  | textBorderColor: '#fff', | 
|  | textBorderWidth: 2 | 
|  | } | 
|  | } | 
|  | } | 
|  | }; | 
|  |  | 
|  | var chart = testHelper.create(echarts, 'main_pure_geo_svg', { | 
|  | title: [ | 
|  | 'pure geo component with svg resource', | 
|  | 'click seat: check **allSelected** correct.', | 
|  | 'hover seat: check **tooltip** and **label** correct.' | 
|  | ], | 
|  | option: option, | 
|  | info: {}, | 
|  | infoKey: 'event', | 
|  | height: 300 | 
|  | }); | 
|  |  | 
|  | listenAndPrintEvent(chart); | 
|  |  | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts', | 
|  | 'data/svg/seatmap-example.svg' | 
|  | ], function (echarts, svg) { | 
|  | echarts.registerMap('seatmap', { | 
|  | svg: svg | 
|  | }); | 
|  |  | 
|  | option = { | 
|  | tooltip: { | 
|  | }, | 
|  | series: { | 
|  | type: 'map', | 
|  | map: 'seatmap', | 
|  | roam: true, | 
|  | selectedMode: 'multiple', | 
|  | // height: 100, | 
|  | // zoom: 1.5 | 
|  | emphasis: { | 
|  | label: { | 
|  | textBorderColor: '#fff', | 
|  | textBorderWidth: 2 | 
|  | } | 
|  | }, | 
|  | select: { | 
|  | itemStyle: { | 
|  | color: '#b50205' | 
|  | }, | 
|  | label: { | 
|  | show: false, | 
|  | textBorderColor: '#fff', | 
|  | textBorderWidth: 2 | 
|  | } | 
|  | } | 
|  | } | 
|  | }; | 
|  |  | 
|  | var chart = testHelper.create(echarts, 'main_pure_map_svg', { | 
|  | title: [ | 
|  | 'pure map series with svg resource', | 
|  | 'Hover seat: check **tooltip** correct.' | 
|  | ], | 
|  | option: option, | 
|  | info: {}, | 
|  | infoKey: 'event', | 
|  | height: 300 | 
|  | // buttons: [{text: 'btn-txt', onclick: function () {}}], | 
|  | // recordCanvas: true, | 
|  | }); | 
|  |  | 
|  | listenAndPrintEvent(chart); | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts', | 
|  | 'data/svg/seatmap-example.svg' | 
|  | ], function (echarts, svg) { | 
|  | var option; | 
|  | echarts.registerMap('seatmap', { | 
|  | svg: svg | 
|  | }); | 
|  |  | 
|  | option = { | 
|  | tooltip: { | 
|  | }, | 
|  | geo: { | 
|  | map: 'seatmap', | 
|  | roam: true, | 
|  | selectedMode: 'multiple', | 
|  | // height: 100, | 
|  | // zoom: 1.5 | 
|  | tooltip: { | 
|  | show: true | 
|  | }, | 
|  | emphasis: { | 
|  | label: { | 
|  | textBorderColor: '#fff', | 
|  | textBorderWidth: 2 | 
|  | } | 
|  | }, | 
|  | select: { | 
|  | itemStyle: { | 
|  | color: '#b50205' | 
|  | }, | 
|  | label: { | 
|  | show: false, | 
|  | textBorderColor: '#fff', | 
|  | textBorderWidth: 2 | 
|  | } | 
|  | } | 
|  | }, | 
|  | series: { | 
|  | type: 'map', | 
|  | selectedMode: 'multiple', | 
|  | coordinateSystem: 'geo', | 
|  | geoIndex: 0 | 
|  | } | 
|  | }; | 
|  |  | 
|  | var chart = testHelper.create(echarts, 'main_map_geo_svg', { | 
|  | title: [ | 
|  | 'map series on declared geo with svg resource', | 
|  | 'Hover seat: check **tooltip** correct.' | 
|  | ], | 
|  | option: option, | 
|  | info: {}, | 
|  | infoKey: 'event', | 
|  | height: 300 | 
|  | // buttons: [{text: 'btn-txt', onclick: function () {}}], | 
|  | // recordCanvas: true, | 
|  | }); | 
|  |  | 
|  | listenAndPrintEvent(chart); | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require(['echarts'/*, 'map/js/china' */], function (echarts) { | 
|  | const svg = [ | 
|  | '<?xml version="1.0" encoding="utf-8"?>', | 
|  | '<svg xmlns="http://www.w3.org/2000/svg" xmlns:ooo="http://xml.openoffice.org/svg/export" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" fill-rule="evenodd" xml:space="preserve">', | 
|  | '<path name="a" d="M 0,0 L 0,100 100,100 100,0 Z" fill="green" stroke="rgb(56,93,138)" stroke-width="2" stroke-linecap="square" stroke-linejoin="miter"/>', | 
|  | '<path name="b" d="M 150,0 L 150,100 250,100 250,0 Z" fill="blue" stroke="rgb(56,93,138)" stroke-width="2" stroke-linecap="square" stroke-linejoin="miter"/>', | 
|  | '</svg>' | 
|  | ].join('') | 
|  |  | 
|  | echarts.registerMap('testGeoSVGclick', { svg: svg }); | 
|  |  | 
|  | var option = { | 
|  | geo: { | 
|  | map: 'testGeoSVGclick', | 
|  | selectedMode: 'single', | 
|  | zoom: 1, | 
|  | aspectScale: 1, | 
|  | label: { | 
|  | show: true | 
|  | } | 
|  | } | 
|  | }; | 
|  |  | 
|  | var chart = testHelper.create(echarts, 'main_geo_svg_click_finder', { | 
|  | title: [ | 
|  | 'Click green rect, should display click event.', | 
|  | 'Click blue rect, should display nothing.' | 
|  | ], | 
|  | option: option, | 
|  | info: {}, | 
|  | infoKey: 'click event', | 
|  | height: 200 | 
|  | }); | 
|  |  | 
|  | if (chart) { | 
|  | chart.on('click', { geoIndex: 0, name: 'a' }, function (params) { | 
|  | console.log(params); | 
|  | chart.__testHelper.updateInfo({ | 
|  | componentIndex: params.componentIndex, | 
|  | componentType: params.componentType, | 
|  | geoIndex: params.geoIndex, | 
|  | name: params.name | 
|  | }, 'click event'); | 
|  | }); | 
|  | } | 
|  |  | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require(['echarts'/*, 'map/js/china' */], function (echarts) { | 
|  | const svg = [ | 
|  | '<?xml version="1.0" encoding="utf-8"?>', | 
|  | '<svg xmlns="http://www.w3.org/2000/svg" xmlns:ooo="http://xml.openoffice.org/svg/export" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" fill-rule="evenodd" xml:space="preserve">', | 
|  | '<path name="a" d="M 0,0 L 0,100 100,100 100,0 Z" fill="green" stroke="rgb(56,93,138)" stroke-width="2" stroke-linecap="square" stroke-linejoin="miter"/>', | 
|  | '</svg>' | 
|  | ].join('') | 
|  |  | 
|  | echarts.registerMap('testGeoSVG_for_multiple_test', { svg: svg }); | 
|  |  | 
|  | var option = { | 
|  | geo: [{ | 
|  | id: 'g1', | 
|  | map: 'testGeoSVG_for_multiple_test', | 
|  | selectedMode: 'single', | 
|  | layoutCenter: ['25%', '50%'], | 
|  | layoutSize: 20, | 
|  | select: { | 
|  | itemStyle: { color: 'red' } | 
|  | } | 
|  | }, { | 
|  | id: 'g2', | 
|  | map: 'testGeoSVG_for_multiple_test', | 
|  | selectedMode: 'single', | 
|  | layoutCenter: ['50%', '50%'], | 
|  | layoutSize: 20, | 
|  | select: { | 
|  | itemStyle: { color: 'red' } | 
|  | }, | 
|  | }, { | 
|  | id: 'g3', | 
|  | map: 'testGeoSVG_for_multiple_test', | 
|  | selectedMode: 'single', | 
|  | layoutCenter: ['75%', '50%'], | 
|  | layoutSize: 20, | 
|  | select: { | 
|  | itemStyle: { color: 'red' } | 
|  | }, | 
|  | }] | 
|  | }; | 
|  |  | 
|  | var chart = testHelper.create(echarts, 'main_geo_svg_multiple_geo', { | 
|  | title: [ | 
|  | 'Select the three rect to red.', | 
|  | 'click btn. Check all of the existing rect removed,', | 
|  | 'and only one new green rect generated.' | 
|  | ], | 
|  | option: option, | 
|  | height: 200, | 
|  | buttons: [{ | 
|  | text: 'change geo (replaceMerge)', | 
|  | onclick: function (params) { | 
|  | chart.setOption({ | 
|  | geo: { | 
|  | id: 'g4', | 
|  | map: 'testGeoSVG_for_multiple_test', | 
|  | selectedMode: 'single', | 
|  | layoutCenter: ['40%', '50%'], | 
|  | layoutSize: 40, | 
|  | select: { | 
|  | itemStyle: { color: 'red' } | 
|  | } | 
|  | } | 
|  | }, { replaceMerge: 'geo' }); | 
|  | } | 
|  | }] | 
|  | }); | 
|  |  | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | </body> | 
|  | </html> | 
|  |  |