{"versions":{"0.1.0":{"name":"@maptalks/msd-json-loader","version":"0.1.0","description":"A utility lib to read json exported by maptalks map instance","module":"dist/MSDJSONLoader.mjs","main":"dist/MSDJSONLoader.js","scripts":{"build":"rollup --environment BUILD:production -c rollup.config.js","build-dev":"rollup -c rollup.config.js","dev":"rollup -w -c rollup.config.js","test":"mocha -r @babel/register test/specs.js","tdd":"mocha -w -r @babel/register test/specs.js","prepare":"npm run lint && npm run build","lint":"eslint src/**/*.js","pretest":"npm run lint","preversion":"npm test"},"keywords":["maptalks","msd"],"author":{"name":"fuzhenn"},"license":"BSD-3-Clause","devDependencies":{"@babel/cli":"^7.15.0","@babel/core":"^7.15.0","@babel/eslint-parser":"^7.15.0","@babel/preset-env":"^7.15.0","@babel/register":"^7.15.0","eslint":"^7.32.0","eslint-plugin-mocha":"^9.0.0","esm":"^3.2.25","express":"^4.17.1","mocha":"^9.0.3","node-fetch":"^2.6.7","rollup":"^2.56.2","rollup-plugin-terser":"^5.3.1"},"gitHead":"cf0f1ca3cfe9f94e32de290c7ec4970d10828b8c","_id":"@maptalks/msd-json-loader@0.1.0","_nodeVersion":"14.17.4","_npmVersion":"7.20.5","dist":{"integrity":"sha512-PV1l9WlmndsaZzhFiiI7lhlRPT9+5XFx3YtGQqowInry5DcWVb27HukF51AAGYbO2W+KhUjV8Rj6fvEpxWYK+g==","shasum":"bc732ec762bbc0df4726347582ea3adb36b6167f","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@maptalks/msd-json-loader/-/msd-json-loader-0.1.0.tgz","fileCount":5,"unpackedSize":18868,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiFgMAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp7YA/+NdA44ylEF+gUbexIBxcOuRxMrShYAD0DKZ/HJ9KsWuR+stns\r\n//5w3MVwUGHjKoklq+J1FJnNgKto5LzEzG+m22uhEubDUD2Uy2/3OfAO2vFG\r\nRmgSOekYrVQhSYq7aITs1/9SjR5KJZc8WVhPzbUVwQPwVH3nvWfkwuPuHg0l\r\ns8XAd31Z6T7H0/Zznw23UNQhTGGWn7xvwzS8HLED0g9mFmG/4MKhyEwUeb+V\r\nIYPm5mBBSvh5T0ALg6EiG2OT0r38eIIgE67kGgqq4bRT7BDzw6AYTQyr33FR\r\nIqhQ0cGaDFmvtIlD+cNbYq2kUmMAakCeG6n47FFE0zzGUBJnC/RIr2cWQtWu\r\n94oCRXbwm23+YfavaSTsvXlRSHvut4Jb78L78xuuKnY14wtAOBpUY7VEOj5t\r\nD4loMMTQh/USKvKMymW9CVuSUq52Hcb92Q7ewTZ/N/eQeo8JTgXNqRLNW+eJ\r\nztSuB/PeR6zLJyuixm4UTkGdZEdYCAtJciz5Vtlo6E+pNa7//aMUwrKYvsSt\r\nocbXHYM2S41gTpHszr9xQRV+/jk3kAB/d3Sz4IkKmt/Ja+ZbSqlZwaIGaYC1\r\nI/EZz2zyl25iTLDMflLuuEQlDpYtxdftm1siqQZ0hbrMGcbu672Vx1Avdc5e\r\nFS1zBjpcqOEDD5RYDOfvpeXegO9shpDkh6w=\r\n=OuyL\r\n-----END PGP SIGNATURE-----\r\n","size":5558},"_npmUser":{"name":"anonymous","email":"fuzhen@maptalks.org"},"directories":{},"maintainers":[{"name":"anonymous","email":"fuzhen@maptalks.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/msd-json-loader_0.1.0_1645609728495_0.7330217924179658"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2022-02-23T09:48:55.712Z","contributors":[]}},"dist-tags":{"latest":"0.1.0"},"name":"@maptalks/msd-json-loader","time":{"created":"2022-02-23T09:48:59.919Z","modified":"2022-02-23T09:49:00.188Z","0.1.0":"2022-02-23T09:48:48.652Z"},"readme":"# MSDJSONLoader\r\n![CircleCI](https://circleci.com/gh/maptalks/MSDJSONLoader.svg?style=shield)\r\n\r\nMapTalks IDE msd文件导出的json数据的读取工具库。\r\n\r\nMSDJSONLoader提供了各种接口，用于读取MSD导出的JSON中的整个地图，某个图层，某个图层的样式/数据，全局后处理配置或灯光配置等。\r\n\r\n您可以方便的使用这个工具库来选择MSD文件中需要的资源，加载到您自己的地图程序中。\r\n\r\n## 安装\r\n\r\n```\r\nnpm i @maptalks/msdjsonloader\r\n```\r\n或\r\n```\r\n<script type=\"text/javascript\" src=\"https://unpkg.com/@maptalks/MSDJSONLoader/dist/MSDJSONLoader.js\"></script>\r\n```\r\n\r\n## 相对路径转换\r\n\r\nMSD JSON中的资源路径都是相对路径，相对的是map.json的存储路径。\r\n\r\n而在页面程序中，资源的相对路径都是参考的页面的路径，当map.json和页面不在同一目录下时，程序会找不到资源。\r\n\r\nMSDJSONLoader中会自动把资源的相对路径替换为绝对路径\r\n\r\n### 默认根路径\r\n\r\n按照默认方式加载时，MSDJSONLoader会用map.json的路径 `path/to/map.json` 将资源路径中的 `./res` 替换为 `path/to/res`。\r\n```js\r\nimport MSDJSONLoader from '@maptalks/msdjsonloader';\r\n\r\nconst loader = new MSDJSONLoader({\r\n    data: 'http://example.com/map.json'\r\n});\r\nawait loader.load();\r\nconst marker = loader.getLayer('gltf0').getGeometryById('data0');\r\n// 此时的gltfURL不再是相对路径，而是绝对路径了。\r\nconst gltfURL = marker.options.symbol.url;\r\n```\r\n此时map.json中原有的GLTFMarker的模型路径：\r\n```js\r\nsymbol: {\r\n    url: './res/resources/gltf.json'\r\n}\r\n````\r\n会被替换为:\r\n```js\r\nsymbol: {\r\n    url: 'http://example.com/res/resources/gltf.json'\r\n}\r\n````\r\n\r\n### 自定义根路径\r\n\r\n您也可以在创建MSDJSONLoader时，通过 basePath 参数指定一个根路径，例如：\r\n```js\r\nimport MSDJSONLoader from '@maptalks/msdjsonloader';\r\n\r\nconst loader = new MSDJSONLoader({\r\n    data: 'http://example.com/map.json',\r\n    basePath: 'http://resources.example.com'\r\n});\r\n```\r\n此时map.json中原有的GLTFMarker的模型路径：\r\n```js\r\nsymbol: {\r\n    url: './res/resources/gltf.json'\r\n}\r\n````\r\n会被替换为:\r\n```js\r\nsymbol: {\r\n    url: 'http://resources.example.com/res/resources/gltf.json'\r\n}\r\n````\r\n\r\n## MSDJSONLoader类的接口说明\r\n\r\n### `Constructor`\r\n```javascript\r\nnew MSDJSONLoader(options);\r\n```\r\n* options **Object**\r\n  * options.data **String** | **Object** map.json的远程地址或读取出来的map.json对象实例\r\n  * options.basePath **String**     json中资源路径的根路径\r\n\r\n### `load()`\r\n加载JSON，是一个异步方法。\r\n\r\n**Returns** Promise\r\n\r\n### `getMSDJSON()`\r\n获取MSD JSON对象\r\n\r\n**Returns** Object\r\n\r\n### `getMapJSON()`\r\n获取Map JSON对象，可以用于创建地图对象。\r\n```js\r\nimport MSDJSONLoader from '@maptalks/msdjsonloader';\r\n\r\nconst loader = new MSDJSONLoader({\r\n    data: 'path/to/map.json'\r\n});\r\nawait loader.load();\r\nconst mapJSON = loader.getMapJSON();\r\n\r\nconst map = maptalks.Map.fromJSON('map', mapJSON);\r\n````\r\n\r\n**Returns** Object\r\n\r\n### `getView()`\r\n获取MSD JSON中地图的view（包括 center, zoom, pitch, bearing）。\r\n```js\r\nimport MSDJSONLoader from '@maptalks/msdjsonloader';\r\n\r\nconst loader = new MSDJSONLoader({\r\n    data: 'path/to/map.json'\r\n});\r\nawait loader.load();\r\nconst view = loader.getView();\r\nmap.setView(view);\r\n````\r\n\r\n**Returns** Object\r\n\r\n### `getSceneConfig()`\r\n获取MSD JSON中GroupGLLayer的sceneConfig。\r\n```js\r\nimport MSDJSONLoader from '@maptalks/msdjsonloader';\r\n\r\nconst loader = new MSDJSONLoader({\r\n    data: 'path/to/map.json'\r\n});\r\nawait loader.load();\r\nconst sceneConfig = loader.getSceneConfig();\r\ngroupLayer.setSceneConfig(sceneConfig);\r\n````\r\n\r\n**Returns** Object\r\n\r\n### `getLights()`\r\n获取MSD JSON中map的Lights配置。\r\n```js\r\nimport MSDJSONLoader from '@maptalks/msdjsonloader';\r\n\r\nconst loader = new MSDJSONLoader({\r\n    data: 'path/to/map.json'\r\n});\r\nawait loader.load();\r\nconst lights = loader.getLights();\r\nmap.setLights(lights);\r\n````\r\n\r\n**Returns** Object\r\n\r\n### `getLayer(id)`\r\n获取MSD JSON中某个图层的LayerJSON对象。\r\n```js\r\nimport MSDJSONLoader from '@maptalks/msdjsonloader';\r\n\r\nconst loader = new MSDJSONLoader({\r\n    data: 'path/to/map.json'\r\n});\r\nawait loader.load();\r\nconst layer = loader.getLayer('vt0');\r\n````\r\n* id **String** | **Number** 图层id\r\n\r\n**Returns** LayerJSON\r\n\r\n### `getLayers()`\r\n获取MSD JSON中所有图层的LayerJSON对象数组。\r\n\r\n```js\r\nimport MSDJSONLoader from '@maptalks/msdjsonloader';\r\n\r\nconst loader = new MSDJSONLoader({\r\n    data: 'path/to/map.json'\r\n});\r\nawait loader.load();\r\nconst layers = loader.getLayers();\r\n````\r\n\r\n**Returns** LayerJSON[]\r\n\r\n## LayerJSON类的接口说明\r\n\r\n`LayerJSON` 只能通过 `MSDJSONLoader`的`getLayer`和`getLayers`方法获取，不能直接实例化。\r\n\r\n### `getId()`\r\n获取图层的id\r\n```js\r\nimport MSDJSONLoader from '@maptalks/msdjsonloader';\r\n\r\nconst loader = new MSDJSONLoader({\r\n    data: 'path/to/map.json'\r\n});\r\nawait loader.load();\r\nconst layer = loader.getLayer('vt0');\r\nconst id = layer.getId();\r\n````\r\n\r\n**Returns** String|Number\r\n\r\n### `getJSON()`\r\n获取图层JSON对象，可以用于创建Layer实例。\r\n\r\n```js\r\nimport MSDJSONLoader from '@maptalks/msdjsonloader';\r\n\r\nconst loader = new MSDJSONLoader({\r\n    data: 'path/to/map.json'\r\n});\r\nawait loader.load();\r\nconst layer = loader.getLayer('vt0');\r\nconst json = layer.getJSON();\r\n\r\nconst vtLayer = maptalks.Layer.fromJSON(json);\r\n````\r\n\r\n**Returns** Object\r\n\r\n### `getStyle()`\r\n获取图层的样式对象，其中资源路径都是绝对路径。\r\n\r\n```js\r\nimport MSDJSONLoader from '@maptalks/msdjsonloader';\r\n\r\nconst loader = new MSDJSONLoader({\r\n    data: 'path/to/map.json'\r\n});\r\nawait loader.load();\r\nconst layer = loader.getLayer('vt0');\r\nconst style = layer.getStyle();\r\n````\r\n\r\n**Returns** Object\r\n\r\n### `getData()`\r\n获取图层的数据对象，目前只有部分图层(例如GeoJSONVectorTileLayer)支持。\r\n\r\n为了减少`map.json`的文件大小，GeoJSONVectorTileLayer的data是以外部geojson文件的形式存储的。\r\n\r\n因此GeoJSONVectorTileLayer的getData方法返回的是geojson文件的绝对路径形式的url。\r\n\r\n```js\r\nimport MSDJSONLoader from '@maptalks/msdjsonloader';\r\n\r\nconst loader = new MSDJSONLoader({\r\n    data: 'path/to/map.json'\r\n});\r\nawait loader.load();\r\nconst layer = loader.getLayer('geojson0');\r\nconst data = layer.getData();\r\n````\r\n\r\n**Returns** Object\r\n\r\n### `getGeometryById(id)`\r\n获取指定id的Geometry JSON，可以用于创建Geometry对象。\r\n\r\n仅部分图层支持，如GLTFLayer，PointLayer，LineStringLayer和PolygonLayer。\r\n\r\n不支持的图层会返回null。\r\n\r\n```js\r\nimport MSDJSONLoader from '@maptalks/msdjsonloader';\r\n\r\nconst loader = new MSDJSONLoader({\r\n    data: 'path/to/map.json'\r\n});\r\nawait loader.load();\r\nconst layer = loader.getLayer('gltf0');\r\nconst markerJSON = layer.getGeometryById('data0');\r\nconst marker = maptalks.Geometry.fromJSON(markerJSON);\r\n````\r\n* id **String** | **Number** 图层id\r\n**Returns** Object\r\n\r\n### `getGeometries(id)`\r\n获取所有的Geometry JSON对象，可以用于创建Geometry对象。\r\n\r\n仅部分图层支持，如GLTFLayer，PointLayer，LineStringLayer和PolygonLayer。\r\n\r\n不支持的图层会返回空数组。\r\n\r\n```js\r\nimport MSDJSONLoader from '@maptalks/msdjsonloader';\r\n\r\nconst loader = new MSDJSONLoader({\r\n    data: 'path/to/map.json'\r\n});\r\nawait loader.load();\r\nconst layer = loader.getLayer('gltf0');\r\nconst markerJSONs = layer.getGeometries('data0');\r\nconst markers = markerJSONs.map(markerJSON => maptalks.Geometry.fromJSON(markerJSON));\r\n````\r\n**Returns** Object[]","users":{}}