jgis 1.0.5 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,6 +9,10 @@
9
9
 
10
10
  **JGIS** 是一个基于函数式编程思维构建的轻量级 GIS 工具库。它采用多入口架构,严格分离二维(OpenLayers)与三维(Cesium)依赖,提供开箱即用的高阶交互钩子和统一的 API 设计。
11
11
 
12
+ ## 🚀 官网
13
+
14
+ [前往jgis](https://guidozijef.github.io/jgis-docs/)
15
+
12
16
  ## ✨ 核心特性
13
17
 
14
18
  * **📦 多入口架构 (Multi-Entry)**:
@@ -25,7 +29,7 @@
25
29
  * **🗺️ 二三维API风格一致**:
26
30
  * 二三维API风格一致,方便会一种框架的开发者快速理解和上手开发另一种框架。
27
31
  * **🗺️ 完全兼容openlayers/cesium**:
28
- * 导出`instance`地图实例,可自己操作原生API。
32
+ * 通过`getInstance`方法获取地图实例,可自己操作框架`openlayers/cesium`原生API。
29
33
  * 如果有特殊需求,完全可以自己用原生实现,没有任何违和感。
30
34
 
31
35
 
@@ -64,7 +68,7 @@ import { useMap } from 'jgis/2d';
64
68
 
65
69
  onMounted(() => {
66
70
  // 初始化地图,会自动注册为全局激活实例
67
- const { instance, addMarker, createLayer } = useMap('map-container', {
71
+ const { getInstance, addMarker, createLayer } = useMap('map-container', {
68
72
  center: [116.4, 39.9],
69
73
  zoom: 10
70
74
  });
@@ -164,12 +168,12 @@ onHover(data => {
164
168
  ```
165
169
 
166
170
 
167
- ### 3. 异步调用
171
+ ### 3. 异步获取
168
172
 
169
173
  如果创建地图的`useMap`在一个文件,而选择交互在另一个文件,可以使用异步调用。在文件中使用`onMapReady`和`getMapContext`方法来获取地图方法,而不需要传递跟地图相关的任何参数,但是必须指定地图容器的 id。例如:
170
174
 
171
175
  ```js
172
- import { onMapReady, getMapContext } from 'jgis/2d';
176
+ import { onMapReady, getMapContext, getMapContextAsync } from 'jgis/2d';
173
177
 
174
178
  // 'map-container' 是地图容器的 id
175
179
  onMapReady('map-container', ({ createLayer, flyTo }) => {
@@ -177,10 +181,31 @@ onMapReady('map-container', ({ createLayer, flyTo }) => {
177
181
  })
178
182
 
179
183
 
180
- getMapContext('map-container').then(({ createLayer, flyTo }) => {
184
+ getMapContextAsync('map-container').then(({ createLayer, flyTo }) => {
181
185
 
182
186
  })
183
187
 
188
+
189
+ const { createLayer, flyTo,getZoom } = getMapContext('map-container');
190
+
191
+
192
+ ```
193
+ **注意:** ⚠️ 所有通过 `getMapContext` 获取的 API 都是异步的。
194
+
195
+ - 当你需要返回值或严格的执行顺序时,请使用 `await`
196
+ - 当你只是触发行为时,可以直接调用
197
+
198
+ 例如:
199
+
200
+ ```js
201
+ import { onMapReady, getMapContext, getMapContextAsync } from 'jgis/2d';
202
+
203
+
204
+ const { createLayer, flyTo, getZoom } = getMapContext('map-container');
205
+
206
+ const zoom = await getZoom();
207
+ await createLayer({ ... });
208
+
184
209
  ```
185
210
 
186
211
 
@@ -266,12 +291,12 @@ onHover((data) => {
266
291
 
267
292
 
268
293
 
269
- ### 3. 异步调用
294
+ ### 3. 异步获取
270
295
 
271
- 如果创建地图的`useMap`在一个文件,而选择交互在另一个文件,可以使用异步调用。在文件中使用`onMapReady`和`getMapContext`方法来获取地图方法,而不需要传递跟地图相关的任何参数,但是必须指定地图容器的 id。例如:
296
+ 如果创建地图的`useMap`在一个文件,而选择交互在另一个文件,可以使用异步调用。在文件中使用`onMapReady`和`getMapContext`方法来获取地图方法,而不需要传递跟地图相关的任何参数,但是必须指定地图容器的 id。可以在单文件中使用,例如:
272
297
 
273
298
  ```js
274
- import { onMapReady, getMapContext } from 'jgis/3d';
299
+ import { onMapReady, getMapContext, getMapContextAsync } from 'jgis/3d';
275
300
 
276
301
  // 'map-container' 是地图容器的 id
277
302
  onMapReady('map-container', ({ createLayer, flyTo }) => {
@@ -279,10 +304,32 @@ onMapReady('map-container', ({ createLayer, flyTo }) => {
279
304
  })
280
305
 
281
306
 
282
- getMapContext('map-container').then(({ createLayer, flyTo }) => {
307
+ getMapContextAsync('map-container').then(({ createLayer, flyTo }) => {
283
308
 
284
309
  })
285
310
 
311
+
312
+ const { createLayer, flyTo,getZoom } = getMapContext('map-container');
313
+
314
+
315
+ ```
316
+
317
+ **注意:**⚠️ 所有通过 `getMapContext` 获取的 API 都是异步的。
318
+
319
+ - 当你需要返回值或严格的执行顺序时,请使用 await
320
+ - 当你只是触发行为时,可以直接调用
321
+
322
+ 例如:
323
+
324
+ ```js
325
+ import { onMapReady, getMapContext, getMapContextAsync } from 'jgis/3d';
326
+
327
+
328
+ const { createLayer, flyTo, getLayerByName } = getMapContext('map-container');
329
+
330
+ const zoom = await getLayerByName('layer-name');
331
+ await createLayer({ ... });
332
+
286
333
  ```
287
334
 
288
335
 
package/dist/3d/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var C=Object.defineProperty,L=Object.defineProperties;var I=Object.getOwnPropertyDescriptors;var v=Object.getOwnPropertySymbols;var k=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable;var b=(t,r,e)=>r in t?C(t,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[r]=e,m=(t,r)=>{for(var e in r||(r={}))k.call(r,e)&&b(t,e,r[e]);if(v)for(var e of v(r))O.call(r,e)&&b(t,e,r[e]);return t},p=(t,r)=>L(t,I(r));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const x=require("cesium"),P=require("../index.js");function _(t){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const a=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(r,e,a.get?a:{enumerable:!0,get:()=>t[e]})}}return r.default=t,Object.freeze(r)}const c=_(x);function B(t,r){const e={baseType:"img",noteType:"cia",token:"dadcbbdb5206b626a29ca739686b3087"},{baseType:a,noteType:n,token:i}=Object.assign(e,r),o="https://t{s}.tianditu.gov.cn",s=["0","1","2","3","4","5","6","7"],l=new c.UrlTemplateImageryProvider({url:`${o}/DataServer?T=${a}_w&x={x}&y={y}&l={z}&tk=${i}`,subdomains:s,tilingScheme:new c.WebMercatorTilingScheme});let u=t.imageryLayers.addImageryProvider(l);u.gamma=1;const f=new c.UrlTemplateImageryProvider({url:`${o}/DataServer?T=ibo_w&x={x}&y={y}&l={z}&tk=${i}`,subdomains:s,tilingScheme:new c.WebMercatorTilingScheme});t.imageryLayers.addImageryProvider(f);const T=new c.UrlTemplateImageryProvider({url:`${o}/DataServer?T=${n}_w&x={x}&y={y}&l={z}&tk=${i}`,subdomains:s,tilingScheme:new c.WebMercatorTilingScheme});t.imageryLayers.addImageryProvider(T)}function E(t,r){B(t,r)}function S(t,r,e,a){(!a||!a.type)&&(a=Object.assign({},e,a));const n=a.type||"Point";let i;switch(n){case"Point":i=D(t,r,e,a);break;case"MultiLineString":case"LineString":i=R(t,r,e,a);break;case"Wms":e=e||a,i=H(t,r,e);break}return i}function D(t,r,e,a){const n=t.scene.primitives.add(new c.BillboardCollection);return n._layerName=r,e.forEach((i,o)=>{const s={scale:1,verticalOrigin:c.VerticalOrigin.BOTTOM,show:!0,disableDepthTestDistance:Number.POSITIVE_INFINITY,scaleByDistance:new c.NearFarScalar(1,1,1e5,.2)},l={position:c.Cartesian3.fromDegrees(...P.getLonLat(i),1),image:a.image||a.getImage(i),id:i.id||`point_${o}`},u=n.add(m(m(m({},s),a),l));u._originStyle=p(m(m(m({},s),a),l),{color:c.Color.WHITE}),u.properties=i}),t.scene.requestRender(),n}function R(t,r,e,a){if(e.length<2)return;const n=j(e,a),i=new c.GroundPolylinePrimitive({geometryInstances:n,appearance:new c.PolylineColorAppearance({translucent:!0}),interleave:!0,allowPicking:!0,asynchronous:!1});return i._layerName=r,t.scene.groundPrimitives.add(i),i}function j(t,r){const e=[],a=t.map(o=>c.Cartesian3.fromDegrees(...P.getLonLat(o),0)),n=new c.GroundPolylineGeometry({positions:a,width:r.width||4,granularity:r.granularity||2e3}),i=new c.GeometryInstance({id:"pipeLine",geometry:n,attributes:{color:c.ColorGeometryInstanceAttribute.fromColor(c.Color.fromCssColorString(r.color))}});return e.push(i),e}function H(t,r,e){const a=new c.WebMapServiceImageryProvider({url:e.url,layers:e.layers,parameters:{service:"WMS",version:"1.1.1",request:"GetMap",transparent:!0,format:"image/png"}});a._layerName=r;const n=t.imageryLayers.addImageryProvider(a);return n.alpha=e.alpha||.5,n.brightness=e.brightness||1,n.contrast=e.contrast||1,n.gamma=e.gamma||0,n}function N(t,r){const e=t.scene.primitives.add(new c.BillboardCollection);return e._layerName=r,e}function h(t,r){const e=t.scene.primitives,a=e.length;for(let n=0;n<a;n++){const i=e.get(n);if(i._layerName===r)return i}return null}function $(t,r){const e=h(t,r);e?t.scene.primitives.remove(e):console.warn("Layer not found:",r)}function q(t,r,e){const a=h(t,r);a?a.show=e:console.warn("Primitive not found:",r)}const g=new Map,d={},y={},W=(t,r)=>{g.has(t)&&console.warn(`Map with target '${t}' already exists. Overwriting...`),g.set(t,r),d[t]&&(d[t].forEach(e=>e(r)),delete d[t]),y[t]&&(y[t].forEach(e=>e(r)),delete y[t])};function w(t){const r=g.get(t);return r?Promise.resolve(r):new Promise(e=>{y[t]=y[t]||[],y[t].push(e)})}const V=t=>{g.has(t)&&(g.delete(t),delete d[t])},M=(t,r)=>{const e=g.get(t);if(e){r(e);return}d[t]||(d[t]=[]),d[t].push(r)};function G(t,r={}){const e=new c.Viewer(t,{requestRenderMode:!0,maximumRenderTimeChange:1/0,selectionIndicator:!1,animation:!1,timeline:!1,geocoder:!1,homeButton:!1,baseLayerPicker:!1,sceneModePicker:!1,navigationHelpButton:!1,infoBox:!1,fullscreenButton:!1,shouldAnimate:!0,contextOptions:{webgl:{preserveDrawingBuffer:!0,alpha:!0}}});let a;return c.defined(r.terrainUrl)?c.CesiumTerrainProvider.fromUrl(r.terrainUrl,{requestVertexNormals:!0,requestWaterMask:!0}).then(n=>{a=n,e.terrainProvider=a}):a=new c.EllipsoidTerrainProvider,e.terrainProvider=a,e._cesiumWidget._creditContainer.style.display="none",e.scene.globe.baseColor=new c.Color(0,0,0,0),e.scene.screenSpaceCameraController.minimumZoomDistance=r.minZoom||1,e.scene.screenSpaceCameraController.maximumZoomDistance=r.maxZoom||1e7,e.resolutionScale=window.devicePixelRatio>2?2:window.devicePixelRatio,e}function U(t,r,e,a){S(t,r,e,p(m({},a),{type:"Point"}))}function A(t,r,e){return new Promise((a,n)=>{t.camera.flyTo({destination:c.Cartesian3.fromDegrees(...r),duration:e.duration||1.2,orientation:{heading:e.heading||0,pitch:e.pitch||-Math.PI/2,roll:e.roll||0},easingFunction:e.easing||c.EasingFunction.LINEAR_NONE,maximumHeight:e.maxHeight||1e6,complete:()=>{a(!0)},cancel:()=>{a(!1)}})})}function F(t,r=1){return t.camera.flyHome(r)}function z(t,r,e){return new Promise((a,n)=>{t.camera.flyToBoundingSphere(r,{duration:e.duration||1e3,offset:new c.HeadingPitchRange(e.heading||0,e.pitch||-Math.PI/4,e.roll||0),easingFunction:e.easing,maximumHeight:e.maxHeight||1e6,complete:()=>{a(!0)},cancel:()=>{a(!1)}})})}function Z(t,r,e){t.camera.setView({destination:c.Cartesian3.fromDegrees(...r),orientation:{heading:e.heading||0,pitch:e.pitch||-Math.PI/2,roll:e.roll||0}})}function K(t,r){t.destroy(),V(r)}function Y(t,r=500){let e=0;return function(...a){const n=Date.now();n-e>=r&&(e=n,t.apply(this,a))}}function J(t,r){const e=new Set,a=new c.ScreenSpaceEventHandler(t.scene.canvas);let n=null;a.setInputAction(o=>{const s=t.scene.pick(o.position);if(n&&(Object.assign(n,n._originStyle),n=null,t.scene.requestRender()),c.defined(s)&&s.primitive instanceof c.Billboard){const l=s.primitive,u={primitive:l,properties:l.properties,event:o,pick:s};n=l,i(u),Object.assign(l,r.style||r.getStyle(l)),t.scene.requestRender()}},c.ScreenSpaceEventType.LEFT_CLICK);const i=o=>e.forEach(s=>s(o));return{onSelect:o=>(e.add(o),()=>e.delete(o)),clear(){e.clear()},destroy(){e.clear()}}}function Q(t,r){const e=new Set,a=s=>e.forEach(l=>l(s)),n=new c.ScreenSpaceEventHandler(t.scene.canvas);let i=null;const o=Y(a,r.delay||500);return n.setInputAction(s=>{const l=t.scene.pick(s.endPosition);if(i&&(Object.assign(i,i._originStyle),i=null,t.scene.requestRender()),c.defined(l)&&l.primitive instanceof c.Billboard){const u=l.primitive,f={primitive:u,properties:u.properties,event:s,pick:l};o(f),i=u,Object.assign(u,r.style||r.getStyle(u)),t.scene.requestRender()}},c.ScreenSpaceEventType.MOUSE_MOVE),{onHover:s=>(e.add(s),()=>e.delete(s)),clear:()=>{e.clear()},destroy:()=>{e.clear()}}}function X(t,r){const e=G(t,r);E(e,r);const a={targetId:t,instance:e,addMarker:(n,i,o)=>U(e,n,i,o),createLayer:(n,i,o)=>S(e,n,i,o),removeLayer:n=>$(e,n),visibleLayer:(n,i)=>q(e,n,i),getLayerByName:n=>h(e,n),createBlankLayer:n=>N(e,n),createSelect:n=>J(e,n),createHover:n=>Q(e,n),flyTo:(n,i)=>A(e,n,i),flyHome:n=>F(e,n),flyToBoundingSphere:(n,i)=>z(e,n,i),setView:(n,i)=>Z(e,n,i),getMapContext:n=>w(n),onMapReady:(n,i)=>M(n,i),destroyMap:n=>K(e,n)};return W(t,a),a}function ee(t,r){M(t,r)}function te(t){return w(t)}exports.getMapContext=te;exports.onMapReady=ee;exports.useMap=X;
1
+ "use strict";var C=Object.defineProperty,L=Object.defineProperties;var I=Object.getOwnPropertyDescriptors;var v=Object.getOwnPropertySymbols;var k=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable;var b=(t,r,e)=>r in t?C(t,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[r]=e,m=(t,r)=>{for(var e in r||(r={}))k.call(r,e)&&b(t,e,r[e]);if(v)for(var e of v(r))O.call(r,e)&&b(t,e,r[e]);return t},p=(t,r)=>L(t,I(r));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const x=require("cesium"),S=require("../index.js");function _(t){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const a=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(r,e,a.get?a:{enumerable:!0,get:()=>t[e]})}}return r.default=t,Object.freeze(r)}const c=_(x);function B(t,r){const e={baseType:"img",noteType:"cia",token:"dadcbbdb5206b626a29ca739686b3087"},{baseType:a,noteType:n,token:i}=Object.assign(e,r),o="https://t{s}.tianditu.gov.cn",s=["0","1","2","3","4","5","6","7"],l=new c.UrlTemplateImageryProvider({url:`${o}/DataServer?T=${a}_w&x={x}&y={y}&l={z}&tk=${i}`,subdomains:s,tilingScheme:new c.WebMercatorTilingScheme});let u=t.imageryLayers.addImageryProvider(l);u.gamma=1;const f=new c.UrlTemplateImageryProvider({url:`${o}/DataServer?T=ibo_w&x={x}&y={y}&l={z}&tk=${i}`,subdomains:s,tilingScheme:new c.WebMercatorTilingScheme});t.imageryLayers.addImageryProvider(f);const T=new c.UrlTemplateImageryProvider({url:`${o}/DataServer?T=${n}_w&x={x}&y={y}&l={z}&tk=${i}`,subdomains:s,tilingScheme:new c.WebMercatorTilingScheme});t.imageryLayers.addImageryProvider(T)}function E(t,r){B(t,r)}function P(t,r,e,a){(!a||!a.type)&&(a=Object.assign({},e,a));const n=a.type||"Point";let i;switch(n){case"Point":i=D(t,r,e,a);break;case"MultiLineString":case"LineString":i=R(t,r,e,a);break;case"Wms":e=e||a,i=H(t,r,e);break}return i}function D(t,r,e,a){const n=t.scene.primitives.add(new c.BillboardCollection);return n._layerName=r,e.forEach((i,o)=>{const s={scale:1,verticalOrigin:c.VerticalOrigin.BOTTOM,show:!0,disableDepthTestDistance:Number.POSITIVE_INFINITY,scaleByDistance:new c.NearFarScalar(1,1,1e5,.2)},l={position:c.Cartesian3.fromDegrees(...S.getLonLat(i),1),image:a.image||a.getImage(i),id:i.id||`point_${o}`},u=n.add(m(m(m({},s),a),l));u._originStyle=p(m(m(m({},s),a),l),{color:c.Color.WHITE}),u.properties=i}),t.scene.requestRender(),n}function R(t,r,e,a){if(e.length<2)return;const n=j(e,a),i=new c.GroundPolylinePrimitive({geometryInstances:n,appearance:new c.PolylineColorAppearance({translucent:!0}),interleave:!0,allowPicking:!0,asynchronous:!1});return i._layerName=r,t.scene.groundPrimitives.add(i),i}function j(t,r){const e=[],a=t.map(o=>c.Cartesian3.fromDegrees(...S.getLonLat(o),0)),n=new c.GroundPolylineGeometry({positions:a,width:r.width||4,granularity:r.granularity||2e3}),i=new c.GeometryInstance({id:"pipeLine",geometry:n,attributes:{color:c.ColorGeometryInstanceAttribute.fromColor(c.Color.fromCssColorString(r.color))}});return e.push(i),e}function H(t,r,e){const a=new c.WebMapServiceImageryProvider({url:e.url,layers:e.layers,parameters:{service:"WMS",version:"1.1.1",request:"GetMap",transparent:!0,format:"image/png"}});a._layerName=r;const n=t.imageryLayers.addImageryProvider(a);return n.alpha=e.alpha||.5,n.brightness=e.brightness||1,n.contrast=e.contrast||1,n.gamma=e.gamma||1,n}function N(t,r){const e=t.scene.primitives.add(new c.BillboardCollection);return e._layerName=r,e}function h(t,r){const e=t.scene.primitives,a=e.length;for(let n=0;n<a;n++){const i=e.get(n);if(i._layerName===r)return i}return null}function $(t,r){const e=h(t,r);e?t.scene.primitives.remove(e):console.warn("Layer not found:",r)}function q(t,r,e){const a=h(t,r);a?a.show=e:console.warn("Primitive not found:",r)}const g=new Map,d={},y={},W=(t,r)=>{g.has(t)&&console.warn(`Map with target '${t}' already exists. Overwriting...`),g.set(t,r),d[t]&&(d[t].forEach(e=>e(r)),delete d[t]),y[t]&&(y[t].forEach(e=>e(r)),delete y[t])};function w(t){const r=g.get(t);return r?Promise.resolve(r):new Promise(e=>{y[t]=y[t]||[],y[t].push(e)})}const V=t=>{g.has(t)&&(g.delete(t),delete d[t])},M=(t,r)=>{const e=g.get(t);if(e){r(e);return}d[t]||(d[t]=[]),d[t].push(r)};function G(t,r={}){const e=new c.Viewer(t,{requestRenderMode:!0,maximumRenderTimeChange:1/0,selectionIndicator:!1,animation:!1,timeline:!1,geocoder:!1,homeButton:!1,baseLayerPicker:!1,sceneModePicker:!1,navigationHelpButton:!1,infoBox:!1,fullscreenButton:!1,shouldAnimate:!0,contextOptions:{webgl:{preserveDrawingBuffer:!0,alpha:!0}}});let a;return c.defined(r.terrainUrl)?c.CesiumTerrainProvider.fromUrl(r.terrainUrl,{requestVertexNormals:!0,requestWaterMask:!0}).then(n=>{a=n,e.terrainProvider=a}):a=new c.EllipsoidTerrainProvider,e.terrainProvider=a,e._cesiumWidget._creditContainer.style.display="none",e.scene.globe.baseColor=new c.Color(0,0,0,0),e.scene.screenSpaceCameraController.minimumZoomDistance=r.minZoom||1,e.scene.screenSpaceCameraController.maximumZoomDistance=r.maxZoom||1e7,e.resolutionScale=window.devicePixelRatio>2?2:window.devicePixelRatio,e}function U(t,r,e,a){P(t,r,e,p(m({},a),{type:"Point"}))}function A(t,r,e){return new Promise((a,n)=>{t.camera.flyTo({destination:c.Cartesian3.fromDegrees(...r),duration:e.duration||1.2,orientation:{heading:e.heading||0,pitch:e.pitch||-Math.PI/2,roll:e.roll||0},easingFunction:e.easing||c.EasingFunction.LINEAR_NONE,maximumHeight:e.maxHeight||1e6,complete:()=>{a(!0)},cancel:()=>{a(!1)}})})}function F(t,r=1){return t.camera.flyHome(r)}function z(t,r,e){return new Promise((a,n)=>{t.camera.flyToBoundingSphere(r,{duration:e.duration||1e3,offset:new c.HeadingPitchRange(e.heading||0,e.pitch||-Math.PI/4,e.roll||0),easingFunction:e.easing,maximumHeight:e.maxHeight||1e6,complete:()=>{a(!0)},cancel:()=>{a(!1)}})})}function Z(t,r,e){t.camera.setView({destination:c.Cartesian3.fromDegrees(...r),orientation:{heading:e.heading||0,pitch:e.pitch||-Math.PI/2,roll:e.roll||0}})}function K(t,r){t.destroy(),V(r)}function Y(t,r=500){let e=0;return function(...a){const n=Date.now();n-e>=r&&(e=n,t.apply(this,a))}}function J(t,r){const e=new Set,a=new c.ScreenSpaceEventHandler(t.scene.canvas);let n=null;a.setInputAction(o=>{const s=t.scene.pick(o.position);if(n&&(Object.assign(n,n._originStyle),n.isSelected=!1,n=null,t.scene.requestRender()),c.defined(s)&&s.primitive instanceof c.Billboard){const l=s.primitive;l.isSelected=!0;const u={primitive:l,properties:l.properties,event:o,pick:s};n=l,i(u),Object.assign(l,r.style||r.getStyle(l)),t.scene.requestRender()}},c.ScreenSpaceEventType.LEFT_CLICK);const i=o=>e.forEach(s=>s(o));return{onSelect:o=>(e.add(o),()=>e.delete(o)),clear(){e.clear()},destroy(){e.clear()}}}function Q(t,r){const e=new Set,a=s=>e.forEach(l=>l(s)),n=new c.ScreenSpaceEventHandler(t.scene.canvas);let i=null;const o=Y(a,r.delay||500);return n.setInputAction(s=>{const l=t.scene.pick(s.endPosition);if(i&&!i.isSelected&&(Object.assign(i,i._originStyle),i=null,t.scene.requestRender()),c.defined(l)&&l.primitive instanceof c.Billboard){const u=l.primitive,f={primitive:u,properties:u.properties,event:s,pick:l};o(f),i=u,u.isSelected||(Object.assign(u,r.style||r.getStyle(u)),t.scene.requestRender())}},c.ScreenSpaceEventType.MOUSE_MOVE),{onHover:s=>(e.add(s),()=>e.delete(s)),clear:()=>{e.clear()},destroy:()=>{e.clear()}}}function X(t,r){const e=G(t,r);E(e,r);const a={targetId:t,instance:e,addMarker:(n,i,o)=>U(e,n,i,o),createLayer:(n,i,o)=>P(e,n,i,o),removeLayer:n=>$(e,n),visibleLayer:(n,i)=>q(e,n,i),getLayerByName:n=>h(e,n),createBlankLayer:n=>N(e,n),createSelect:n=>J(e,n),createHover:n=>Q(e,n),flyTo:(n,i)=>A(e,n,i),flyHome:n=>F(e,n),flyToBoundingSphere:(n,i)=>z(e,n,i),setView:(n,i)=>Z(e,n,i),getMapContext:n=>w(n),onMapReady:(n,i)=>M(n,i),destroyMap:n=>K(e,n)};return W(t,a),a}function ee(t,r){M(t,r)}function te(t){return w(t)}exports.getMapContext=te;exports.onMapReady=ee;exports.useMap=X;
package/dist/3d/index.mjs CHANGED
@@ -11,7 +11,7 @@ var P = (r, t, e) => t in r ? C(r, t, { enumerable: !0, configurable: !0, writab
11
11
  return r;
12
12
  }, p = (r, t) => I(r, L(t));
13
13
  import * as c from "cesium";
14
- import { getLonLat as b } from "../index.mjs";
14
+ import { getLonLat as S } from "../index.mjs";
15
15
  function O(r, t) {
16
16
  const e = {
17
17
  baseType: "img",
@@ -41,7 +41,7 @@ function O(r, t) {
41
41
  function B(r, t) {
42
42
  O(r, t);
43
43
  }
44
- function w(r, t, e, a) {
44
+ function b(r, t, e, a) {
45
45
  (!a || !a.type) && (a = Object.assign({}, e, a));
46
46
  const n = a.type || "Point";
47
47
  let i;
@@ -73,7 +73,7 @@ function _(r, t, e, a) {
73
73
  scaleByDistance: new c.NearFarScalar(1, 1, 1e5, 0.2)
74
74
  // 根据相机距离缩放
75
75
  }, l = {
76
- position: c.Cartesian3.fromDegrees(...b(i), 1),
76
+ position: c.Cartesian3.fromDegrees(...S(i), 1),
77
77
  image: a.image || a.getImage(i),
78
78
  id: i.id || `point_${o}`
79
79
  }, u = n.add(m(m(m({}, s), a), l));
@@ -94,7 +94,7 @@ function E(r, t, e, a) {
94
94
  return i._layerName = t, r.scene.groundPrimitives.add(i), i;
95
95
  }
96
96
  function D(r, t) {
97
- const e = [], a = r.map((o) => c.Cartesian3.fromDegrees(...b(o), 0)), n = new c.GroundPolylineGeometry({
97
+ const e = [], a = r.map((o) => c.Cartesian3.fromDegrees(...S(o), 0)), n = new c.GroundPolylineGeometry({
98
98
  positions: a,
99
99
  width: t.width || 4,
100
100
  granularity: t.granularity || 2e3
@@ -121,7 +121,7 @@ function H(r, t, e) {
121
121
  });
122
122
  a._layerName = t;
123
123
  const n = r.imageryLayers.addImageryProvider(a);
124
- return n.alpha = e.alpha || 0.5, n.brightness = e.brightness || 1, n.contrast = e.contrast || 1, n.gamma = e.gamma || 0, n;
124
+ return n.alpha = e.alpha || 0.5, n.brightness = e.brightness || 1, n.contrast = e.contrast || 1, n.gamma = e.gamma || 1, n;
125
125
  }
126
126
  function R(r, t) {
127
127
  const e = r.scene.primitives.add(new c.BillboardCollection());
@@ -147,7 +147,7 @@ function N(r, t, e) {
147
147
  const g = /* @__PURE__ */ new Map(), d = {}, y = {}, j = (r, t) => {
148
148
  g.has(r) && console.warn(`Map with target '${r}' already exists. Overwriting...`), g.set(r, t), d[r] && (d[r].forEach((e) => e(t)), delete d[r]), y[r] && (y[r].forEach((e) => e(t)), delete y[r]);
149
149
  };
150
- function S(r) {
150
+ function w(r) {
151
151
  const t = g.get(r);
152
152
  return t ? Promise.resolve(t) : new Promise((e) => {
153
153
  y[r] = y[r] || [], y[r].push(e);
@@ -207,7 +207,7 @@ function q(r, t = {}) {
207
207
  }) : a = new c.EllipsoidTerrainProvider(), e.terrainProvider = a, e._cesiumWidget._creditContainer.style.display = "none", e.scene.globe.baseColor = new c.Color(0, 0, 0, 0), e.scene.screenSpaceCameraController.minimumZoomDistance = t.minZoom || 1, e.scene.screenSpaceCameraController.maximumZoomDistance = t.maxZoom || 1e7, e.resolutionScale = window.devicePixelRatio > 2 ? 2 : window.devicePixelRatio, e;
208
208
  }
209
209
  function V(r, t, e, a) {
210
- w(r, t, e, p(m({}, a), { type: "Point" }));
210
+ b(r, t, e, p(m({}, a), { type: "Point" }));
211
211
  }
212
212
  function G(r, t, e) {
213
213
  return new Promise((a, n) => {
@@ -280,8 +280,10 @@ function K(r, t) {
280
280
  let n = null;
281
281
  a.setInputAction((o) => {
282
282
  const s = r.scene.pick(o.position);
283
- if (n && (Object.assign(n, n._originStyle), n = null, r.scene.requestRender()), c.defined(s) && s.primitive instanceof c.Billboard) {
284
- const l = s.primitive, u = {
283
+ if (n && (Object.assign(n, n._originStyle), n.isSelected = !1, n = null, r.scene.requestRender()), c.defined(s) && s.primitive instanceof c.Billboard) {
284
+ const l = s.primitive;
285
+ l.isSelected = !0;
286
+ const u = {
285
287
  primitive: l,
286
288
  properties: l.properties,
287
289
  event: o,
@@ -307,14 +309,14 @@ function Y(r, t) {
307
309
  const o = z(a, t.delay || 500);
308
310
  return n.setInputAction((s) => {
309
311
  const l = r.scene.pick(s.endPosition);
310
- if (i && (Object.assign(i, i._originStyle), i = null, r.scene.requestRender()), c.defined(l) && l.primitive instanceof c.Billboard) {
312
+ if (i && !i.isSelected && (Object.assign(i, i._originStyle), i = null, r.scene.requestRender()), c.defined(l) && l.primitive instanceof c.Billboard) {
311
313
  const u = l.primitive, f = {
312
314
  primitive: u,
313
315
  properties: u.properties,
314
316
  event: s,
315
317
  pick: l
316
318
  };
317
- o(f), i = u, Object.assign(u, t.style || t.getStyle(u)), r.scene.requestRender();
319
+ o(f), i = u, u.isSelected || (Object.assign(u, t.style || t.getStyle(u)), r.scene.requestRender());
318
320
  }
319
321
  }, c.ScreenSpaceEventType.MOUSE_MOVE), {
320
322
  onHover: (s) => (e.add(s), () => e.delete(s)),
@@ -333,7 +335,7 @@ function X(r, t) {
333
335
  targetId: r,
334
336
  instance: e,
335
337
  addMarker: (n, i, o) => V(e, n, i, o),
336
- createLayer: (n, i, o) => w(e, n, i, o),
338
+ createLayer: (n, i, o) => b(e, n, i, o),
337
339
  removeLayer: (n) => $(e, n),
338
340
  visibleLayer: (n, i) => N(e, n, i),
339
341
  getLayerByName: (n) => h(e, n),
@@ -344,7 +346,7 @@ function X(r, t) {
344
346
  flyHome: (n) => U(e, n),
345
347
  flyToBoundingSphere: (n, i) => A(e, n, i),
346
348
  setView: (n, i) => F(e, n, i),
347
- getMapContext: (n) => S(n),
349
+ getMapContext: (n) => w(n),
348
350
  onMapReady: (n, i) => T(n, i),
349
351
  destroyMap: (n) => Z(e, n)
350
352
  };
@@ -354,7 +356,7 @@ function ee(r, t) {
354
356
  T(r, t);
355
357
  }
356
358
  function re(r) {
357
- return S(r);
359
+ return w(r);
358
360
  }
359
361
  export {
360
362
  re as getMapContext,
@@ -14,7 +14,7 @@ export declare function createBaseLayer(viewer: Cesium.Viewer, options: any): vo
14
14
  * @param options 配置项
15
15
  * @returns 图层
16
16
  */
17
- export declare function createLayer<K extends keyof optionsMap>(viewer: Cesium.Viewer, layerName: string, data: any, options: optionsMap[K] & {
17
+ export declare function createLayer<K extends keyof optionsMap>(viewer: Cesium.Viewer, layerName: string, data: any, options?: optionsMap[K] & {
18
18
  type?: K;
19
19
  }): any;
20
20
  /**
@@ -48,7 +48,7 @@ export type Coordinates = [number, number, number];
48
48
  export interface MapContext {
49
49
  targetId: string;
50
50
  instance: Cesium.Viewer;
51
- addMarker: (layerName: string, data: any, options?: optionsMap['Point']) => void;
51
+ addMarker: (layerName: string, data: any, options: optionsMap['Point']) => void;
52
52
  createLayer: <K extends keyof optionsMap>(layerName: string, data: any, options?: optionsMap[K] & {
53
53
  type?: K;
54
54
  }) => Cesium.Primitive;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jgis",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "快速创建二维、三维工具库",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -48,7 +48,7 @@
48
48
  "bugs": {
49
49
  "url": "https://github.com/Guidozijef/jgis/issues"
50
50
  },
51
- "homepage": "https://github.com/Guidozijef/jgis#readme",
51
+ "homepage": "https://guidozijef.github.io/jgis-docs/",
52
52
  "devDependencies": {
53
53
  "@eslint/js": "^9.39.2",
54
54
  "@turf/turf": "^7.3.1",