原文链接及内容
本示例使用一个带有ol/format/TopoJSON
的矢量图层来渲染TopoJSON 中的要素。
main.js
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 import Map from 'ol/Map.js' ;import TopoJSON from 'ol/format/TopoJSON.js' ;import VectorSource from 'ol/source/Vector.js' ;import View from 'ol/View.js' ;import XYZ from 'ol/source/XYZ.js' ;import {Fill , Stroke , Style } from 'ol/style.js' ;import {Tile as TileLayer , Vector as VectorLayer } from 'ol/layer.js' ;const key = 'Get your own API key at https://www.maptiler.com/cloud/' ;const attributions = '<a href="https://www.maptiler.com/copyright/" target="_blank">© MapTiler</a> ' + '<a href="https://www.openstreetmap.org/copyright" target="_blank">© OpenStreetMap contributors</a>' ; const raster = new TileLayer ({ source : new XYZ ({ attributions : attributions, url : 'https://api.maptiler.com/maps/darkmatter/{z}/{x}/{y}.png?key=' + key, tileSize : 512 , }), }); const style = new Style ({ fill : new Fill ({ color : 'rgba(255, 255, 255, 0.6)' , }), stroke : new Stroke ({ color : '#319FD3' , width : 1 , }), }); const vector = new VectorLayer ({ source : new VectorSource ({ url : 'data/topojson/world-110m.json' , format : new TopoJSON ({ layers : ['countries' ], }), overlaps : false , }), style : style, }); const map = new Map ({ layers : [raster, vector], target : 'map' , view : new View ({ center : [0 , 0 ], zoom : 1 , }), });
界面布局文件index.html
代码如下: