@phila/phila-ui-map-core 0.0.2-beta.0 → 0.0.2-beta.2
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 +34 -2
- package/dist/CyclomediaCameraIcon-BmSCqVjA.cjs +1 -0
- package/dist/CyclomediaCameraIcon-CwkfulH7.js +64 -0
- package/dist/CyclomediaRecordingsLayer-BiKyVUl2.cjs +1 -0
- package/dist/CyclomediaRecordingsLayer-CYDtmIeG.js +4 -0
- package/dist/CyclomediaViewcone-g3JvM4gs.js +100 -0
- package/dist/CyclomediaViewcone-rqNhxLvK.cjs +1 -0
- package/dist/PictometryPanel-CciUslVU.cjs +6444 -0
- package/dist/PictometryPanel-NKq_9Xss.js +187675 -0
- package/dist/{DrawTool.css → assets/phila-ui-map-core.css} +1 -1
- package/dist/components.d.ts +1008 -370
- package/dist/components.js +1 -1
- package/dist/components.mjs +40 -31
- package/dist/composables.d.ts +10 -0
- package/dist/composables.js +1 -1
- package/dist/composables.mjs +1 -1
- package/dist/index-BXLyy2C_.js +94 -0
- package/dist/index-CNj5iS7C.cjs +1 -0
- package/dist/index.d.ts +1008 -370
- package/dist/index.js +1 -1
- package/dist/index.mjs +40 -31
- package/dist/useMapControl-DRyRMqub.cjs +1 -0
- package/dist/useMapControl-JxftoDwE.js +31 -0
- package/dist/utils.d.ts +10 -0
- package/dist/utils.js +1 -1
- package/dist/utils.mjs +4 -74
- package/package.json +12 -5
- package/dist/DrawTool.vue_vue_type_style_index_0_lang-UOYuRE4c.cjs +0 -621
- package/dist/DrawTool.vue_vue_type_style_index_0_lang-wT2NMM9s.js +0 -5984
- package/dist/useMapControl-CGjWu6ME.cjs +0 -1
- package/dist/useMapControl-CmoJ03wJ.js +0 -23
package/README.md
CHANGED
|
@@ -92,12 +92,44 @@ For more complex apps with dynamic layers, custom controls, or multiple data lay
|
|
|
92
92
|
|
|
93
93
|
Most apps only need the props approach.
|
|
94
94
|
|
|
95
|
+
### Layer ordering with basemapBeforeId
|
|
96
|
+
|
|
97
|
+
When building apps with many feature layers, you may want to ensure basemap and imagery layers always stay below your feature layers, even when the basemap source changes (e.g., switching between street map and imagery). The `basemapBeforeId` prop controls this.
|
|
98
|
+
|
|
99
|
+
**The problem:** When a basemap layer's source changes, MapLibre removes and re-adds the layer. Without a `before-id`, the layer gets added to the top of the layer stack, covering your feature layers.
|
|
100
|
+
|
|
101
|
+
**The solution:** Pass the ID of one of your feature layers to `basemapBeforeId`. The basemap will always be inserted before that layer:
|
|
102
|
+
|
|
103
|
+
```vue
|
|
104
|
+
<Map basemap-before-id="parcels">
|
|
105
|
+
<FillLayer id="parcels" :source="parcelSource" :paint="fillPaint" />
|
|
106
|
+
<LineLayer id="roads" :source="roadSource" :paint="linePaint" />
|
|
107
|
+
</Map>
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
This keeps basemaps below all your feature layers, even when switching between street map and imagery.
|
|
111
|
+
|
|
112
|
+
**For apps with all-dynamic layers:** If all your feature layers can be toggled on/off and you need a stable anchor, create an empty placeholder layer:
|
|
113
|
+
|
|
114
|
+
```vue
|
|
115
|
+
<Map basemap-before-id="feature-layers-start">
|
|
116
|
+
<!-- Empty placeholder - stable anchor for basemap positioning -->
|
|
117
|
+
<CircleLayer
|
|
118
|
+
id="feature-layers-start"
|
|
119
|
+
:source="{ type: 'geojson', data: { type: 'FeatureCollection', features: [] } }"
|
|
120
|
+
:paint="{ 'circle-radius': 0 }"
|
|
121
|
+
/>
|
|
122
|
+
|
|
123
|
+
<!-- Your toggleable feature layers -->
|
|
124
|
+
<FillLayer v-if="showParcels" id="parcels" :source="parcelSource" :paint="fillPaint" />
|
|
125
|
+
<LineLayer v-if="showRoads" id="roads" :source="roadSource" :paint="linePaint" />
|
|
126
|
+
</Map>
|
|
127
|
+
```
|
|
128
|
+
|
|
95
129
|
### Typed layer components
|
|
96
130
|
|
|
97
131
|
There are separate components for each MapLibre layer type: `FillLayer`, `LineLayer`, `CircleLayer`, `SymbolLayer`, and `RasterLayer`. Each component has strongly-typed props matching the MapLibre specification for that layer type (e.g., `FillLayerProps` only accepts fill-specific paint properties). This provides better TypeScript support and clearer APIs than a single generic component.
|
|
98
132
|
|
|
99
|
-
A legacy `MapLayer` component still exists for backwards compatibility but the typed layer components are preferred.
|
|
100
|
-
|
|
101
133
|
### Map instance injection
|
|
102
134
|
|
|
103
135
|
Child components that need access to the MapLibre map instance use Vue's provide/inject. The Map component provides the instance, and child components inject it. Examples:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const A=require("vue"),C=require("./PictometryPanel-CciUslVU.cjs"),r="data:image/png;base64,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",m=A.defineComponent({__name:"CyclomediaCameraIcon",props:{position:{},yaw:{default:0},iconSize:{default:.09}},setup(t){const o=t,e=A.inject("map"),a=A.inject("isLoaded"),n=A.ref(!1);A.onMounted(async()=>{if(!(!e||!e.value)&&a){if(a.value||await new Promise(i=>{const g=A.watch(a,w=>{w&&(g(),i())})}),e.value.hasImage("cyclomedia-camera")){n.value=!0;return}try{const i=await e.value.loadImage(r);e.value.addImage("cyclomedia-camera",i.data),n.value=!0}catch{}}});const B=A.computed(()=>o.position?{type:"geojson",data:{type:"Feature",geometry:{type:"Point",coordinates:o.position},properties:{}}}:{type:"geojson",data:{type:"FeatureCollection",features:[]}}),c=A.computed(()=>({"icon-image":"cyclomedia-camera","icon-size":o.iconSize,"icon-anchor":"center","icon-rotate":o.yaw,"icon-rotation-alignment":"map","icon-allow-overlap":!0,"icon-ignore-placement":!0}));return(i,g)=>t.position&&n.value?(A.openBlock(),A.createBlock(C._sfc_main$5,{key:0,id:"cyclomedia-camera-icon",source:B.value,layout:c.value},null,8,["source","layout"])):A.createCommentVNode("",!0)}});exports.default=m;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { defineComponent as c, inject as g, ref as r, onMounted as E, watch as s, computed as B, createBlock as p, createCommentVNode as l, openBlock as S } from "vue";
|
|
2
|
+
import { e as I } from "./PictometryPanel-NKq_9Xss.js";
|
|
3
|
+
const Y = "data:image/png;base64,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", U = /* @__PURE__ */ c({
|
|
4
|
+
__name: "CyclomediaCameraIcon",
|
|
5
|
+
props: {
|
|
6
|
+
position: {},
|
|
7
|
+
yaw: { default: 0 },
|
|
8
|
+
iconSize: { default: 0.09 }
|
|
9
|
+
},
|
|
10
|
+
setup(n) {
|
|
11
|
+
const i = n, A = g("map"), o = g("isLoaded"), a = r(!1);
|
|
12
|
+
E(async () => {
|
|
13
|
+
if (!(!A || !A.value) && o) {
|
|
14
|
+
if (o.value || await new Promise((e) => {
|
|
15
|
+
const t = s(o, (m) => {
|
|
16
|
+
m && (t(), e());
|
|
17
|
+
});
|
|
18
|
+
}), A.value.hasImage("cyclomedia-camera")) {
|
|
19
|
+
a.value = !0;
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
const e = await A.value.loadImage(Y);
|
|
24
|
+
A.value.addImage("cyclomedia-camera", e.data), a.value = !0;
|
|
25
|
+
} catch {
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
const w = B(() => i.position ? {
|
|
30
|
+
type: "geojson",
|
|
31
|
+
data: {
|
|
32
|
+
type: "Feature",
|
|
33
|
+
geometry: {
|
|
34
|
+
type: "Point",
|
|
35
|
+
coordinates: i.position
|
|
36
|
+
},
|
|
37
|
+
properties: {}
|
|
38
|
+
}
|
|
39
|
+
} : {
|
|
40
|
+
type: "geojson",
|
|
41
|
+
data: {
|
|
42
|
+
type: "FeatureCollection",
|
|
43
|
+
features: []
|
|
44
|
+
}
|
|
45
|
+
}), C = B(() => ({
|
|
46
|
+
"icon-image": "cyclomedia-camera",
|
|
47
|
+
"icon-size": i.iconSize,
|
|
48
|
+
"icon-anchor": "center",
|
|
49
|
+
"icon-rotate": i.yaw,
|
|
50
|
+
"icon-rotation-alignment": "map",
|
|
51
|
+
"icon-allow-overlap": !0,
|
|
52
|
+
"icon-ignore-placement": !0
|
|
53
|
+
}));
|
|
54
|
+
return (e, t) => n.position && a.value ? (S(), p(I, {
|
|
55
|
+
key: 0,
|
|
56
|
+
id: "cyclomedia-camera-icon",
|
|
57
|
+
source: w.value,
|
|
58
|
+
layout: C.value
|
|
59
|
+
}, null, 8, ["source", "layout"])) : l("", !0);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
export {
|
|
63
|
+
U as default
|
|
64
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./PictometryPanel-CciUslVU.cjs");exports.default=e._sfc_main$15;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { defineComponent as z, inject as F, ref as _, onMounted as P, watch as C, computed as k, createBlock as S, createCommentVNode as W, openBlock as N } from "vue";
|
|
2
|
+
import { e as V } from "./PictometryPanel-NKq_9Xss.js";
|
|
3
|
+
const f = {
|
|
4
|
+
size: 100,
|
|
5
|
+
fillColor: "rgba(0, 102, 255, 0.25)",
|
|
6
|
+
strokeColor: "rgba(0, 102, 255, 0.6)",
|
|
7
|
+
strokeWidth: 1
|
|
8
|
+
};
|
|
9
|
+
function L(r) {
|
|
10
|
+
const {
|
|
11
|
+
hFov: t,
|
|
12
|
+
size: n = f.size,
|
|
13
|
+
fillColor: s = f.fillColor,
|
|
14
|
+
strokeColor: l = f.strokeColor,
|
|
15
|
+
strokeWidth: o = f.strokeWidth
|
|
16
|
+
} = r, u = Math.min(Math.max(t, 10), 170), m = 30, d = 120, a = 1 - (Math.min(Math.max(u, m), d) - m) / (d - m) * 0.6, c = (n - o * 2) * a, H = u / 2 * Math.PI / 180, g = c * Math.tan(H), h = Math.ceil(g * 2 + o * 2), v = Math.ceil(c + o * 2), p = document.createElement("canvas");
|
|
17
|
+
p.width = h, p.height = v;
|
|
18
|
+
const e = p.getContext("2d");
|
|
19
|
+
if (!e)
|
|
20
|
+
throw new Error("Failed to get canvas 2d context");
|
|
21
|
+
e.clearRect(0, 0, h, v);
|
|
22
|
+
const y = h / 2, I = v - o, w = o, M = y - g, b = y + g;
|
|
23
|
+
return e.beginPath(), e.moveTo(y, I), e.lineTo(M, w), e.lineTo(b, w), e.closePath(), e.fillStyle = s, e.fill(), e.strokeStyle = l, e.lineWidth = o, e.stroke(), e.getImageData(0, 0, h, v);
|
|
24
|
+
}
|
|
25
|
+
function x(r) {
|
|
26
|
+
return `cyclomedia-viewcone-${Math.round(r)}`;
|
|
27
|
+
}
|
|
28
|
+
const j = /* @__PURE__ */ z({
|
|
29
|
+
__name: "CyclomediaViewcone",
|
|
30
|
+
props: {
|
|
31
|
+
position: {},
|
|
32
|
+
yaw: { default: 0 },
|
|
33
|
+
hFov: { default: 80 },
|
|
34
|
+
iconSize: { default: 0.5 }
|
|
35
|
+
},
|
|
36
|
+
setup(r) {
|
|
37
|
+
const t = r, n = F("map"), s = F("isLoaded"), l = _(!1);
|
|
38
|
+
let o = null;
|
|
39
|
+
async function u(i) {
|
|
40
|
+
if (!n?.value) return;
|
|
41
|
+
const a = x(i);
|
|
42
|
+
if (n.value.hasImage(a)) {
|
|
43
|
+
o = a, l.value = !0;
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
const c = L({ hFov: i, size: 100 });
|
|
48
|
+
n.value.addImage(a, c), o = a, l.value = !0;
|
|
49
|
+
} catch {
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
P(async () => {
|
|
53
|
+
!n || !n.value || s && (s.value || await new Promise((i) => {
|
|
54
|
+
const a = C(s, (c) => {
|
|
55
|
+
c && (a(), i());
|
|
56
|
+
});
|
|
57
|
+
}), await u(t.hFov));
|
|
58
|
+
}), C(
|
|
59
|
+
() => t.hFov,
|
|
60
|
+
async (i) => {
|
|
61
|
+
!n?.value || !s?.value || await u(i);
|
|
62
|
+
}
|
|
63
|
+
);
|
|
64
|
+
const m = k(() => t.position ? {
|
|
65
|
+
type: "geojson",
|
|
66
|
+
data: {
|
|
67
|
+
type: "Feature",
|
|
68
|
+
geometry: {
|
|
69
|
+
type: "Point",
|
|
70
|
+
coordinates: t.position
|
|
71
|
+
},
|
|
72
|
+
properties: {}
|
|
73
|
+
}
|
|
74
|
+
} : {
|
|
75
|
+
type: "geojson",
|
|
76
|
+
data: {
|
|
77
|
+
type: "FeatureCollection",
|
|
78
|
+
features: []
|
|
79
|
+
}
|
|
80
|
+
}), d = k(() => ({
|
|
81
|
+
"icon-image": o || x(t.hFov),
|
|
82
|
+
"icon-size": t.iconSize,
|
|
83
|
+
"icon-anchor": "bottom",
|
|
84
|
+
"icon-rotate": t.yaw,
|
|
85
|
+
"icon-rotation-alignment": "map",
|
|
86
|
+
"icon-allow-overlap": !0,
|
|
87
|
+
"icon-ignore-placement": !0
|
|
88
|
+
}));
|
|
89
|
+
return (i, a) => r.position && l.value ? (N(), S(V, {
|
|
90
|
+
key: 0,
|
|
91
|
+
id: "cyclomedia-viewcone",
|
|
92
|
+
source: m.value,
|
|
93
|
+
layout: d.value,
|
|
94
|
+
"before-id": "cyclomedia-camera-icon"
|
|
95
|
+
}, null, 8, ["source", "layout"])) : W("", !0);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
export {
|
|
99
|
+
j as default
|
|
100
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("vue"),I=require("./PictometryPanel-CciUslVU.cjs"),g={size:100,fillColor:"rgba(0, 102, 255, 0.25)",strokeColor:"rgba(0, 102, 255, 0.6)",strokeWidth:1};function x(s){const{hFov:o,size:c=g.size,fillColor:l=g.fillColor,strokeColor:u=g.strokeColor,strokeWidth:a=g.strokeWidth}=s,d=Math.min(Math.max(o,10),170),m=30,h=120,n=1-(Math.min(Math.max(d,m),h)-m)/(h-m)*.6,r=(c-a*2)*n,b=d/2*Math.PI/180,p=r*Math.tan(b),v=Math.ceil(p*2+a*2),f=Math.ceil(r+a*2),y=document.createElement("canvas");y.width=v,y.height=f;const e=y.getContext("2d");if(!e)throw new Error("Failed to get canvas 2d context");e.clearRect(0,0,v,f);const w=v/2,k=f-a,F=a,M=w-p,H=w+p;return e.beginPath(),e.moveTo(w,k),e.lineTo(M,F),e.lineTo(H,F),e.closePath(),e.fillStyle=l,e.fill(),e.strokeStyle=u,e.lineWidth=a,e.stroke(),e.getImageData(0,0,v,f)}function C(s){return`cyclomedia-viewcone-${Math.round(s)}`}const z=t.defineComponent({__name:"CyclomediaViewcone",props:{position:{},yaw:{default:0},hFov:{default:80},iconSize:{default:.5}},setup(s){const o=s,c=t.inject("map"),l=t.inject("isLoaded"),u=t.ref(!1);let a=null;async function d(i){if(!c?.value)return;const n=C(i);if(c.value.hasImage(n)){a=n,u.value=!0;return}try{const r=x({hFov:i,size:100});c.value.addImage(n,r),a=n,u.value=!0}catch{}}t.onMounted(async()=>{!c||!c.value||l&&(l.value||await new Promise(i=>{const n=t.watch(l,r=>{r&&(n(),i())})}),await d(o.hFov))}),t.watch(()=>o.hFov,async i=>{!c?.value||!l?.value||await d(i)});const m=t.computed(()=>o.position?{type:"geojson",data:{type:"Feature",geometry:{type:"Point",coordinates:o.position},properties:{}}}:{type:"geojson",data:{type:"FeatureCollection",features:[]}}),h=t.computed(()=>({"icon-image":a||C(o.hFov),"icon-size":o.iconSize,"icon-anchor":"bottom","icon-rotate":o.yaw,"icon-rotation-alignment":"map","icon-allow-overlap":!0,"icon-ignore-placement":!0}));return(i,n)=>s.position&&u.value?(t.openBlock(),t.createBlock(I._sfc_main$5,{key:0,id:"cyclomedia-viewcone",source:m.value,layout:h.value,"before-id":"cyclomedia-camera-icon"},null,8,["source","layout"])):t.createCommentVNode("",!0)}});exports.default=z;
|