jgis 1.0.3 → 1.0.5
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 +55 -12
- package/dist/2d/index.js +1 -1
- package/dist/2d/index.mjs +76 -76
- package/dist/2d/interaction.d.ts +2 -2
- package/dist/2d/types.d.ts +2 -2
- package/dist/3d/core.d.ts +2 -2
- package/dist/3d/index.js +1 -1
- package/dist/3d/index.mjs +177 -108
- package/dist/3d/interaction.d.ts +47 -5
- package/dist/3d/layer.d.ts +49 -7
- package/dist/3d/types.d.ts +36 -24
- package/dist/utils/index.d.ts +7 -0
- package/package.json +70 -70
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* 按需引入 `jgis/2d` 或 `jgis/3d`。
|
|
16
16
|
* 使用 2D 功能时绝不会打包 Cesium 代码,保持体积轻量。
|
|
17
17
|
* **🚀 函数式编程 (Functional)**:
|
|
18
|
-
* 摒弃复杂的类继承,使用 Hooks 风格(如 `
|
|
18
|
+
* 摒弃复杂的类继承,使用 Hooks 风格(如 `createSelect`, `useMap`)。
|
|
19
19
|
* 支持**隐式上下文**:初始化地图后,功能函数自动绑定当前地图实例,无需重复传参。
|
|
20
20
|
* **⚡️ 全能拾取器 (Universal Picker)**:
|
|
21
21
|
* **Hybrid Select**:一套 API 同时支持本地 Vector 图层和远程 WMS 服务(自动解析 GetFeatureInfo)。
|
|
@@ -23,7 +23,11 @@
|
|
|
23
23
|
* **🎨 灵活的样式系统**:
|
|
24
24
|
* 支持根据图层、属性动态渲染高亮样式,完全控制权交给用户。
|
|
25
25
|
* **🗺️ 二三维API风格一致**:
|
|
26
|
-
* 二三维API
|
|
26
|
+
* 二三维API风格一致,方便会一种框架的开发者快速理解和上手开发另一种框架。
|
|
27
|
+
* **🗺️ 完全兼容openlayers/cesium**:
|
|
28
|
+
* 导出`instance`地图实例,可自己操作原生API。
|
|
29
|
+
* 如果有特殊需求,完全可以自己用原生实现,没有任何违和感。
|
|
30
|
+
|
|
27
31
|
|
|
28
32
|
---
|
|
29
33
|
|
|
@@ -60,7 +64,7 @@ import { useMap } from 'jgis/2d';
|
|
|
60
64
|
|
|
61
65
|
onMounted(() => {
|
|
62
66
|
// 初始化地图,会自动注册为全局激活实例
|
|
63
|
-
const { addMarker } = useMap('map-container', {
|
|
67
|
+
const { instance, addMarker, createLayer } = useMap('map-container', {
|
|
64
68
|
center: [116.4, 39.9],
|
|
65
69
|
zoom: 10
|
|
66
70
|
});
|
|
@@ -85,14 +89,14 @@ onMounted(() => {
|
|
|
85
89
|
JGIS 的核心优势在于**同时处理 Vector 和 WMS 图层**,并提供统一的样式回调。
|
|
86
90
|
|
|
87
91
|
```javascript
|
|
88
|
-
const {
|
|
92
|
+
const { createSelect, createHover } = useMap('map-container');
|
|
89
93
|
|
|
90
94
|
// 假设你有两个图层:一个是本地 Vector,一个是 Geoserver WMS
|
|
91
95
|
const vectorLayer = ...;
|
|
92
96
|
const wmsLayer = ...;
|
|
93
97
|
|
|
94
98
|
// 开启选择交互 (无需传入 map 实例)
|
|
95
|
-
const select =
|
|
99
|
+
const select = createSelect({
|
|
96
100
|
// 监听这些图层 (不传则监听所有)
|
|
97
101
|
layers: [vectorLayer, wmsLayer],
|
|
98
102
|
|
|
@@ -107,7 +111,7 @@ const select = useSelect({
|
|
|
107
111
|
|
|
108
112
|
// 根据业务逻辑返回不同样式
|
|
109
113
|
if (layer === wmsLayer) {
|
|
110
|
-
return new Style({
|
|
114
|
+
return new Style({
|
|
111
115
|
stroke: new Stroke({ color: 'red', width: 3 }),
|
|
112
116
|
fill: new Fill({ color: 'rgba(255,0,0,0.1)' })
|
|
113
117
|
});
|
|
@@ -129,6 +133,32 @@ select.onSelect((res) => {
|
|
|
129
133
|
}
|
|
130
134
|
});
|
|
131
135
|
|
|
136
|
+
|
|
137
|
+
// 监听回调
|
|
138
|
+
select.onSelect((res) => {
|
|
139
|
+
if (res && res.length > 0) {
|
|
140
|
+
// res 是一个数组,包含 feature, layer 和 properties
|
|
141
|
+
const item = res[0];
|
|
142
|
+
console.log('选中要素属性:', item.properties);
|
|
143
|
+
console.log('所属图层:', item.layer);
|
|
144
|
+
} else {
|
|
145
|
+
console.log('取消选中');
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
const { onHover } = createHover({
|
|
150
|
+
style: new Style({
|
|
151
|
+
stroke: new Stroke({ color: 'blue', width: 3 }),
|
|
152
|
+
fill: new Fill({ color: 'rgba(0,0,255,0.1)' })
|
|
153
|
+
})
|
|
154
|
+
})
|
|
155
|
+
|
|
156
|
+
onHover(data => {
|
|
157
|
+
console.log('鼠标悬浮获取的数据:', data);
|
|
158
|
+
})
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
132
162
|
// 页面销毁时可调用
|
|
133
163
|
// select.destroy();
|
|
134
164
|
```
|
|
@@ -174,7 +204,7 @@ import { useMap } from 'jgis/3d';
|
|
|
174
204
|
|
|
175
205
|
onMounted(() => {
|
|
176
206
|
// 初始化地图,会自动注册为全局激活实例
|
|
177
|
-
const { flyTo, addMarker } = useMap('map-container', {
|
|
207
|
+
const { instance, flyTo, addMarker } = useMap('map-container', {
|
|
178
208
|
center: [116.4, 39.9],
|
|
179
209
|
zoom: 10
|
|
180
210
|
});
|
|
@@ -186,7 +216,7 @@ onMounted(() => {
|
|
|
186
216
|
{ lon: 104.45343, lat: 30.83233 }
|
|
187
217
|
],
|
|
188
218
|
{
|
|
189
|
-
|
|
219
|
+
getImage: (item) => new URL('./img.png', import.meta.url).href,
|
|
190
220
|
scale: 0.4,
|
|
191
221
|
// color: Cesium.Color.YELLOW,
|
|
192
222
|
disableDepthTestDistance: Number.POSITIVE_INFINITY,
|
|
@@ -205,10 +235,10 @@ onMounted(() => {
|
|
|
205
235
|
|
|
206
236
|
```javascript
|
|
207
237
|
import { useMap } from 'jgis/3d';
|
|
208
|
-
const {
|
|
209
|
-
|
|
238
|
+
const { createSelect, createHover } = useMap('map-container');
|
|
210
239
|
|
|
211
|
-
|
|
240
|
+
// click事件
|
|
241
|
+
const { onSelect } = createSelect({
|
|
212
242
|
style: {
|
|
213
243
|
color: Cesium.Color.YELLOW,
|
|
214
244
|
scale: 0.5
|
|
@@ -216,7 +246,20 @@ const { onSelect } = useSelect({
|
|
|
216
246
|
})
|
|
217
247
|
|
|
218
248
|
onSelect((data) => {
|
|
219
|
-
console.log('获取的数据', data)
|
|
249
|
+
console.log('onSelect获取的数据', data)
|
|
250
|
+
})
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
// hover事件
|
|
254
|
+
const { onHover } = createHover({
|
|
255
|
+
style: {
|
|
256
|
+
color: Cesium.Color.YELLOW,
|
|
257
|
+
scale: 0.5
|
|
258
|
+
}
|
|
259
|
+
})
|
|
260
|
+
|
|
261
|
+
onHover((data) => {
|
|
262
|
+
console.log('onHover获取的数据', data)
|
|
220
263
|
})
|
|
221
264
|
|
|
222
265
|
```
|
package/dist/2d/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var oe=Object.defineProperty,se=Object.defineProperties;var ae=Object.getOwnPropertyDescriptors;var V=Object.getOwnPropertySymbols;var ce=Object.prototype.hasOwnProperty,ie=Object.prototype.propertyIsEnumerable;var C=(e,t,r)=>t in e?oe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,N=(e,t)=>{for(var r in t||(t={}))ce.call(t,r)&&C(e,r,t[r]);if(V)for(var r of V(t))ie.call(t,r)&&C(e,r,t[r]);return e},j=(e,t)=>se(e,ae(t));var I=(e,t,r)=>new Promise((o,n)=>{var s=i=>{try{c(r.next(i))}catch(l){n(l)}},a=i=>{try{c(r.throw(i))}catch(l){n(l)}},c=i=>i.done?o(i.value):Promise.resolve(i.value).then(s,a);c((r=r.apply(e,t)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const $=require("ol"),L=require("ol/layer"),w=require("ol/source"),A=require("ol/format"),le=require("ol/Overlay"),T=require("ol/geom"),ue=require("ol/Feature");require("ol/extent");const p=require("ol/style"),fe=require("ol/control"),ye=require("ol/events/condition.js"),ge=require("ol/interaction/Select");var g=63710088e-1,de={centimeters:g*100,centimetres:g*100,degrees:360/(2*Math.PI),feet:g*3.28084,inches:g*39.37,kilometers:g/1e3,kilometres:g/1e3,meters:g,metres:g,miles:g/1609.344,millimeters:g*1e3,millimetres:g*1e3,nauticalmiles:g/1852,radians:1,yards:g*1.0936};function D(e,t,r={}){const o={type:"Feature"};return(r.id===0||r.id)&&(o.id=r.id),r.bbox&&(o.bbox=r.bbox),o.properties=t||{},o.geometry=e,o}function B(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!W(e[0])||!W(e[1]))throw new Error("coordinates must contain numbers");return D({type:"Point",coordinates:e},t,r)}function me(e,t,r={}){for(const n of e){if(n.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(n[n.length-1].length!==n[0].length)throw new Error("First and last Position are not equivalent.");for(let s=0;s<n[n.length-1].length;s++)if(n[n.length-1][s]!==n[0][s])throw new Error("First and last Position are not equivalent.")}return D({type:"Polygon",coordinates:e},t,r)}function we(e,t="kilometers"){const r=de[t];if(!r)throw new Error(t+" units is invalid");return e/r}function G(e){return e%(2*Math.PI)*180/Math.PI}function z(e){return e%360*Math.PI/180}function W(e){return!isNaN(e)&&e!==null&&!Array.isArray(e)}function he(e){if(!e)throw new Error("coord is required");if(!Array.isArray(e)){if(e.type==="Feature"&&e.geometry!==null&&e.geometry.type==="Point")return[...e.geometry.coordinates];if(e.type==="Point")return[...e.coordinates]}if(Array.isArray(e)&&e.length>=2&&!Array.isArray(e[0])&&!Array.isArray(e[1]))return[...e];throw new Error("coord must be GeoJSON Point or an Array of numbers")}function be(e,t,r,o={}){const n=he(e),s=z(n[0]),a=z(n[1]),c=z(r),i=we(t,o.units),l=Math.asin(Math.sin(a)*Math.cos(i)+Math.cos(a)*Math.sin(i)*Math.cos(c)),d=s+Math.atan2(Math.sin(c)*Math.sin(i)*Math.cos(a),Math.cos(i)-Math.sin(a)*Math.sin(l)),P=G(d),u=G(l);return n[2]!==void 0?B([P,u,n[2]],o.properties):B([P,u],o.properties)}function Se(e,t,r={}){const o=r.steps||64,n=r.properties?r.properties:!Array.isArray(e)&&e.type==="Feature"&&e.properties?e.properties:{},s=[];for(let a=0;a<o;a++)s.push(be(e,t,a*-360/o,r).geometry.coordinates);return s.push(s[0]),me([s],n)}function k(e,t){return typeof e!="object"||e===null?null:e.lttd&&e.lgtd?[Number(e.lgtd),Number(e.lttd)]:e.jd&&e.wd?[Number(e.jd),Number(e.wd)]:e.latitude&&e.longitude?[Number(e.longitude),Number(e.latitude)]:e.lon&&e.lat?[Number(e.lon),Number(e.lat)]:null}function J(e,t){e.getLayers().getArray().forEach(o=>{o.get("name")==t&&("setSource"in o&&o.setSource(null),"dispose"in o&&o.dispose(),e.removeLayer(o))})}function U(e,t,r,o=!1){const n=o?r.style||r.getStyle(e,t):void 0,s=o?999:-1;n&&typeof n.setZIndex=="function"&&n.setZIndex(s),t.setStyle(n)}function Le(e,t,r){if(!t)return;const o=r.time||300;let n=Date.now(),s=!1,a=0;t.running=!0;function c(){if(!t.running)return;const i=Date.now();i-n>=o&&(s=!s,n=i,U(e,t,r,s),t.changed()),a=requestAnimationFrame(c)}c(),t.clearFlash=()=>{t.running=!1,cancelAnimationFrame(a),t.setStyle(void 0)}}function Fe(e,t,r){var a,c;if(!r)return;let o=k(r);const n=(c=(a=H(e,t))==null?void 0:a.getFeatures)==null?void 0:c.call(a);return n?n.find(function(i){const l=i.getGeometry();return l&&l instanceof T.Geometry&&typeof l.intersectsCoordinate=="function"?l.intersectsCoordinate(o):!1}):void 0}function Me(e,t,r){const o=[];let n;const s=r.type||"Point";t.forEach(c=>{switch(s){case"Point":n=Pe(c);break;case"LineString":n=ve(c);break;case"MultiLineString":n=Ee(c);break;case"MultiPolygon":n=Te(c);break;case"Polygon":n=Ie(c);break}if(!n)return;const i=new ue({geometry:n,data:c});i.set("layerName",e),o.push(i)});const a=new w.Vector;return o.length>0&&a.addFeatures(o),a}function xe(e,t){return t.cqlFilter&&(t.cqlFilter?t.CQL_FILTER+=` and ${t.cqlFilter}`:t.CQL_FILTER=t.cqlFilter),new w.TileWMS({url:t.url,params:{LAYERS:t.layers,CQL_FILTER:t.CQL_FILTER},serverType:"geoserver",crossOrigin:"anonymous"})}function H(e,t){const r=Z(e,t);return r==null?void 0:r.getSource()}function Pe(e){const t=k(e);if(t)return new T.Point(t)}function ve(e){return new T.LineString(e.coordinates)}function Ee(e){return new T.MultiLineString(e.coordinates)}function Te(e){return new T.MultiPolygon(e.coordinates)}function Ie(e){return new T.Polygon(e.coordinates)}function O(e,t){let r=null;return t.style?r=t.style:t.getStyle?r=(o,n)=>t.getStyle(e,o,n):r=Ae(),r}function Ae(){return(t,r)=>new p.Style({image:new p.Circle({radius:5,fill:new p.Fill({color:"red"})})})}function ke(e,t={}){const r=t.token||"dadcbbdb5206b626a29ca739686b3087",o=t.baseType||"img",n=t.noteType||"cia",s=new L.Tile({className:"tdt-base-layer",source:new w.XYZ({url:`http://t0.tianditu.com/DataServer?T=${o}_w&x={x}&y={y}&l={z}&tk=${r}`,maxZoom:t.maxZoom||18,minZoom:t.minZoom||2}),zIndex:t.zIndex||1});s.set("name","tdt-base-layer");const a=new L.Tile({className:"tdt-base-layer",source:new w.XYZ({url:`http://t0.tianditu.com/DataServer?T=${n}_w&x={x}&y={y}&l={z}&tk=${r}`,maxZoom:t.maxZoom||18,minZoom:t.minZoom||2}),zIndex:t.zIndex?t.zIndex+1:2});return a.set("name","tdt-baseNote-layer"),e.addLayer(s),e.addLayer(a),s}function Q(e,t,r,o){(!o||!o.type)&&(o=Object.assign({},r,o));const n=o.type||"Point";let s;switch(n){case"GeoJSON":s=Re(t,r,e,o);break;case"Wms":s=Ne(t,e,o);break;case"Point":case"LineString":case"MultiLineString":case"Polygon":case"MultiPolygon":s=je(t,r,e,o);break;case"Circle":s=pe(t,r,e,o);break;case"Overlay":s=ze(t,e,o);break}return s}function Oe(e,t){Array.isArray(t)?t.forEach(r=>{J(e,r)}):J(e,t)}function Re(e,t,r,o){console.log(typeof t,t);const n=new A.GeoJSON().readFeatures(t,{dataProjection:"EPSG:4326",featureProjection:"EPSG:4326"}),s=new w.Vector;s.addFeatures(n);const a=new L.Vector({source:s,style:O(e,o),zIndex:o.zIndex||10});return a.set("name",e),a.set("type","webgl"),r.addLayer(a),a}function Ne(e,t,r){const o=new L.Tile({opacity:r.opacity||1,source:xe(e,r),zIndex:r.zIndex||10});return o.set("name",e),t.addLayer(o),o}function je(e,t,r,o){if(!t||t.length===0)return null;const n=new L.Vector({source:Me(e,t,o),style:O(e,o),zIndex:o.zIndex||10});return n.set("name",e),n.set("type","webgl"),r.addLayer(n),n}function pe(e,t,r,o){const n=k(t),s=Se(n,o.radius,{steps:300,units:"meters"}),a=new A.GeoJSON().readFeature(s,{dataProjection:"EPSG:4326",featureProjection:"EPSG:4490"}),c=new w.Vector({wrapX:!1});c.addFeature(a);const i=new L.Vector({source:c,style:O(e,o),zIndex:o.zIndex?o.zIndex:10});return i.set("name",e),i.set("type","webgl"),r.addLayer(i),i}function ze(e,t,r){const o=document.createElement("div"),n=new le({element:o,stopEvent:!1,positioning:r.positioning||"bottom-center"});return n.set("name",e),n.set("type","webgl"),t.addOverlay(n),{overlayer:n,content:o}}function Ze(e,t,r){const o=new L.Vector({source:new w.Vector({wrapX:!1}),zIndex:r.zIndex?r.zIndex:10,style:O(t,r)});return o.set("name",t),o.set("type","webgl"),e.addLayer(o),o}function Z(e,t){return e.getAllLayers().find(n=>n.get("name")===t)}function qe(e,t,r){const o=Z(e,t);return o.setVisible(r),o}const E=new Map,x={},v={},_e=(e,t)=>{E.has(e)&&console.warn(`Map with target '${e}' already exists. Overwriting...`),E.set(e,t),x[e]&&(x[e].forEach(r=>r(t)),delete x[e]),v[e]&&(v[e].forEach(r=>r(t)),delete v[e])};function X(e){const t=E.get(e);return t?Promise.resolve(t):new Promise(r=>{v[e]=v[e]||[],v[e].push(r)})}const Ve=e=>{E.has(e)&&(E.delete(e),delete x[e])},Y=(e,t)=>{const r=E.get(e);if(r){t(r);return}x[e]||(x[e]=[]),x[e].push(t)};function Ce(e,t={}){if(!e&&!e.target)throw new Error("is not a valid element");arguments.length===1&&typeof e=="object"&&(t=e,e=t.target);const o=Object.assign({zoom:10,center:[104.064839,30.548857],minZoom:2,maxZoom:19,projection:"EPSG:4326"},t),n=new $.Map({target:e,layers:[],view:new $.View({projection:o.projection,center:o.center,zoom:o.zoom,minZoom:o.minZoom,maxZoom:o.maxZoom}),controls:fe.defaults({zoom:!1,rotate:!1,attribution:!1})});return n.targetId=e,n}function $e(e,t,r,o){Q(e,t,r,j(N({},o),{type:"Point"}))}function K(e,t,r){return new Promise((o,n)=>{e.getView().animate({center:t,duration:r.duration||1e3,zoom:r.zoom||te(e),rotation:r.rotation||0,easing:r.easing},o)})}function ee(e,t){const r=(t.extend[0]+t.extend[2])/2,o=(t.extend[1]+t.extend[3])/2;return K(e,[r,o],t)}function Be(e,t,r){const o=t.getGeometry().getExtent();return ee(e,j(N({},r),{extend:o}))}function Ge(e){return e.getView().getProjection()}function te(e){return e.getView().getZoom()}function We(e,t){e.getView().setZoom(t)}function Je(e,t){e.un("click",()=>{}),e.un("pointermove",()=>{}),Ve(t)}let M=null;function De(e,t={}){const r=new A.GeoJSON;M=new ge({condition:ye.click,multi:t.multi||!1,style:c=>{if(typeof t.getStyle=="function"){const i=c.get("layerName");return t.getStyle(i,c)}else return t.style},layers:t.layers?c=>t.layers.includes(c):void 0}),e.addInteraction(M);const o=M.getFeatures(),n=c=>I(null,null,function*(){const i=(t.layers||e.getLayers().getArray()).filter(h=>{const b=h.getSource();return h.getVisible()&&(b instanceof w.TileWMS||b instanceof w.ImageWMS)});if(i.length===0)return;const l=e.getView(),d=i.map(h=>I(null,null,function*(){const f=h.getSource().getFeatureInfoUrl(c.coordinate,l.getResolution(),l.getProjection(),{INFO_FORMAT:"application/json",FEATURE_COUNT:1});if(f)try{const S=yield(yield fetch(f)).json();if(S.features&&S.features.length>0){const m=r.readFeatures(S);return m.forEach(y=>{y.set("wms_layer_source",h),y.set("wms_event_source",c),y.set("layerName",h.get("name"))}),m}}catch(F){console.warn(F)}return[]})),u=(yield Promise.all(d)).flat();u.length>0&&(t.multi,o.extend(u),M.dispatchEvent({type:"select",selected:u,deselected:[],mapBrowserEvent:c}))});e.on("singleclick",n);const s=new Set;M.on("select",c=>{const i=o.getArray();if(i.length>0){const l=i.map(d=>({feature:d,properties:d.getProperties(),layer:d.get("wms_layer_source")||M.getLayer(d),event:d.get("wms_event_source")||c}));a(l)}else a(null)});const a=c=>s.forEach(i=>i(c));return{onSelect:c=>(s.add(c),()=>s.delete(c)),clear:()=>{s.clear(),o.clear()},destroy:()=>{e.removeInteraction(M),e.un("singleclick",n),s.clear()}}}function Ue(e,t={}){var P;const r=new A.GeoJSON,o=(P=t.debounceTime)!=null?P:200,n=new w.Vector,s=new L.Vector({source:n,map:e,style:t.style,zIndex:1e4,properties:{title:"JG_HOVER_LAYER"}});let a=null,c=null;const i=new Set,l=(u,h,b)=>{const f=u[0];if(a!==f)if(a=f,n.clear(),f?(n.addFeature(f),t.cursor!==!1&&(e.getTargetElement().style.cursor="pointer")):t.cursor!==!1&&(e.getTargetElement().style.cursor=""),f){const F={feature:f,layer:h,properties:f.getProperties(),coordinate:b};i.forEach(S=>S([F]))}else i.forEach(F=>F(null))},d=u=>{if(u.dragging)return;const h=u.pixel,b=u.coordinate;let f=!1;if(e.forEachFeatureAtPixel(h,(m,y)=>{f||y!==s&&(t.layers&&!t.layers.includes(y)||(f=!0,c&&clearTimeout(c),l([m],y,b)))}),f)return;a&&(a=null,n.clear(),e.getTargetElement().style.cursor="",i.forEach(m=>m(null))),c&&clearTimeout(c);const S=(t.layers||e.getLayers().getArray()).filter(m=>{const y=m.getSource();return m.getVisible()&&(y instanceof w.TileWMS||y instanceof w.ImageWMS)});S.length!==0&&(c=setTimeout(()=>I(null,null,function*(){const m=e.getView();for(const y of S){const q=y.getSource().getFeatureInfoUrl(b,m.getResolution(),m.getProjection(),{INFO_FORMAT:"application/json",FEATURE_COUNT:1});if(q)try{const R=yield(yield fetch(q)).json();if(R.features&&R.features.length>0){const _=r.readFeatures(R);_.forEach(ne=>ne.set("wms_layer_source",y)),l(_,y,b);return}}catch(re){}}}),o))};return e.on("pointermove",d),{onHover:u=>(i.add(u),()=>i.delete(u)),clear:()=>{n.clear(),a=null},destroy:()=>{e.un("pointermove",d),e.removeLayer(s),i.clear(),c&&clearTimeout(c)}}}const He=(e,t)=>{const r=Ce(e,t);ke(r,t.baseLayers);const o={targetId:e,instance:r,addMarker:(n,s,a)=>$e(r,n,s,a),createLayer:(n,s,a)=>Q(r,n,s,a),createBlankLayer:(n,s)=>Ze(r,n,s),visibleLayer:(n,s)=>qe(r,n,s),removeLayer:n=>Oe(r,n),getLonLat:n=>k(n),getLayerByName:n=>Z(r,n),getSourceByName:n=>H(r,n),useSelect:n=>De(r,n),useHover:n=>Ue(r,n),queryFeature:(n,s)=>Fe(r,n,s),lightFeature:(n,s,a,c)=>U(n,s,a,c),flashFeature:(n,s,a)=>Le(n,s,a),flyTo:(n,s)=>K(r,n,s),flyToByExtent:n=>ee(r,n),flyToByFeature:(n,s)=>Be(r,n,s),getProjection:()=>Ge(r),getZoom:()=>te(r),setZoom:n=>We(r,n),getMapContext:n=>X(n),onMapReady:(n,s)=>Y(n,s),destroyMap:()=>Je(r,e)};return _e(e,o),o};function Qe(e,t){Y(e,t)}function Xe(e){return X(e)}exports.getMapContext=Xe;exports.onMapReady=Qe;exports.useMap=He;
|
|
1
|
+
"use strict";var oe=Object.defineProperty,se=Object.defineProperties;var ae=Object.getOwnPropertyDescriptors;var V=Object.getOwnPropertySymbols;var ce=Object.prototype.hasOwnProperty,ie=Object.prototype.propertyIsEnumerable;var C=(e,t,r)=>t in e?oe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,N=(e,t)=>{for(var r in t||(t={}))ce.call(t,r)&&C(e,r,t[r]);if(V)for(var r of V(t))ie.call(t,r)&&C(e,r,t[r]);return e},j=(e,t)=>se(e,ae(t));var I=(e,t,r)=>new Promise((o,n)=>{var s=i=>{try{c(r.next(i))}catch(l){n(l)}},a=i=>{try{c(r.throw(i))}catch(l){n(l)}},c=i=>i.done?o(i.value):Promise.resolve(i.value).then(s,a);c((r=r.apply(e,t)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const $=require("ol"),L=require("ol/layer"),w=require("ol/source"),A=require("ol/format"),le=require("ol/Overlay"),T=require("ol/geom"),ue=require("ol/Feature");require("ol/extent");const p=require("ol/style"),fe=require("ol/control"),ye=require("ol/events/condition.js"),ge=require("ol/interaction/Select");var g=63710088e-1,de={centimeters:g*100,centimetres:g*100,degrees:360/(2*Math.PI),feet:g*3.28084,inches:g*39.37,kilometers:g/1e3,kilometres:g/1e3,meters:g,metres:g,miles:g/1609.344,millimeters:g*1e3,millimetres:g*1e3,nauticalmiles:g/1852,radians:1,yards:g*1.0936};function D(e,t,r={}){const o={type:"Feature"};return(r.id===0||r.id)&&(o.id=r.id),r.bbox&&(o.bbox=r.bbox),o.properties=t||{},o.geometry=e,o}function B(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!W(e[0])||!W(e[1]))throw new Error("coordinates must contain numbers");return D({type:"Point",coordinates:e},t,r)}function me(e,t,r={}){for(const n of e){if(n.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(n[n.length-1].length!==n[0].length)throw new Error("First and last Position are not equivalent.");for(let s=0;s<n[n.length-1].length;s++)if(n[n.length-1][s]!==n[0][s])throw new Error("First and last Position are not equivalent.")}return D({type:"Polygon",coordinates:e},t,r)}function we(e,t="kilometers"){const r=de[t];if(!r)throw new Error(t+" units is invalid");return e/r}function G(e){return e%(2*Math.PI)*180/Math.PI}function z(e){return e%360*Math.PI/180}function W(e){return!isNaN(e)&&e!==null&&!Array.isArray(e)}function he(e){if(!e)throw new Error("coord is required");if(!Array.isArray(e)){if(e.type==="Feature"&&e.geometry!==null&&e.geometry.type==="Point")return[...e.geometry.coordinates];if(e.type==="Point")return[...e.coordinates]}if(Array.isArray(e)&&e.length>=2&&!Array.isArray(e[0])&&!Array.isArray(e[1]))return[...e];throw new Error("coord must be GeoJSON Point or an Array of numbers")}function be(e,t,r,o={}){const n=he(e),s=z(n[0]),a=z(n[1]),c=z(r),i=we(t,o.units),l=Math.asin(Math.sin(a)*Math.cos(i)+Math.cos(a)*Math.sin(i)*Math.cos(c)),d=s+Math.atan2(Math.sin(c)*Math.sin(i)*Math.cos(a),Math.cos(i)-Math.sin(a)*Math.sin(l)),P=G(d),u=G(l);return n[2]!==void 0?B([P,u,n[2]],o.properties):B([P,u],o.properties)}function Se(e,t,r={}){const o=r.steps||64,n=r.properties?r.properties:!Array.isArray(e)&&e.type==="Feature"&&e.properties?e.properties:{},s=[];for(let a=0;a<o;a++)s.push(be(e,t,a*-360/o,r).geometry.coordinates);return s.push(s[0]),me([s],n)}function k(e,t){return typeof e!="object"||e===null?null:e.lttd&&e.lgtd?[Number(e.lgtd),Number(e.lttd)]:e.jd&&e.wd?[Number(e.jd),Number(e.wd)]:e.latitude&&e.longitude?[Number(e.longitude),Number(e.latitude)]:e.lon&&e.lat?[Number(e.lon),Number(e.lat)]:null}function J(e,t){e.getLayers().getArray().forEach(o=>{o.get("name")==t&&("setSource"in o&&o.setSource(null),"dispose"in o&&o.dispose(),e.removeLayer(o))})}function U(e,t,r,o=!1){const n=o?r.style||r.getStyle(e,t):void 0,s=o?999:-1;n&&typeof n.setZIndex=="function"&&n.setZIndex(s),t.setStyle(n)}function Le(e,t,r){if(!t)return;const o=r.time||300;let n=Date.now(),s=!1,a=0;t.running=!0;function c(){if(!t.running)return;const i=Date.now();i-n>=o&&(s=!s,n=i,U(e,t,r,s),t.changed()),a=requestAnimationFrame(c)}c(),t.clearFlash=()=>{t.running=!1,cancelAnimationFrame(a),t.setStyle(void 0)}}function Fe(e,t,r){var a,c;if(!r)return;let o=k(r);const n=(c=(a=H(e,t))==null?void 0:a.getFeatures)==null?void 0:c.call(a);return n?n.find(function(i){const l=i.getGeometry();return l&&l instanceof T.Geometry&&typeof l.intersectsCoordinate=="function"?l.intersectsCoordinate(o):!1}):void 0}function Me(e,t,r){const o=[];let n;const s=r.type||"Point";t.forEach(c=>{switch(s){case"Point":n=Pe(c);break;case"LineString":n=ve(c);break;case"MultiLineString":n=Ee(c);break;case"MultiPolygon":n=Te(c);break;case"Polygon":n=Ie(c);break}if(!n)return;const i=new ue({geometry:n,data:c});i.set("layerName",e),o.push(i)});const a=new w.Vector;return o.length>0&&a.addFeatures(o),a}function xe(e,t){return t.cqlFilter&&(t.cqlFilter?t.CQL_FILTER+=` and ${t.cqlFilter}`:t.CQL_FILTER=t.cqlFilter),new w.TileWMS({url:t.url,params:{LAYERS:t.layers,CQL_FILTER:t.CQL_FILTER},serverType:"geoserver",crossOrigin:"anonymous"})}function H(e,t){const r=Z(e,t);return r==null?void 0:r.getSource()}function Pe(e){const t=k(e);if(t)return new T.Point(t)}function ve(e){return new T.LineString(e.coordinates)}function Ee(e){return new T.MultiLineString(e.coordinates)}function Te(e){return new T.MultiPolygon(e.coordinates)}function Ie(e){return new T.Polygon(e.coordinates)}function O(e,t){let r=null;return t.style?r=t.style:t.getStyle?r=(o,n)=>t.getStyle(e,o,n):r=Ae(),r}function Ae(){return(t,r)=>new p.Style({image:new p.Circle({radius:5,fill:new p.Fill({color:"red"})})})}function ke(e,t={}){const r=t.token||"dadcbbdb5206b626a29ca739686b3087",o=t.baseType||"img",n=t.noteType||"cia",s=new L.Tile({className:"tdt-base-layer",source:new w.XYZ({url:`http://t0.tianditu.com/DataServer?T=${o}_w&x={x}&y={y}&l={z}&tk=${r}`,maxZoom:t.maxZoom||18,minZoom:t.minZoom||2}),zIndex:t.zIndex||1});s.set("name","tdt-base-layer");const a=new L.Tile({className:"tdt-base-layer",source:new w.XYZ({url:`http://t0.tianditu.com/DataServer?T=${n}_w&x={x}&y={y}&l={z}&tk=${r}`,maxZoom:t.maxZoom||18,minZoom:t.minZoom||2}),zIndex:t.zIndex?t.zIndex+1:2});return a.set("name","tdt-baseNote-layer"),e.addLayer(s),e.addLayer(a),s}function Q(e,t,r,o){(!o||!o.type)&&(o=Object.assign({},r,o));const n=o.type||"Point";let s;switch(n){case"GeoJSON":s=Re(t,r,e,o);break;case"Wms":s=Ne(t,e,o);break;case"Point":case"LineString":case"MultiLineString":case"Polygon":case"MultiPolygon":s=je(t,r,e,o);break;case"Circle":s=pe(t,r,e,o);break;case"Overlay":s=ze(t,e,o);break}return s}function Oe(e,t){Array.isArray(t)?t.forEach(r=>{J(e,r)}):J(e,t)}function Re(e,t,r,o){console.log(typeof t,t);const n=new A.GeoJSON().readFeatures(t,{dataProjection:"EPSG:4326",featureProjection:"EPSG:4326"}),s=new w.Vector;s.addFeatures(n);const a=new L.Vector({source:s,style:O(e,o),zIndex:o.zIndex||10});return a.set("name",e),a.set("type","webgl"),r.addLayer(a),a}function Ne(e,t,r){const o=new L.Tile({opacity:r.opacity||1,source:xe(e,r),zIndex:r.zIndex||10});return o.set("name",e),t.addLayer(o),o}function je(e,t,r,o){if(!t||t.length===0)return null;const n=new L.Vector({source:Me(e,t,o),style:O(e,o),zIndex:o.zIndex||10});return n.set("name",e),n.set("type","webgl"),r.addLayer(n),n}function pe(e,t,r,o){const n=k(t),s=Se(n,o.radius,{steps:300,units:"meters"}),a=new A.GeoJSON().readFeature(s,{dataProjection:"EPSG:4326",featureProjection:"EPSG:4490"}),c=new w.Vector({wrapX:!1});c.addFeature(a);const i=new L.Vector({source:c,style:O(e,o),zIndex:o.zIndex?o.zIndex:10});return i.set("name",e),i.set("type","webgl"),r.addLayer(i),i}function ze(e,t,r){const o=document.createElement("div"),n=new le({element:o,stopEvent:!1,positioning:r.positioning||"bottom-center"});return n.set("name",e),n.set("type","webgl"),t.addOverlay(n),{overlayer:n,content:o}}function Ze(e,t,r){const o=new L.Vector({source:new w.Vector({wrapX:!1}),zIndex:r.zIndex?r.zIndex:10,style:O(t,r)});return o.set("name",t),o.set("type","webgl"),e.addLayer(o),o}function Z(e,t){return e.getAllLayers().find(n=>n.get("name")===t)}function qe(e,t,r){const o=Z(e,t);return o.setVisible(r),o}const E=new Map,x={},v={},_e=(e,t)=>{E.has(e)&&console.warn(`Map with target '${e}' already exists. Overwriting...`),E.set(e,t),x[e]&&(x[e].forEach(r=>r(t)),delete x[e]),v[e]&&(v[e].forEach(r=>r(t)),delete v[e])};function X(e){const t=E.get(e);return t?Promise.resolve(t):new Promise(r=>{v[e]=v[e]||[],v[e].push(r)})}const Ve=e=>{E.has(e)&&(E.delete(e),delete x[e])},Y=(e,t)=>{const r=E.get(e);if(r){t(r);return}x[e]||(x[e]=[]),x[e].push(t)};function Ce(e,t={}){if(!e&&!e.target)throw new Error("is not a valid element");arguments.length===1&&typeof e=="object"&&(t=e,e=t.target);const o=Object.assign({zoom:10,center:[104.064839,30.548857],minZoom:2,maxZoom:19,projection:"EPSG:4326"},t),n=new $.Map({target:e,layers:[],view:new $.View({projection:o.projection,center:o.center,zoom:o.zoom,minZoom:o.minZoom,maxZoom:o.maxZoom}),controls:fe.defaults({zoom:!1,rotate:!1,attribution:!1})});return n.targetId=e,n}function $e(e,t,r,o){Q(e,t,r,j(N({},o),{type:"Point"}))}function K(e,t,r){return new Promise((o,n)=>{e.getView().animate({center:t,duration:r.duration||1e3,zoom:r.zoom||te(e),rotation:r.rotation||0,easing:r.easing},o)})}function ee(e,t){const r=(t.extend[0]+t.extend[2])/2,o=(t.extend[1]+t.extend[3])/2;return K(e,[r,o],t)}function Be(e,t,r){const o=t.getGeometry().getExtent();return ee(e,j(N({},r),{extend:o}))}function Ge(e){return e.getView().getProjection()}function te(e){return e.getView().getZoom()}function We(e,t){e.getView().setZoom(t)}function Je(e,t){e.un("click",()=>{}),e.un("pointermove",()=>{}),Ve(t)}let M=null;function De(e,t={}){const r=new A.GeoJSON;M=new ge({condition:ye.click,multi:t.multi||!1,style:c=>{if(typeof t.getStyle=="function"){const i=c.get("layerName");return t.getStyle(i,c)}else return t.style},layers:t.layers?c=>t.layers.includes(c):void 0}),e.addInteraction(M);const o=M.getFeatures(),n=c=>I(null,null,function*(){const i=(t.layers||e.getLayers().getArray()).filter(h=>{const b=h.getSource();return h.getVisible()&&(b instanceof w.TileWMS||b instanceof w.ImageWMS)});if(i.length===0)return;const l=e.getView(),d=i.map(h=>I(null,null,function*(){const f=h.getSource().getFeatureInfoUrl(c.coordinate,l.getResolution(),l.getProjection(),{INFO_FORMAT:"application/json",FEATURE_COUNT:1});if(f)try{const S=yield(yield fetch(f)).json();if(S.features&&S.features.length>0){const m=r.readFeatures(S);return m.forEach(y=>{y.set("wms_layer_source",h),y.set("wms_event_source",c),y.set("layerName",h.get("name"))}),m}}catch(F){console.warn(F)}return[]})),u=(yield Promise.all(d)).flat();u.length>0&&(t.multi,o.extend(u),M.dispatchEvent({type:"select",selected:u,deselected:[],mapBrowserEvent:c}))});e.on("singleclick",n);const s=new Set;M.on("select",c=>{const i=o.getArray();if(i.length>0){const l=i.map(d=>({feature:d,properties:d.getProperties(),layer:d.get("wms_layer_source")||M.getLayer(d),event:d.get("wms_event_source")||c}));a(l)}else a(null)});const a=c=>s.forEach(i=>i(c));return{onSelect:c=>(s.add(c),()=>s.delete(c)),clear:()=>{s.clear(),o.clear()},destroy:()=>{e.removeInteraction(M),e.un("singleclick",n),s.clear()}}}function Ue(e,t={}){var P;const r=new A.GeoJSON,o=(P=t.debounceTime)!=null?P:200,n=new w.Vector,s=new L.Vector({source:n,map:e,style:t.style,zIndex:1e4,properties:{title:"JG_HOVER_LAYER"}});let a=null,c=null;const i=new Set,l=(u,h,b)=>{const f=u[0];if(a!==f)if(a=f,n.clear(),f?(n.addFeature(f),t.cursor!==!1&&(e.getTargetElement().style.cursor="pointer")):t.cursor!==!1&&(e.getTargetElement().style.cursor=""),f){const F={feature:f,layer:h,properties:f.getProperties(),coordinate:b};i.forEach(S=>S([F]))}else i.forEach(F=>F(null))},d=u=>{if(u.dragging)return;const h=u.pixel,b=u.coordinate;let f=!1;if(e.forEachFeatureAtPixel(h,(m,y)=>{f||y!==s&&(t.layers&&!t.layers.includes(y)||(f=!0,c&&clearTimeout(c),l([m],y,b)))}),f)return;a&&(a=null,n.clear(),e.getTargetElement().style.cursor="",i.forEach(m=>m(null))),c&&clearTimeout(c);const S=(t.layers||e.getLayers().getArray()).filter(m=>{const y=m.getSource();return m.getVisible()&&(y instanceof w.TileWMS||y instanceof w.ImageWMS)});S.length!==0&&(c=setTimeout(()=>I(null,null,function*(){const m=e.getView();for(const y of S){const q=y.getSource().getFeatureInfoUrl(b,m.getResolution(),m.getProjection(),{INFO_FORMAT:"application/json",FEATURE_COUNT:1});if(q)try{const R=yield(yield fetch(q)).json();if(R.features&&R.features.length>0){const _=r.readFeatures(R);_.forEach(ne=>ne.set("wms_layer_source",y)),l(_,y,b);return}}catch(re){}}}),o))};return e.on("pointermove",d),{onHover:u=>(i.add(u),()=>i.delete(u)),clear:()=>{n.clear(),a=null},destroy:()=>{e.un("pointermove",d),e.removeLayer(s),i.clear(),c&&clearTimeout(c)}}}const He=(e,t)=>{const r=Ce(e,t);ke(r,t.baseLayers);const o={targetId:e,instance:r,addMarker:(n,s,a)=>$e(r,n,s,a),createLayer:(n,s,a)=>Q(r,n,s,a),createBlankLayer:(n,s)=>Ze(r,n,s),visibleLayer:(n,s)=>qe(r,n,s),removeLayer:n=>Oe(r,n),getLonLat:n=>k(n),getLayerByName:n=>Z(r,n),getSourceByName:n=>H(r,n),createSelect:n=>De(r,n),createHover:n=>Ue(r,n),queryFeature:(n,s)=>Fe(r,n,s),lightFeature:(n,s,a,c)=>U(n,s,a,c),flashFeature:(n,s,a)=>Le(n,s,a),flyTo:(n,s)=>K(r,n,s),flyToByExtent:n=>ee(r,n),flyToByFeature:(n,s)=>Be(r,n,s),getProjection:()=>Ge(r),getZoom:()=>te(r),setZoom:n=>We(r,n),getMapContext:n=>X(n),onMapReady:(n,s)=>Y(n,s),destroyMap:()=>Je(r,e)};return _e(e,o),o};function Qe(e,t){Y(e,t)}function Xe(e){return X(e)}exports.getMapContext=Xe;exports.onMapReady=Qe;exports.useMap=He;
|
package/dist/2d/index.mjs
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
var
|
|
1
|
+
var ae = Object.defineProperty, se = Object.defineProperties;
|
|
2
2
|
var ce = Object.getOwnPropertyDescriptors;
|
|
3
3
|
var B = Object.getOwnPropertySymbols;
|
|
4
4
|
var ie = Object.prototype.hasOwnProperty, le = Object.prototype.propertyIsEnumerable;
|
|
5
|
-
var V = (e, t, r) => t in e ?
|
|
5
|
+
var V = (e, t, r) => t in e ? ae(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r, R = (e, t) => {
|
|
6
6
|
for (var r in t || (t = {}))
|
|
7
7
|
ie.call(t, r) && V(e, r, t[r]);
|
|
8
8
|
if (B)
|
|
9
9
|
for (var r of B(t))
|
|
10
10
|
le.call(t, r) && V(e, r, t[r]);
|
|
11
11
|
return e;
|
|
12
|
-
}, O = (e, t) =>
|
|
12
|
+
}, O = (e, t) => se(e, ce(t));
|
|
13
13
|
var T = (e, t, r) => new Promise((o, n) => {
|
|
14
|
-
var
|
|
14
|
+
var a = (i) => {
|
|
15
15
|
try {
|
|
16
16
|
c(r.next(i));
|
|
17
17
|
} catch (l) {
|
|
18
18
|
n(l);
|
|
19
19
|
}
|
|
20
|
-
},
|
|
20
|
+
}, s = (i) => {
|
|
21
21
|
try {
|
|
22
22
|
c(r.throw(i));
|
|
23
23
|
} catch (l) {
|
|
24
24
|
n(l);
|
|
25
25
|
}
|
|
26
|
-
}, c = (i) => i.done ? o(i.value) : Promise.resolve(i.value).then(
|
|
26
|
+
}, c = (i) => i.done ? o(i.value) : Promise.resolve(i.value).then(a, s);
|
|
27
27
|
c((r = r.apply(e, t)).next());
|
|
28
28
|
});
|
|
29
29
|
import { Map as ue, View as fe } from "ol";
|
|
@@ -81,8 +81,8 @@ function Te(e, t, r = {}) {
|
|
|
81
81
|
);
|
|
82
82
|
if (n[n.length - 1].length !== n[0].length)
|
|
83
83
|
throw new Error("First and last Position are not equivalent.");
|
|
84
|
-
for (let
|
|
85
|
-
if (n[n.length - 1][
|
|
84
|
+
for (let a = 0; a < n[n.length - 1].length; a++)
|
|
85
|
+
if (n[n.length - 1][a] !== n[0][a])
|
|
86
86
|
throw new Error("First and last Position are not equivalent.");
|
|
87
87
|
}
|
|
88
88
|
return H({
|
|
@@ -119,21 +119,21 @@ function pe(e) {
|
|
|
119
119
|
throw new Error("coord must be GeoJSON Point or an Array of numbers");
|
|
120
120
|
}
|
|
121
121
|
function Ae(e, t, r, o = {}) {
|
|
122
|
-
const n = pe(e),
|
|
123
|
-
Math.sin(
|
|
124
|
-
), m =
|
|
125
|
-
Math.sin(c) * Math.sin(i) * Math.cos(
|
|
126
|
-
Math.cos(i) - Math.sin(
|
|
122
|
+
const n = pe(e), a = z(n[0]), s = z(n[1]), c = z(r), i = Ie(t, o.units), l = Math.asin(
|
|
123
|
+
Math.sin(s) * Math.cos(i) + Math.cos(s) * Math.sin(i) * Math.cos(c)
|
|
124
|
+
), m = a + Math.atan2(
|
|
125
|
+
Math.sin(c) * Math.sin(i) * Math.cos(s),
|
|
126
|
+
Math.cos(i) - Math.sin(s) * Math.sin(l)
|
|
127
127
|
), x = $(m), u = $(l);
|
|
128
128
|
return n[2] !== void 0 ? q([x, u, n[2]], o.properties) : q([x, u], o.properties);
|
|
129
129
|
}
|
|
130
130
|
function ke(e, t, r = {}) {
|
|
131
|
-
const o = r.steps || 64, n = r.properties ? r.properties : !Array.isArray(e) && e.type === "Feature" && e.properties ? e.properties : {},
|
|
132
|
-
for (let
|
|
133
|
-
|
|
134
|
-
Ae(e, t,
|
|
131
|
+
const o = r.steps || 64, n = r.properties ? r.properties : !Array.isArray(e) && e.type === "Feature" && e.properties ? e.properties : {}, a = [];
|
|
132
|
+
for (let s = 0; s < o; s++)
|
|
133
|
+
a.push(
|
|
134
|
+
Ae(e, t, s * -360 / o, r).geometry.coordinates
|
|
135
135
|
);
|
|
136
|
-
return
|
|
136
|
+
return a.push(a[0]), Te([a], n);
|
|
137
137
|
}
|
|
138
138
|
function p(e, t) {
|
|
139
139
|
return typeof e != "object" || e === null ? null : e.lttd && e.lgtd ? [Number(e.lgtd), Number(e.lttd)] : e.jd && e.wd ? [Number(e.jd), Number(e.wd)] : e.latitude && e.longitude ? [Number(e.longitude), Number(e.latitude)] : e.lon && e.lat ? [Number(e.lon), Number(e.lat)] : null;
|
|
@@ -144,28 +144,28 @@ function U(e, t) {
|
|
|
144
144
|
});
|
|
145
145
|
}
|
|
146
146
|
function J(e, t, r, o = !1) {
|
|
147
|
-
const n = o ? r.style || r.getStyle(e, t) : void 0,
|
|
148
|
-
n && typeof n.setZIndex == "function" && n.setZIndex(
|
|
147
|
+
const n = o ? r.style || r.getStyle(e, t) : void 0, a = o ? 999 : -1;
|
|
148
|
+
n && typeof n.setZIndex == "function" && n.setZIndex(a), t.setStyle(n);
|
|
149
149
|
}
|
|
150
150
|
function Re(e, t, r) {
|
|
151
151
|
if (!t) return;
|
|
152
152
|
const o = r.time || 300;
|
|
153
|
-
let n = Date.now(),
|
|
153
|
+
let n = Date.now(), a = !1, s = 0;
|
|
154
154
|
t.running = !0;
|
|
155
155
|
function c() {
|
|
156
156
|
if (!t.running) return;
|
|
157
157
|
const i = Date.now();
|
|
158
|
-
i - n >= o && (
|
|
158
|
+
i - n >= o && (a = !a, n = i, J(e, t, r, a), t.changed()), s = requestAnimationFrame(c);
|
|
159
159
|
}
|
|
160
160
|
c(), t.clearFlash = () => {
|
|
161
|
-
t.running = !1, cancelAnimationFrame(
|
|
161
|
+
t.running = !1, cancelAnimationFrame(s), t.setStyle(void 0);
|
|
162
162
|
};
|
|
163
163
|
}
|
|
164
164
|
function Oe(e, t, r) {
|
|
165
|
-
var
|
|
165
|
+
var s, c;
|
|
166
166
|
if (!r) return;
|
|
167
167
|
let o = p(r);
|
|
168
|
-
const n = (c = (
|
|
168
|
+
const n = (c = (s = Q(e, t)) == null ? void 0 : s.getFeatures) == null ? void 0 : c.call(s);
|
|
169
169
|
return n ? n.find(function(i) {
|
|
170
170
|
const l = i.getGeometry();
|
|
171
171
|
return l && l instanceof ge && typeof l.intersectsCoordinate == "function" ? l.intersectsCoordinate(o) : !1;
|
|
@@ -174,9 +174,9 @@ function Oe(e, t, r) {
|
|
|
174
174
|
function ze(e, t, r) {
|
|
175
175
|
const o = [];
|
|
176
176
|
let n;
|
|
177
|
-
const
|
|
177
|
+
const a = r.type || "Point";
|
|
178
178
|
t.forEach((c) => {
|
|
179
|
-
switch (
|
|
179
|
+
switch (a) {
|
|
180
180
|
case "Point":
|
|
181
181
|
n = Ne(c);
|
|
182
182
|
break;
|
|
@@ -200,8 +200,8 @@ function ze(e, t, r) {
|
|
|
200
200
|
});
|
|
201
201
|
i.set("layerName", e), o.push(i);
|
|
202
202
|
});
|
|
203
|
-
const
|
|
204
|
-
return o.length > 0 &&
|
|
203
|
+
const s = new M();
|
|
204
|
+
return o.length > 0 && s.addFeatures(o), s;
|
|
205
205
|
}
|
|
206
206
|
function je(e, t) {
|
|
207
207
|
return t.cqlFilter && (t.cqlFilter ? t.CQL_FILTER += ` and ${t.cqlFilter}` : t.CQL_FILTER = t.cqlFilter), new N({
|
|
@@ -248,7 +248,7 @@ function Ve() {
|
|
|
248
248
|
});
|
|
249
249
|
}
|
|
250
250
|
function Ge(e, t = {}) {
|
|
251
|
-
const r = t.token || "dadcbbdb5206b626a29ca739686b3087", o = t.baseType || "img", n = t.noteType || "cia",
|
|
251
|
+
const r = t.token || "dadcbbdb5206b626a29ca739686b3087", o = t.baseType || "img", n = t.noteType || "cia", a = new j({
|
|
252
252
|
className: "tdt-base-layer",
|
|
253
253
|
source: new G({
|
|
254
254
|
url: `http://t0.tianditu.com/DataServer?T=${o}_w&x={x}&y={y}&l={z}&tk=${r}`,
|
|
@@ -257,8 +257,8 @@ function Ge(e, t = {}) {
|
|
|
257
257
|
}),
|
|
258
258
|
zIndex: t.zIndex || 1
|
|
259
259
|
});
|
|
260
|
-
|
|
261
|
-
const
|
|
260
|
+
a.set("name", "tdt-base-layer");
|
|
261
|
+
const s = new j({
|
|
262
262
|
className: "tdt-base-layer",
|
|
263
263
|
source: new G({
|
|
264
264
|
url: `http://t0.tianditu.com/DataServer?T=${n}_w&x={x}&y={y}&l={z}&tk=${r}`,
|
|
@@ -267,34 +267,34 @@ function Ge(e, t = {}) {
|
|
|
267
267
|
}),
|
|
268
268
|
zIndex: t.zIndex ? t.zIndex + 1 : 2
|
|
269
269
|
});
|
|
270
|
-
return
|
|
270
|
+
return s.set("name", "tdt-baseNote-layer"), e.addLayer(a), e.addLayer(s), a;
|
|
271
271
|
}
|
|
272
272
|
function X(e, t, r, o) {
|
|
273
273
|
(!o || !o.type) && (o = Object.assign({}, r, o));
|
|
274
274
|
const n = o.type || "Point";
|
|
275
|
-
let
|
|
275
|
+
let a;
|
|
276
276
|
switch (n) {
|
|
277
277
|
case "GeoJSON":
|
|
278
|
-
|
|
278
|
+
a = $e(t, r, e, o);
|
|
279
279
|
break;
|
|
280
280
|
case "Wms":
|
|
281
|
-
|
|
281
|
+
a = De(t, e, o);
|
|
282
282
|
break;
|
|
283
283
|
case "Point":
|
|
284
284
|
case "LineString":
|
|
285
285
|
case "MultiLineString":
|
|
286
286
|
case "Polygon":
|
|
287
287
|
case "MultiPolygon":
|
|
288
|
-
|
|
288
|
+
a = Ue(t, r, e, o);
|
|
289
289
|
break;
|
|
290
290
|
case "Circle":
|
|
291
|
-
|
|
291
|
+
a = We(t, r, e, o);
|
|
292
292
|
break;
|
|
293
293
|
case "Overlay":
|
|
294
|
-
|
|
294
|
+
a = He(t, e, o);
|
|
295
295
|
break;
|
|
296
296
|
}
|
|
297
|
-
return
|
|
297
|
+
return a;
|
|
298
298
|
}
|
|
299
299
|
function qe(e, t) {
|
|
300
300
|
Array.isArray(t) ? t.forEach((r) => {
|
|
@@ -307,14 +307,14 @@ function $e(e, t, r, o) {
|
|
|
307
307
|
dataProjection: "EPSG:4326",
|
|
308
308
|
featureProjection: "EPSG:4326"
|
|
309
309
|
// 或 'EPSG:3857',看你的地图
|
|
310
|
-
}),
|
|
311
|
-
|
|
312
|
-
const
|
|
313
|
-
source:
|
|
310
|
+
}), a = new M();
|
|
311
|
+
a.addFeatures(n);
|
|
312
|
+
const s = new E({
|
|
313
|
+
source: a,
|
|
314
314
|
style: A(e, o),
|
|
315
315
|
zIndex: o.zIndex || 10
|
|
316
316
|
});
|
|
317
|
-
return
|
|
317
|
+
return s.set("name", e), s.set("type", "webgl"), r.addLayer(s), s;
|
|
318
318
|
}
|
|
319
319
|
function De(e, t, r) {
|
|
320
320
|
const o = new j({
|
|
@@ -334,11 +334,11 @@ function Ue(e, t, r, o) {
|
|
|
334
334
|
return n.set("name", e), n.set("type", "webgl"), r.addLayer(n), n;
|
|
335
335
|
}
|
|
336
336
|
function We(e, t, r, o) {
|
|
337
|
-
const n = p(t),
|
|
337
|
+
const n = p(t), a = ke(n, o.radius, { steps: 300, units: "meters" }), s = new I().readFeature(a, {
|
|
338
338
|
dataProjection: "EPSG:4326",
|
|
339
339
|
featureProjection: "EPSG:4490"
|
|
340
340
|
}), c = new M({ wrapX: !1 });
|
|
341
|
-
c.addFeature(
|
|
341
|
+
c.addFeature(s);
|
|
342
342
|
const i = new E({
|
|
343
343
|
source: c,
|
|
344
344
|
style: A(e, o),
|
|
@@ -463,7 +463,7 @@ function ot(e, t) {
|
|
|
463
463
|
}), Ye(t);
|
|
464
464
|
}
|
|
465
465
|
let F = null;
|
|
466
|
-
function
|
|
466
|
+
function at(e, t = {}) {
|
|
467
467
|
const r = new I();
|
|
468
468
|
F = new Ee({
|
|
469
469
|
condition: ve,
|
|
@@ -513,7 +513,7 @@ function st(e, t = {}) {
|
|
|
513
513
|
}));
|
|
514
514
|
});
|
|
515
515
|
e.on("singleclick", n);
|
|
516
|
-
const
|
|
516
|
+
const a = /* @__PURE__ */ new Set();
|
|
517
517
|
F.on("select", (c) => {
|
|
518
518
|
const i = o.getArray();
|
|
519
519
|
if (i.length > 0) {
|
|
@@ -524,24 +524,24 @@ function st(e, t = {}) {
|
|
|
524
524
|
layer: m.get("wms_layer_source") || F.getLayer(m),
|
|
525
525
|
event: m.get("wms_event_source") || c
|
|
526
526
|
}));
|
|
527
|
-
|
|
527
|
+
s(l);
|
|
528
528
|
} else
|
|
529
|
-
|
|
529
|
+
s(null);
|
|
530
530
|
});
|
|
531
|
-
const
|
|
531
|
+
const s = (c) => a.forEach((i) => i(c));
|
|
532
532
|
return {
|
|
533
|
-
onSelect: (c) => (
|
|
533
|
+
onSelect: (c) => (a.add(c), () => a.delete(c)),
|
|
534
534
|
clear: () => {
|
|
535
|
-
|
|
535
|
+
a.clear(), o.clear();
|
|
536
536
|
},
|
|
537
537
|
destroy: () => {
|
|
538
|
-
e.removeInteraction(F), e.un("singleclick", n),
|
|
538
|
+
e.removeInteraction(F), e.un("singleclick", n), a.clear();
|
|
539
539
|
}
|
|
540
540
|
};
|
|
541
541
|
}
|
|
542
|
-
function
|
|
542
|
+
function st(e, t = {}) {
|
|
543
543
|
var x;
|
|
544
|
-
const r = new I(), o = (x = t.debounceTime) != null ? x : 200, n = new M(),
|
|
544
|
+
const r = new I(), o = (x = t.debounceTime) != null ? x : 200, n = new M(), a = new E({
|
|
545
545
|
source: n,
|
|
546
546
|
map: e,
|
|
547
547
|
style: t.style,
|
|
@@ -551,11 +551,11 @@ function at(e, t = {}) {
|
|
|
551
551
|
properties: { title: "JG_HOVER_LAYER" }
|
|
552
552
|
// 标记一下,防止自己拾取自己
|
|
553
553
|
});
|
|
554
|
-
let
|
|
554
|
+
let s = null, c = null;
|
|
555
555
|
const i = /* @__PURE__ */ new Set(), l = (u, w, h) => {
|
|
556
556
|
const f = u[0];
|
|
557
|
-
if (
|
|
558
|
-
if (
|
|
557
|
+
if (s !== f)
|
|
558
|
+
if (s = f, n.clear(), f ? (n.addFeature(f), t.cursor !== !1 && (e.getTargetElement().style.cursor = "pointer")) : t.cursor !== !1 && (e.getTargetElement().style.cursor = ""), f) {
|
|
559
559
|
const L = {
|
|
560
560
|
feature: f,
|
|
561
561
|
layer: w,
|
|
@@ -570,9 +570,9 @@ function at(e, t = {}) {
|
|
|
570
570
|
const w = u.pixel, h = u.coordinate;
|
|
571
571
|
let f = !1;
|
|
572
572
|
if (e.forEachFeatureAtPixel(w, (d, y) => {
|
|
573
|
-
f || y !==
|
|
573
|
+
f || y !== a && (t.layers && !t.layers.includes(y) || (f = !0, c && clearTimeout(c), l([d], y, h)));
|
|
574
574
|
}), f) return;
|
|
575
|
-
|
|
575
|
+
s && (s = null, n.clear(), e.getTargetElement().style.cursor = "", i.forEach((d) => d(null))), c && clearTimeout(c);
|
|
576
576
|
const b = (t.layers || e.getLayers().getArray()).filter((d) => {
|
|
577
577
|
const y = d.getSource();
|
|
578
578
|
return d.getVisible() && (y instanceof N || y instanceof W);
|
|
@@ -600,10 +600,10 @@ function at(e, t = {}) {
|
|
|
600
600
|
return e.on("pointermove", m), {
|
|
601
601
|
onHover: (u) => (i.add(u), () => i.delete(u)),
|
|
602
602
|
clear: () => {
|
|
603
|
-
n.clear(),
|
|
603
|
+
n.clear(), s = null;
|
|
604
604
|
},
|
|
605
605
|
destroy: () => {
|
|
606
|
-
e.un("pointermove", m), e.removeLayer(
|
|
606
|
+
e.un("pointermove", m), e.removeLayer(a), i.clear(), c && clearTimeout(c);
|
|
607
607
|
}
|
|
608
608
|
};
|
|
609
609
|
}
|
|
@@ -614,27 +614,27 @@ const St = (e, t) => {
|
|
|
614
614
|
targetId: e,
|
|
615
615
|
instance: r,
|
|
616
616
|
// 暴露原始实例以备不时之需
|
|
617
|
-
addMarker: (n,
|
|
618
|
-
createLayer: (n,
|
|
619
|
-
createBlankLayer: (n,
|
|
620
|
-
visibleLayer: (n,
|
|
617
|
+
addMarker: (n, a, s) => et(r, n, a, s),
|
|
618
|
+
createLayer: (n, a, s) => X(r, n, a, s),
|
|
619
|
+
createBlankLayer: (n, a) => Je(r, n, a),
|
|
620
|
+
visibleLayer: (n, a) => Qe(r, n, a),
|
|
621
621
|
removeLayer: (n) => qe(r, n),
|
|
622
622
|
getLonLat: (n) => p(n),
|
|
623
623
|
getLayerByName: (n) => Z(r, n),
|
|
624
624
|
getSourceByName: (n) => Q(r, n),
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
queryFeature: (n,
|
|
628
|
-
lightFeature: (n,
|
|
629
|
-
flashFeature: (n,
|
|
630
|
-
flyTo: (n,
|
|
625
|
+
createSelect: (n) => at(r, n),
|
|
626
|
+
createHover: (n) => st(r, n),
|
|
627
|
+
queryFeature: (n, a) => Oe(r, n, a),
|
|
628
|
+
lightFeature: (n, a, s, c) => J(n, a, s, c),
|
|
629
|
+
flashFeature: (n, a, s) => Re(n, a, s),
|
|
630
|
+
flyTo: (n, a) => ee(r, n, a),
|
|
631
631
|
flyToByExtent: (n) => te(r, n),
|
|
632
|
-
flyToByFeature: (n,
|
|
632
|
+
flyToByFeature: (n, a) => tt(r, n, a),
|
|
633
633
|
getProjection: () => rt(r),
|
|
634
634
|
getZoom: () => re(r),
|
|
635
635
|
setZoom: (n) => nt(r, n),
|
|
636
636
|
getMapContext: (n) => Y(n),
|
|
637
|
-
onMapReady: (n,
|
|
637
|
+
onMapReady: (n, a) => K(n, a),
|
|
638
638
|
destroyMap: () => ot(r, e)
|
|
639
639
|
};
|
|
640
640
|
return Xe(e, o), o;
|
package/dist/2d/interaction.d.ts
CHANGED
|
@@ -27,7 +27,7 @@ export interface UseHoverResult {
|
|
|
27
27
|
clear: () => void;
|
|
28
28
|
destroy: () => void;
|
|
29
29
|
}
|
|
30
|
-
export declare function
|
|
30
|
+
export declare function createSelect(map: Map, options?: SelectOptions): UseSelectResult;
|
|
31
31
|
export interface HoverOptions {
|
|
32
32
|
/** 监听图层 */
|
|
33
33
|
layers?: Layer<any, any>[];
|
|
@@ -48,7 +48,7 @@ export interface HoverEvent {
|
|
|
48
48
|
properties: any;
|
|
49
49
|
coordinate: [number, number];
|
|
50
50
|
}
|
|
51
|
-
export declare function
|
|
51
|
+
export declare function createHover(map: Map, options?: HoverOptions): {
|
|
52
52
|
onHover: (cb: (res: HoverEvent[] | null) => void) => () => boolean;
|
|
53
53
|
clear: () => void;
|
|
54
54
|
destroy: () => void;
|
package/dist/2d/types.d.ts
CHANGED
|
@@ -76,8 +76,8 @@ export interface MapContext {
|
|
|
76
76
|
lightFeature: (layerName: string, feature: FeatureLike, options: HighLightOptions, zoomFlag: boolean) => void;
|
|
77
77
|
flashFeature: (layerName: string, feature: FeatureLike & customFeature, options: FlashOptions) => void;
|
|
78
78
|
queryFeature: (layerName: string, properties: any) => FeatureLike;
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
createSelect: (options: SelectOptions) => UseSelectResult;
|
|
80
|
+
createHover: (options: HoverOptions) => UseHoverResult;
|
|
81
81
|
flyTo: (coordinate: [number, number], options: flyOptions) => Promise<boolean>;
|
|
82
82
|
flyToByExtent: (options: flyOptions) => Promise<boolean>;
|
|
83
83
|
flyToByFeature: (feature: Feature, options: flyOptions) => Promise<boolean>;
|
package/dist/3d/core.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Coordinates, flyOptions } from './types';
|
|
1
|
+
import { Coordinates, flyOptions, optionsMap } from './types';
|
|
2
2
|
import * as Cesium from 'cesium';
|
|
3
3
|
/**
|
|
4
4
|
* 创建Viewer
|
|
@@ -14,7 +14,7 @@ export declare function createViewer(el: string, options?: any): Cesium.Viewer;
|
|
|
14
14
|
* @param points 数据
|
|
15
15
|
* @returns {void}
|
|
16
16
|
*/
|
|
17
|
-
export declare function addMarker(viewer: Cesium.Viewer, layerName: string, points: any[], options:
|
|
17
|
+
export declare function addMarker(viewer: Cesium.Viewer, layerName: string, points: any[], options: optionsMap['Point']): void;
|
|
18
18
|
/**
|
|
19
19
|
* 定位
|
|
20
20
|
* @param map 地图实例
|