|   | 
| /* | 
| * 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. | 
| */ | 
|   | 
|   | 
| /** | 
|  * AUTO-GENERATED FILE. DO NOT MODIFY. | 
|  */ | 
|   | 
| /* | 
| * 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. | 
| */ | 
| import { createHashMap } from 'zrender/lib/core/util.js'; | 
| import { GeoSVGResource } from './GeoSVGResource.js'; | 
| import { GeoJSONResource } from './GeoJSONResource.js'; | 
| var storage = createHashMap(); | 
| export default { | 
|   /** | 
|    * Compatible with previous `echarts.registerMap`. | 
|    * | 
|    * @usage | 
|    * ```js | 
|    * | 
|    * echarts.registerMap('USA', geoJson, specialAreas); | 
|    * | 
|    * echarts.registerMap('USA', { | 
|    *     geoJson: geoJson, | 
|    *     specialAreas: {...} | 
|    * }); | 
|    * echarts.registerMap('USA', { | 
|    *     geoJSON: geoJson, | 
|    *     specialAreas: {...} | 
|    * }); | 
|    * | 
|    * echarts.registerMap('airport', { | 
|    *     svg: svg | 
|    * } | 
|    * ``` | 
|    * | 
|    * Note: | 
|    * Do not support that register multiple geoJSON or SVG | 
|    * one map name. Because different geoJSON and SVG have | 
|    * different unit. It's not easy to make sure how those | 
|    * units are mapping/normalize. | 
|    * If intending to use multiple geoJSON or SVG, we can | 
|    * use multiple geo coordinate system. | 
|    */ | 
|   registerMap: function (mapName, rawDef, rawSpecialAreas) { | 
|     if (rawDef.svg) { | 
|       var resource = new GeoSVGResource(mapName, rawDef.svg); | 
|       storage.set(mapName, resource); | 
|     } else { | 
|       // Recommend: | 
|       //     echarts.registerMap('eu', { geoJSON: xxx, specialAreas: xxx }); | 
|       // Backward compatibility: | 
|       //     echarts.registerMap('eu', geoJSON, specialAreas); | 
|       //     echarts.registerMap('eu', { geoJson: xxx, specialAreas: xxx }); | 
|       var geoJSON = rawDef.geoJson || rawDef.geoJSON; | 
|       if (geoJSON && !rawDef.features) { | 
|         rawSpecialAreas = rawDef.specialAreas; | 
|       } else { | 
|         geoJSON = rawDef; | 
|       } | 
|       var resource = new GeoJSONResource(mapName, geoJSON, rawSpecialAreas); | 
|       storage.set(mapName, resource); | 
|     } | 
|   }, | 
|   getGeoResource: function (mapName) { | 
|     return storage.get(mapName); | 
|   }, | 
|   /** | 
|    * Only for exporting to users. | 
|    * **MUST NOT** used internally. | 
|    */ | 
|   getMapForUser: function (mapName) { | 
|     var resource = storage.get(mapName); | 
|     // Do not support return SVG until some real requirement come. | 
|     return resource && resource.type === 'geoJSON' && resource.getMapForUser(); | 
|   }, | 
|   load: function (mapName, nameMap, nameProperty) { | 
|     var resource = storage.get(mapName); | 
|     if (!resource) { | 
|       if (process.env.NODE_ENV !== 'production') { | 
|         console.error('Map ' + mapName + ' not exists. The GeoJSON of the map must be provided.'); | 
|       } | 
|       return; | 
|     } | 
|     return resource.load(nameMap, nameProperty); | 
|   } | 
| }; |