@spuermomonga/vue3-bmapgl 0.0.11 → 0.0.12

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/dist/index.js CHANGED
@@ -399,6 +399,7 @@
399
399
  zIndex: Number,
400
400
  zIndexTop: Boolean,
401
401
  tileUrlTemplate: String,
402
+ getTileUrl: Function,
402
403
  getTilesUrl: Function
403
404
  };
404
405
 
@@ -407,6 +408,8 @@
407
408
  props: tileLayerProps,
408
409
  setup(props) {
409
410
  const mapInstance = useMapInstance();
411
+ let requestQueue = [];
412
+ let batchTimer;
410
413
  let layer = null;
411
414
  const setZIndex = (zIndex) => {
412
415
  layer?.setZIndex(zIndex);
@@ -417,42 +420,117 @@
417
420
  const setZIndexTop = (zIndexTop) => {
418
421
  layer?.setTop(zIndexTop);
419
422
  };
423
+ const loadImage = (request, img) => {
424
+ const handleLoad = (image) => {
425
+ image.tileInfo = request.tileInfo;
426
+ request.cb(image, request.key);
427
+ };
428
+ const handleError = () => request.cb(null, request.key);
429
+ if (typeof img === "string" || img instanceof HTMLCanvasElement) {
430
+ const image = new Image();
431
+ image.crossOrigin = "anonymous";
432
+ image.onload = () => handleLoad(image);
433
+ image.onerror = handleError;
434
+ image.src = typeof img === "string" ? img : img.toDataURL();
435
+ } else if (img instanceof HTMLImageElement) {
436
+ handleLoad(img);
437
+ } else {
438
+ handleError();
439
+ }
440
+ };
441
+ const processBatch = () => {
442
+ if (requestQueue.length === 0) return;
443
+ const {
444
+ getTilesUrl
445
+ } = props;
446
+ const batch = [...requestQueue];
447
+ requestQueue = [];
448
+ const tiles = batch.map(({
449
+ key,
450
+ tile,
451
+ boundRange
452
+ }) => ({
453
+ key,
454
+ tile,
455
+ boundRange
456
+ }));
457
+ getTilesUrl(tiles, (values) => {
458
+ for (const value of values) {
459
+ const index = batch.findIndex((item) => item.key === value.key);
460
+ if (index !== -1) {
461
+ const tiles2 = batch[index];
462
+ loadImage(tiles2, value.img);
463
+ batch.splice(index, 1);
464
+ }
465
+ }
466
+ batch.forEach((tiles2) => {
467
+ tiles2.cb(null, tiles2.key);
468
+ });
469
+ });
470
+ };
471
+ const enqueue = (data) => {
472
+ const existing = requestQueue.find((item) => item.key === data.key);
473
+ if (existing) {
474
+ existing.cb(null, data.key);
475
+ existing.cb = data.cb;
476
+ } else {
477
+ requestQueue.push(data);
478
+ }
479
+ if (batchTimer) {
480
+ clearTimeout(batchTimer);
481
+ }
482
+ batchTimer = setTimeout(() => processBatch(), 50);
483
+ };
420
484
  const addTileLayer = () => {
421
485
  const {
486
+ getTileUrl,
422
487
  getTilesUrl
423
488
  } = props;
424
489
  if (!layer) return;
425
- if (getTilesUrl) {
490
+ if (getTileUrl) {
426
491
  mapInstance().addTileLayer(layer);
427
492
  layer.loadRasterTileData = function(tileInfo, callback) {
428
493
  const key = this.getTileKey(tileInfo);
429
- const handleImageLoad = (image) => {
430
- image.tileInfo = tileInfo;
431
- callback && callback(image, key);
432
- };
433
- const handleError = () => callback && callback(null, key);
434
- const box = BMapGL.Projection.tileToBoundRange({
494
+ const boundRange = BMapGL.Projection.tileToBoundRange({
435
495
  col: tileInfo.col,
436
496
  row: tileInfo.row,
437
497
  baseTileSize: tileInfo.baseTileSize,
438
498
  zoom: tileInfo.zoom
439
499
  });
440
- getTilesUrl({
500
+ getTileUrl({
441
501
  x: tileInfo.col,
442
502
  y: tileInfo.row,
443
503
  z: tileInfo.zoom
444
- }, box, (img) => {
445
- if (typeof img === "string" || img instanceof HTMLCanvasElement) {
446
- const image = new Image();
447
- image.crossOrigin = "anonymous";
448
- image.onload = () => handleImageLoad(image);
449
- image.onerror = handleError;
450
- image.src = typeof img === "string" ? img : img.toDataURL();
451
- } else if (img instanceof HTMLImageElement) {
452
- handleImageLoad(img);
453
- } else {
454
- handleError();
455
- }
504
+ }, boundRange, (img) => {
505
+ loadImage({
506
+ cb: callback,
507
+ boundRange,
508
+ key,
509
+ tileInfo
510
+ }, img);
511
+ });
512
+ };
513
+ } else if (getTilesUrl) {
514
+ mapInstance().addTileLayer(layer);
515
+ layer.loadRasterTileData = function(tileInfo, callback) {
516
+ const key = this.getTileKey(tileInfo);
517
+ const tile = {
518
+ x: tileInfo.col,
519
+ y: tileInfo.row,
520
+ z: tileInfo.zoom
521
+ };
522
+ const boundRange = BMapGL.Projection.tileToBoundRange({
523
+ col: tileInfo.col,
524
+ row: tileInfo.row,
525
+ baseTileSize: tileInfo.baseTileSize,
526
+ zoom: tileInfo.zoom
527
+ });
528
+ enqueue({
529
+ key,
530
+ tile,
531
+ boundRange,
532
+ cb: callback,
533
+ tileInfo
456
534
  });
457
535
  };
458
536
  } else {
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Vue3Bmapgl={},e.vue)}(this,function(e,t){"use strict";let o=!1;function a(e){return e.some(e=>!t.isVNode(e)||e.type!==Comment&&!(e.type===t.Fragment&&!a(e.children)))?e:null}function n(e,t){return t(e&&a(e())||null)}const l={ak:String,apiUrl:String,plugins:Array,mapConfig:Object},r=Symbol("b-config-provider");var i=t.defineComponent({name:"ConfigProvider",props:l,setup(e,{slots:a}){const n=t.ref("notload"),l=e.apiUrl?"_initBMap_":`_initBMap_${e.ak}`,i=e.apiUrl?`${e.apiUrl.replace(/&$/,"")}&callback=${l}`:`//api.map.baidu.com/api?type=webgl&v=1.0&ak=${e.ak}&callback=${l}`;n.value="pending",function(e){const{key:t,src:a,addCalToWindow:n=!0,timeout:l=1e4}=e;return o&&window.BMapGL?Promise.resolve():new Promise((e,r)=>{const i=document.createElement("script");i.src=a,i.type="text/javascript",i.defer=!0;const s=()=>{i.onload=null,i.onerror=null,document.body.contains(i)&&document.body.removeChild(i)},p=setTimeout(()=>{s(),r(new Error(`Script load timeout: ${a}`))},l),d=()=>{clearTimeout(p),o=!0,s(),e()};n?window[t]=d:i.onload=d,i.onerror=()=>{clearTimeout(p),s(),r(new Error(`Failed to load script: ${a}`))},document.body.appendChild(i)})}({key:l,src:i}).then(()=>{n.value="loaded"}).catch(()=>{n.value="failed"});const s=t.computed(()=>{const{mapConfig:t}=e;return t??{}});return t.provide(r,{mergedStatusRef:n,mergedMapSetRef:s}),()=>t.renderSlot(a,"default")}});const s=Symbol("b-map"),p={maxZoom:Number,minZoom:Number,heading:Number,center:Object,zoom:Number,class:String,contentClass:String,enableScrollWheelZoom:{type:Boolean,default:void 0},enableDragging:{type:Boolean,default:void 0},tilt:Number,enableTilt:{type:Boolean,default:void 0},mapType:String,enableAutoResize:{type:Boolean,default:void 0},enableTiltGestures:{type:Boolean,default:void 0},enableRotate:{type:Boolean,default:void 0},enableRotateGestures:{type:Boolean,default:void 0},displayOptions:Object,onInitd:Function};var d="map-module_b-map__29r3m",m="map-module_b-map-content__sMaJG",u="map-module_b-map-loading__qc4a8",c="map-module_b-map-failed__-w-tX";!function(e,t){void 0===t&&(t={});var o=t.insertAt;if("undefined"!=typeof document){var a=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===o&&a.firstChild?a.insertBefore(n,a.firstChild):a.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}}(".map-module_b-map-content__sMaJG,.map-module_b-map__29r3m{height:100%;overflow:hidden;position:relative;width:100%}.map-module_b-map-failed__-w-tX,.map-module_b-map-loading__qc4a8{color:#999;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}");var y=t.defineComponent({name:"Map",props:p,slots:Object,setup(e,{slots:o}){const{mergedMapSetRef:a,mergedStatusRef:l}=function(e={}){const o=t.inject(r,null);return{mergedStatusRef:o?.mergedStatusRef,mergedMapSetRef:t.computed(()=>{const{zoom:t,center:a,heading:n,minZoom:l,maxZoom:r,enableScrollWheelZoom:i,enableDragging:s,tilt:p,enableTilt:d,mapType:m,enableAutoResize:u,enableTiltGestures:c,enableRotate:y,enableRotateGestures:f,displayOptions:g}=e;return{zoom:t??o?.mergedMapSetRef.value?.zoom??14,center:a??o?.mergedMapSetRef.value?.center??[116.403901,39.915185],heading:n??o?.mergedMapSetRef.value?.heading??0,minZoom:l??o?.mergedMapSetRef.value?.minZoom??0,maxZoom:r??o?.mergedMapSetRef.value?.maxZoom??21,enableScrollWheelZoom:i??o?.mergedMapSetRef.value?.enableScrollWheelZoom??!1,enableDragging:s??o?.mergedMapSetRef.value?.enableDragging??!0,tilt:p??o?.mergedMapSetRef.value?.tilt??0,enableTilt:d??o?.mergedMapSetRef.value?.enableTilt??!1,mapType:m??o?.mergedMapSetRef.value?.mapType??"BMAP_NORMAL_MAP",enableAutoResize:u??o?.mergedMapSetRef.value?.enableAutoResize??!0,enableTiltGestures:c??o?.mergedMapSetRef.value?.enableTiltGestures??!1,enableRotate:y??o?.mergedMapSetRef.value?.enableRotate??!1,enableRotateGestures:f??o?.mergedMapSetRef.value?.enableRotateGestures??!1,displayOptions:g??o?.mergedMapSetRef.value?.displayOptions}})}}(e),i=t.ref();let p=null;const y=t.ref(!1);t.provide(s,{mapInstance:()=>p});const f=e=>{"string"==typeof e?p?.centerAndZoom(e,a.value.zoom):Array.isArray(e)?p?.centerAndZoom(new BMapGL.Point(e[0],e[1]),a.value.zoom):p?.centerAndZoom(e,a.value.zoom)},g=e=>{e?p.enableScrollWheelZoom():p.disableScrollWheelZoom()},b=e=>{p?.setDisplayOptions(e||{})},T=e=>{p?.setTilt(e??0)},v=e=>{p?.setHeading(e??0)},h=e=>{e?p.enableDragging():p.disableDragging()},S=e=>{void 0!==window[e]&&p.setMapType(window[e])},B=()=>{const{maxZoom:o,minZoom:n,enableTilt:l,mapType:r,enableAutoResize:s,enableTiltGestures:d,enableRotate:m,enableRotateGestures:u,displayOptions:c}=a.value;p=new BMapGL.Map(i.value,{maxZoom:o,minZoom:n,enableTilt:l,mapType:window[r],enableAutoResize:s,enableTiltGestures:d,enableRotate:m,enableRotateGestures:u,displayOptions:c});const{onInitd:B}=e;(()=>{const{center:e,heading:t,enableScrollWheelZoom:o,tilt:n,enableDragging:l}=a.value;v(t),f(e),g(o),T(n),h(l)})(),t.watch(()=>a.value.center,f,{deep:!0}),t.watch(()=>a.value.enableScrollWheelZoom,g),t.watch(()=>a.value.displayOptions,b),t.watch(()=>a.value.tilt,T),t.watch(()=>a.value.heading,v),t.watch(()=>a.value.enableDragging,h),t.watch(()=>a.value.mapType,S),B?.({map:p}),y.value=!0};return t.onMounted(()=>{t.watchEffect(()=>{"loaded"!==l?.value||y.value||t.nextTick(B)})}),t.onUnmounted(()=>{if(p)try{p?.destroy()}catch(e){console.error(`[Vue3 BMapGL]: ${e.message}`)}}),()=>t.createVNode("div",{class:[[d],e.class]},[t.createVNode("div",{ref:i,class:[m,e.contentClass]},["pending"===l?.value&&n(o.loading,()=>t.createVNode("div",{class:[u]},[t.createTextVNode("map loading...")])),"failed"===l?.value&&n(o.failed,()=>t.createVNode("div",{class:[c]},[t.createTextVNode("map failed")]))]),y.value&&o.default?.()])}});function f(){return t.inject(s,null).mapInstance}const g={visible:{type:Boolean,default:!0},transform:Object,png8:Boolean,height:Number,retry:{type:Boolean,default:void 0},retryTime:Number,transparentPng:{type:Boolean,default:!0},dataType:Number,spanLevel:{type:Number,default:0},tileTypeName:String,cacheSize:{type:Number,default:256},customLayer:{type:Boolean,default:void 0},clipTile:{type:Boolean,default:void 0},isTop:Boolean,opacity:{type:Number,default:1},isLowText:Boolean,boundary:Array,showRegion:String,useThumbData:Boolean,zIndex:Number,zIndexTop:Boolean,tileUrlTemplate:String,getTilesUrl:Function};var b=t.defineComponent({name:"TileLayer",props:g,setup(e){const o=f();let a=null;const n=e=>{a?.setZIndex(e)},l=e=>{e?a?.addBoundary(e):a?.clearBoundary()},r=e=>{a?.setTop(e)},i=()=>{const{getTilesUrl:t}=e;a&&(t?(o().addTileLayer(a),a.loadRasterTileData=function(e,o){const a=this.getTileKey(e),n=t=>{t.tileInfo=e,o&&o(t,a)},l=()=>o&&o(null,a),r=BMapGL.Projection.tileToBoundRange({col:e.col,row:e.row,baseTileSize:e.baseTileSize,zoom:e.zoom});t({x:e.col,y:e.row,z:e.zoom},r,e=>{if("string"==typeof e||e instanceof HTMLCanvasElement){const t=new Image;t.crossOrigin="anonymous",t.onload=()=>n(t),t.onerror=l,t.src="string"==typeof e?e:e.toDataURL()}else e instanceof HTMLImageElement?n(e):l()})}):o().addTileLayer(a))};return(()=>{const{visible:s,transform:p,png8:d,height:m,retry:u,retryTime:c,transparentPng:y,dataType:f,spanLevel:g,tileTypeName:b,cacheSize:T,customLayer:v,clipTile:h,isTop:S,opacity:B,isLowText:w,showRegion:R,useThumbData:x,tileUrlTemplate:M}=e;a=new BMapGL.TileLayer({transform:p,png8:d,height:m,retry:u,retryTime:c,transparentPng:y,dataType:f,spanLevel:g,tileTypeName:b,cacheSize:T,customLayer:v,clipTile:h,isTop:S,opacity:B,isLowText:w,showRegion:R,useThumbData:x,tileUrlTemplate:M}),(()=>{const{zIndex:t,boundary:o}=e;l(o),n(t)})(),s&&i(),t.watch(()=>e.zIndex,n),t.watch(()=>e.boundary,l),t.watch(()=>e.zIndexTop,r),t.watch(()=>e.visible,e=>e?i():o().removeTileLayer(a))})(),t.onUnmounted(()=>{a&&o().removeTileLayer(a)}),()=>t.createVNode(t.Fragment,null,null)}});const T={visible:{type:Boolean,default:!0},getTile:{type:Function},useThumbData:{type:Boolean,default:!1},xTemplate:{type:Function},yTemplate:{type:Function},zTemplate:{type:Function},bTemplate:{type:Function},minZoom:{type:Number,default:3},maxZoom:{type:Number,default:23},extent:{type:Array},extentCRSIsWGS84:{type:Boolean,default:!1},boundary:{type:Array},zIndex:{type:Number,default:1},zIndexTop:{type:Boolean,default:!1},tms:{type:Boolean,default:!1}};var v=t.defineComponent({name:"XyzLayer",props:T,setup(e){const o=f();let a=null;const n=e=>{a?.setZIndex(e)},l=e=>{e&&!e.length?a?.addBoundary(e):a?.clearBoundary()},r=()=>{const{zIndex:t,zIndexTop:o}=e;n(t),(e=>{e&&a?.setZIndexTop()})(o)};return(()=>{const{visible:i,getTile:s,xTemplate:p,yTemplate:d,zTemplate:m,bTemplate:u,minZoom:c,maxZoom:y,extent:f,extentCRSIsWGS84:g,boundary:b,useThumbData:T,tms:v}=e;a=new BMapGL.XYZLayer({xTemplate:p,yTemplate:d,zTemplate:m,bTemplate:u,minZoom:c,maxZoom:y,extent:f,extentCRSIsWGS84:g,boundary:b,useThumbData:T,tms:v}),r(),i&&(s?(o().addTileLayer(a),a.loadRasterTileData=function(e,t){const o=this.getTileKey(e),a=a=>{a.tileInfo=e,t&&t(a,o)},n=()=>t&&t(null,o),l=BMapGL.XYZProjection.getTileRangeExtent([e.zoom,e.col,e.row]);s({x:e.col,y:e.row,z:e.zoom},l,e=>{if("string"==typeof e||e instanceof HTMLCanvasElement){const t=new Image;t.crossOrigin="anonymous",t.onload=()=>a(t),t.onerror=n,t.src="string"==typeof e?e:e.toDataURL()}else e instanceof HTMLImageElement?a(e):n()})}):o().addTileLayer(a)),t.watch(()=>e.zIndex,n),t.watch(()=>e.boundary,l)})(),t.onUnmounted(()=>{a&&o().removeTileLayer(a)}),()=>t.createVNode(t.Fragment,null,null)}});const h={visible:{type:Boolean,default:!0},points:{type:Array},strokeColor:{type:String,default:"#000"},fillColor:{type:String,default:"#fff"},strokeWeight:{type:Number,default:2},strokeOpacity:{type:Number,default:1},fillOpacity:{type:Number,default:.3},strokeStyle:{type:String,default:"solid"},enableMassClear:{type:Boolean,default:!0},enableEditing:{type:Boolean,default:!1},isBoundary:{type:Boolean},enableClicking:{type:Boolean,default:!0}};var S=t.defineComponent({name:"Polygon",props:h,setup:e=>{const o=f();let a=null;const n=e=>{a&&a.setStrokeColor(e)};return(()=>{const{points:l,visible:r,strokeColor:i,fillColor:s,strokeWeight:p,strokeOpacity:d,fillOpacity:m,strokeStyle:u,enableMassClear:c,enableEditing:y,enableClicking:f}=e;l&&l.length&&(a=new BMapGL.Polygon(function(e){if(!e||0===e.length)return[];const t=e[0];return Array.isArray(t)?e.map(([e,t])=>new BMapGL.Point(e,t)):e}(l),{strokeColor:i,fillColor:s,strokeWeight:p,strokeOpacity:d,fillOpacity:m,strokeStyle:u,enableMassClear:c,enableEditing:y,enableClicking:f}),r&&o().addOverlay(a),t.watch(()=>e.strokeColor,n),t.watch(()=>e.visible,e=>{o()[e?"addOverlay":"removeOverlay"](a)}))})(),t.onUnmounted(()=>{a&&o().removeOverlay(a)}),()=>t.createVNode(t.Fragment,null,null)}}),B=t.defineComponent({name:"Sector",setup:()=>()=>t.createVNode(t.Fragment,null,null)});e.BConfigProvider=i,e.BMap=y,e.BPolygon=S,e.BSector=B,e.BTileLayer=b,e.BXyzLayer=v,e.configProviderInjectionKey=r,e.configProviderProps=l,e.create=function({componentPrefix:e="B",components:t=[]}={}){const o=[];function a(t,o,a){t.component(e+o)||t.component(e+o,a)}return{componentPrefix:e,install:function(e){o.includes(e)||(o.push(e),t.forEach(t=>{const{name:o,alias:n}=t;a(e,o,t),n&&n.forEach(o=>{a(e,o,t)})}))}}},e.mapInjectionKey=s,e.mapProps=p,e.polygonProps=h,e.tileLayerProps=g,e.xyzLayerProps=T});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Vue3Bmapgl={},e.vue)}(this,function(e,t){"use strict";let o=!1;function a(e){return e.some(e=>!t.isVNode(e)||e.type!==Comment&&!(e.type===t.Fragment&&!a(e.children)))?e:null}function n(e,t){return t(e&&a(e())||null)}const l={ak:String,apiUrl:String,plugins:Array,mapConfig:Object},r=Symbol("b-config-provider");var i=t.defineComponent({name:"ConfigProvider",props:l,setup(e,{slots:a}){const n=t.ref("notload"),l=e.apiUrl?"_initBMap_":`_initBMap_${e.ak}`,i=e.apiUrl?`${e.apiUrl.replace(/&$/,"")}&callback=${l}`:`//api.map.baidu.com/api?type=webgl&v=1.0&ak=${e.ak}&callback=${l}`;n.value="pending",function(e){const{key:t,src:a,addCalToWindow:n=!0,timeout:l=1e4}=e;return o&&window.BMapGL?Promise.resolve():new Promise((e,r)=>{const i=document.createElement("script");i.src=a,i.type="text/javascript",i.defer=!0;const s=()=>{i.onload=null,i.onerror=null,document.body.contains(i)&&document.body.removeChild(i)},p=setTimeout(()=>{s(),r(new Error(`Script load timeout: ${a}`))},l),d=()=>{clearTimeout(p),o=!0,s(),e()};n?window[t]=d:i.onload=d,i.onerror=()=>{clearTimeout(p),s(),r(new Error(`Failed to load script: ${a}`))},document.body.appendChild(i)})}({key:l,src:i}).then(()=>{n.value="loaded"}).catch(()=>{n.value="failed"});const s=t.computed(()=>{const{mapConfig:t}=e;return t??{}});return t.provide(r,{mergedStatusRef:n,mergedMapSetRef:s}),()=>t.renderSlot(a,"default")}});const s=Symbol("b-map"),p={maxZoom:Number,minZoom:Number,heading:Number,center:Object,zoom:Number,class:String,contentClass:String,enableScrollWheelZoom:{type:Boolean,default:void 0},enableDragging:{type:Boolean,default:void 0},tilt:Number,enableTilt:{type:Boolean,default:void 0},mapType:String,enableAutoResize:{type:Boolean,default:void 0},enableTiltGestures:{type:Boolean,default:void 0},enableRotate:{type:Boolean,default:void 0},enableRotateGestures:{type:Boolean,default:void 0},displayOptions:Object,onInitd:Function};var d="map-module_b-map__29r3m",m="map-module_b-map-content__sMaJG",u="map-module_b-map-loading__qc4a8",c="map-module_b-map-failed__-w-tX";!function(e,t){void 0===t&&(t={});var o=t.insertAt;if("undefined"!=typeof document){var a=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===o&&a.firstChild?a.insertBefore(n,a.firstChild):a.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}}(".map-module_b-map-content__sMaJG,.map-module_b-map__29r3m{height:100%;overflow:hidden;position:relative;width:100%}.map-module_b-map-failed__-w-tX,.map-module_b-map-loading__qc4a8{color:#999;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}");var y=t.defineComponent({name:"Map",props:p,slots:Object,setup(e,{slots:o}){const{mergedMapSetRef:a,mergedStatusRef:l}=function(e={}){const o=t.inject(r,null);return{mergedStatusRef:o?.mergedStatusRef,mergedMapSetRef:t.computed(()=>{const{zoom:t,center:a,heading:n,minZoom:l,maxZoom:r,enableScrollWheelZoom:i,enableDragging:s,tilt:p,enableTilt:d,mapType:m,enableAutoResize:u,enableTiltGestures:c,enableRotate:y,enableRotateGestures:f,displayOptions:g}=e;return{zoom:t??o?.mergedMapSetRef.value?.zoom??14,center:a??o?.mergedMapSetRef.value?.center??[116.403901,39.915185],heading:n??o?.mergedMapSetRef.value?.heading??0,minZoom:l??o?.mergedMapSetRef.value?.minZoom??0,maxZoom:r??o?.mergedMapSetRef.value?.maxZoom??21,enableScrollWheelZoom:i??o?.mergedMapSetRef.value?.enableScrollWheelZoom??!1,enableDragging:s??o?.mergedMapSetRef.value?.enableDragging??!0,tilt:p??o?.mergedMapSetRef.value?.tilt??0,enableTilt:d??o?.mergedMapSetRef.value?.enableTilt??!1,mapType:m??o?.mergedMapSetRef.value?.mapType??"BMAP_NORMAL_MAP",enableAutoResize:u??o?.mergedMapSetRef.value?.enableAutoResize??!0,enableTiltGestures:c??o?.mergedMapSetRef.value?.enableTiltGestures??!1,enableRotate:y??o?.mergedMapSetRef.value?.enableRotate??!1,enableRotateGestures:f??o?.mergedMapSetRef.value?.enableRotateGestures??!1,displayOptions:g??o?.mergedMapSetRef.value?.displayOptions}})}}(e),i=t.ref();let p=null;const y=t.ref(!1);t.provide(s,{mapInstance:()=>p});const f=e=>{"string"==typeof e?p?.centerAndZoom(e,a.value.zoom):Array.isArray(e)?p?.centerAndZoom(new BMapGL.Point(e[0],e[1]),a.value.zoom):p?.centerAndZoom(e,a.value.zoom)},g=e=>{e?p.enableScrollWheelZoom():p.disableScrollWheelZoom()},b=e=>{p?.setDisplayOptions(e||{})},T=e=>{p?.setTilt(e??0)},v=e=>{p?.setHeading(e??0)},h=e=>{e?p.enableDragging():p.disableDragging()},S=e=>{void 0!==window[e]&&p.setMapType(window[e])},R=()=>{const{maxZoom:o,minZoom:n,enableTilt:l,mapType:r,enableAutoResize:s,enableTiltGestures:d,enableRotate:m,enableRotateGestures:u,displayOptions:c}=a.value;p=new BMapGL.Map(i.value,{maxZoom:o,minZoom:n,enableTilt:l,mapType:window[r],enableAutoResize:s,enableTiltGestures:d,enableRotate:m,enableRotateGestures:u,displayOptions:c});const{onInitd:R}=e;(()=>{const{center:e,heading:t,enableScrollWheelZoom:o,tilt:n,enableDragging:l}=a.value;v(t),f(e),g(o),T(n),h(l)})(),t.watch(()=>a.value.center,f,{deep:!0}),t.watch(()=>a.value.enableScrollWheelZoom,g),t.watch(()=>a.value.displayOptions,b),t.watch(()=>a.value.tilt,T),t.watch(()=>a.value.heading,v),t.watch(()=>a.value.enableDragging,h),t.watch(()=>a.value.mapType,S),R?.({map:p}),y.value=!0};return t.onMounted(()=>{t.watchEffect(()=>{"loaded"!==l?.value||y.value||t.nextTick(R)})}),t.onUnmounted(()=>{if(p)try{p?.destroy()}catch(e){console.error(`[Vue3 BMapGL]: ${e.message}`)}}),()=>t.createVNode("div",{class:[[d],e.class]},[t.createVNode("div",{ref:i,class:[m,e.contentClass]},["pending"===l?.value&&n(o.loading,()=>t.createVNode("div",{class:[u]},[t.createTextVNode("map loading...")])),"failed"===l?.value&&n(o.failed,()=>t.createVNode("div",{class:[c]},[t.createTextVNode("map failed")]))]),y.value&&o.default?.()])}});function f(){return t.inject(s,null).mapInstance}const g={visible:{type:Boolean,default:!0},transform:Object,png8:Boolean,height:Number,retry:{type:Boolean,default:void 0},retryTime:Number,transparentPng:{type:Boolean,default:!0},dataType:Number,spanLevel:{type:Number,default:0},tileTypeName:String,cacheSize:{type:Number,default:256},customLayer:{type:Boolean,default:void 0},clipTile:{type:Boolean,default:void 0},isTop:Boolean,opacity:{type:Number,default:1},isLowText:Boolean,boundary:Array,showRegion:String,useThumbData:Boolean,zIndex:Number,zIndexTop:Boolean,tileUrlTemplate:String,getTileUrl:Function,getTilesUrl:Function};var b=t.defineComponent({name:"TileLayer",props:g,setup(e){const o=f();let a,n=[],l=null;const r=e=>{l?.setZIndex(e)},i=e=>{e?l?.addBoundary(e):l?.clearBoundary()},s=e=>{l?.setTop(e)},p=(e,t)=>{const o=t=>{t.tileInfo=e.tileInfo,e.cb(t,e.key)},a=()=>e.cb(null,e.key);if("string"==typeof t||t instanceof HTMLCanvasElement){const e=new Image;e.crossOrigin="anonymous",e.onload=()=>o(e),e.onerror=a,e.src="string"==typeof t?t:t.toDataURL()}else t instanceof HTMLImageElement?o(t):a()},d=t=>{const o=n.find(e=>e.key===t.key);o?(o.cb(null,t.key),o.cb=t.cb):n.push(t),a&&clearTimeout(a),a=setTimeout(()=>(()=>{if(0===n.length)return;const{getTilesUrl:t}=e,o=[...n];n=[];const a=o.map(({key:e,tile:t,boundRange:o})=>({key:e,tile:t,boundRange:o}));t(a,e=>{for(const t of e){const e=o.findIndex(e=>e.key===t.key);if(-1!==e){const a=o[e];p(a,t.img),o.splice(e,1)}}o.forEach(e=>{e.cb(null,e.key)})})})(),50)},m=()=>{const{getTileUrl:t,getTilesUrl:a}=e;l&&(t?(o().addTileLayer(l),l.loadRasterTileData=function(e,o){const a=this.getTileKey(e),n=BMapGL.Projection.tileToBoundRange({col:e.col,row:e.row,baseTileSize:e.baseTileSize,zoom:e.zoom});t({x:e.col,y:e.row,z:e.zoom},n,t=>{p({cb:o,boundRange:n,key:a,tileInfo:e},t)})}):a?(o().addTileLayer(l),l.loadRasterTileData=function(e,t){const o=this.getTileKey(e),a={x:e.col,y:e.row,z:e.zoom},n=BMapGL.Projection.tileToBoundRange({col:e.col,row:e.row,baseTileSize:e.baseTileSize,zoom:e.zoom});d({key:o,tile:a,boundRange:n,cb:t,tileInfo:e})}):o().addTileLayer(l))};return(()=>{const{visible:a,transform:n,png8:p,height:d,retry:u,retryTime:c,transparentPng:y,dataType:f,spanLevel:g,tileTypeName:b,cacheSize:T,customLayer:v,clipTile:h,isTop:S,opacity:R,isLowText:B,showRegion:w,useThumbData:x,tileUrlTemplate:M}=e;l=new BMapGL.TileLayer({transform:n,png8:p,height:d,retry:u,retryTime:c,transparentPng:y,dataType:f,spanLevel:g,tileTypeName:b,cacheSize:T,customLayer:v,clipTile:h,isTop:S,opacity:R,isLowText:B,showRegion:w,useThumbData:x,tileUrlTemplate:M}),(()=>{const{zIndex:t,boundary:o}=e;i(o),r(t)})(),a&&m(),t.watch(()=>e.zIndex,r),t.watch(()=>e.boundary,i),t.watch(()=>e.zIndexTop,s),t.watch(()=>e.visible,e=>e?m():o().removeTileLayer(l))})(),t.onUnmounted(()=>{l&&o().removeTileLayer(l)}),()=>t.createVNode(t.Fragment,null,null)}});const T={visible:{type:Boolean,default:!0},getTile:{type:Function},useThumbData:{type:Boolean,default:!1},xTemplate:{type:Function},yTemplate:{type:Function},zTemplate:{type:Function},bTemplate:{type:Function},minZoom:{type:Number,default:3},maxZoom:{type:Number,default:23},extent:{type:Array},extentCRSIsWGS84:{type:Boolean,default:!1},boundary:{type:Array},zIndex:{type:Number,default:1},zIndexTop:{type:Boolean,default:!1},tms:{type:Boolean,default:!1}};var v=t.defineComponent({name:"XyzLayer",props:T,setup(e){const o=f();let a=null;const n=e=>{a?.setZIndex(e)},l=e=>{e&&!e.length?a?.addBoundary(e):a?.clearBoundary()},r=()=>{const{zIndex:t,zIndexTop:o}=e;n(t),(e=>{e&&a?.setZIndexTop()})(o)};return(()=>{const{visible:i,getTile:s,xTemplate:p,yTemplate:d,zTemplate:m,bTemplate:u,minZoom:c,maxZoom:y,extent:f,extentCRSIsWGS84:g,boundary:b,useThumbData:T,tms:v}=e;a=new BMapGL.XYZLayer({xTemplate:p,yTemplate:d,zTemplate:m,bTemplate:u,minZoom:c,maxZoom:y,extent:f,extentCRSIsWGS84:g,boundary:b,useThumbData:T,tms:v}),r(),i&&(s?(o().addTileLayer(a),a.loadRasterTileData=function(e,t){const o=this.getTileKey(e),a=a=>{a.tileInfo=e,t&&t(a,o)},n=()=>t&&t(null,o),l=BMapGL.XYZProjection.getTileRangeExtent([e.zoom,e.col,e.row]);s({x:e.col,y:e.row,z:e.zoom},l,e=>{if("string"==typeof e||e instanceof HTMLCanvasElement){const t=new Image;t.crossOrigin="anonymous",t.onload=()=>a(t),t.onerror=n,t.src="string"==typeof e?e:e.toDataURL()}else e instanceof HTMLImageElement?a(e):n()})}):o().addTileLayer(a)),t.watch(()=>e.zIndex,n),t.watch(()=>e.boundary,l)})(),t.onUnmounted(()=>{a&&o().removeTileLayer(a)}),()=>t.createVNode(t.Fragment,null,null)}});const h={visible:{type:Boolean,default:!0},points:{type:Array},strokeColor:{type:String,default:"#000"},fillColor:{type:String,default:"#fff"},strokeWeight:{type:Number,default:2},strokeOpacity:{type:Number,default:1},fillOpacity:{type:Number,default:.3},strokeStyle:{type:String,default:"solid"},enableMassClear:{type:Boolean,default:!0},enableEditing:{type:Boolean,default:!1},isBoundary:{type:Boolean},enableClicking:{type:Boolean,default:!0}};var S=t.defineComponent({name:"Polygon",props:h,setup:e=>{const o=f();let a=null;const n=e=>{a&&a.setStrokeColor(e)};return(()=>{const{points:l,visible:r,strokeColor:i,fillColor:s,strokeWeight:p,strokeOpacity:d,fillOpacity:m,strokeStyle:u,enableMassClear:c,enableEditing:y,enableClicking:f}=e;l&&l.length&&(a=new BMapGL.Polygon(function(e){if(!e||0===e.length)return[];const t=e[0];return Array.isArray(t)?e.map(([e,t])=>new BMapGL.Point(e,t)):e}(l),{strokeColor:i,fillColor:s,strokeWeight:p,strokeOpacity:d,fillOpacity:m,strokeStyle:u,enableMassClear:c,enableEditing:y,enableClicking:f}),r&&o().addOverlay(a),t.watch(()=>e.strokeColor,n),t.watch(()=>e.visible,e=>{o()[e?"addOverlay":"removeOverlay"](a)}))})(),t.onUnmounted(()=>{a&&o().removeOverlay(a)}),()=>t.createVNode(t.Fragment,null,null)}}),R=t.defineComponent({name:"Sector",setup:()=>()=>t.createVNode(t.Fragment,null,null)});e.BConfigProvider=i,e.BMap=y,e.BPolygon=S,e.BSector=R,e.BTileLayer=b,e.BXyzLayer=v,e.configProviderInjectionKey=r,e.configProviderProps=l,e.create=function({componentPrefix:e="B",components:t=[]}={}){const o=[];function a(t,o,a){t.component(e+o)||t.component(e+o,a)}return{componentPrefix:e,install:function(e){o.includes(e)||(o.push(e),t.forEach(t=>{const{name:o,alias:n}=t;a(e,o,t),n&&n.forEach(o=>{a(e,o,t)})}))}}},e.mapInjectionKey=s,e.mapProps=p,e.polygonProps=h,e.tileLayerProps=g,e.xyzLayerProps=T});
@@ -1,3 +1,3 @@
1
1
  export { default as BTileLayer } from './src/tile';
2
2
  export { tileLayerProps } from './src/tile-props';
3
- export type { GetTilesUrlFn, TileLayerProps } from './src/tile-props';
3
+ export type { GetTilesUrlFn, GetTileUrlFn, TileLayerProps } from './src/tile-props';
@@ -1,10 +1,21 @@
1
1
  import type { PropType } from 'vue';
2
2
  import type { ExtractPublicPropTypes } from '../../../_utils';
3
- export type GetTilesUrlFn = (tile: {
3
+ export interface Tile {
4
4
  x: number;
5
5
  y: number;
6
6
  z: number;
7
- }, boundRange: any, cb: (image?: string | HTMLImageElement | HTMLCanvasElement) => void) => void;
7
+ }
8
+ export interface TileImg {
9
+ key: string;
10
+ img?: string | HTMLImageElement | HTMLCanvasElement;
11
+ }
12
+ export interface Tiles {
13
+ key: string;
14
+ tile: Tile;
15
+ boundRange: any;
16
+ }
17
+ export type GetTileUrlFn = (tile: Tile, boundRange: any, cb: (image?: string | HTMLImageElement | HTMLCanvasElement) => void) => void;
18
+ export type GetTilesUrlFn = (tiles: Tiles[], cb: (values: TileImg[]) => void) => void;
8
19
  export declare const tileLayerProps: {
9
20
  readonly visible: {
10
21
  readonly type: BooleanConstructor;
@@ -55,6 +66,7 @@ export declare const tileLayerProps: {
55
66
  readonly zIndex: NumberConstructor;
56
67
  readonly zIndexTop: BooleanConstructor;
57
68
  readonly tileUrlTemplate: StringConstructor;
69
+ readonly getTileUrl: PropType<GetTileUrlFn>;
58
70
  readonly getTilesUrl: PropType<GetTilesUrlFn>;
59
71
  };
60
72
  export type TileLayerProps = ExtractPublicPropTypes<typeof tileLayerProps>;
@@ -45,6 +45,7 @@ const tileLayerProps = {
45
45
  zIndex: Number,
46
46
  zIndexTop: Boolean,
47
47
  tileUrlTemplate: String,
48
+ getTileUrl: Function,
48
49
  getTilesUrl: Function
49
50
  };
50
51
 
@@ -1 +1 @@
1
- {"version":3,"file":"tile-props.mjs","sources":["../../../../src/layer/tile/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/layer/tile/src/tile-props.ts"],"sourcesContent":["import type { PropType } from 'vue'\r\nimport type { ExtractPublicPropTypes } from '../../../_utils'\r\n\r\nexport type GetTilesUrlFn = (tile: { x: number, y: number, z: number }, boundRange: any, cb: (image?: string | HTMLImageElement | HTMLCanvasElement) => void) => void\r\n\r\nexport const tileLayerProps = {\r\n visible: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n transform: Object as PropType<{ source: string, target: string }>,\r\n png8: Boolean,\r\n height: Number,\r\n retry: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n retryTime: Number,\r\n transparentPng: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n dataType: Number,\r\n spanLevel: {\r\n type: Number,\r\n default: 0,\r\n },\r\n tileTypeName: String,\r\n cacheSize: {\r\n type: Number,\r\n default: 256,\r\n },\r\n customLayer: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n clipTile: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n isTop: Boolean,\r\n opacity: {\r\n type: Number,\r\n default: 1,\r\n },\r\n isLowText: Boolean,\r\n boundary: Array as PropType<string[] | string>,\r\n showRegion: String,\r\n useThumbData: Boolean,\r\n zIndex: Number,\r\n zIndexTop: Boolean,\r\n tileUrlTemplate: String,\r\n getTilesUrl: Function as PropType<GetTilesUrlFn>,\r\n} as const\r\n\r\nexport type TileLayerProps = ExtractPublicPropTypes<typeof tileLayerProps>\r\n"],"names":[],"mappings":"AAKO,MAAM,cAAA,GAAiB;AAAA,EAC5B,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,SAAA,EAAW,MAAA;AAAA,EACX,IAAA,EAAM,OAAA;AAAA,EACN,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,SAAA,EAAW,MAAA;AAAA,EACX,cAAA,EAAgB;AAAA,IACd,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,QAAA,EAAU,MAAA;AAAA,EACV,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,YAAA,EAAc,MAAA;AAAA,EACd,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,KAAA,EAAO,OAAA;AAAA,EACP,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,SAAA,EAAW,OAAA;AAAA,EACX,QAAA,EAAU,KAAA;AAAA,EACV,UAAA,EAAY,MAAA;AAAA,EACZ,YAAA,EAAc,OAAA;AAAA,EACd,MAAA,EAAQ,MAAA;AAAA,EACR,SAAA,EAAW,OAAA;AAAA,EACX,eAAA,EAAiB,MAAA;AAAA,EACjB,WAAA,EAAa;;;;;"}
1
+ {"version":3,"file":"tile-props.mjs","sources":["../../../../src/layer/tile/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/layer/tile/src/tile-props.ts"],"sourcesContent":["import type { PropType } from 'vue'\r\nimport type { ExtractPublicPropTypes } from '../../../_utils'\r\n\r\nexport interface Tile {\r\n x: number\r\n y: number\r\n z: number\r\n}\r\n\r\nexport interface TileImg {\r\n key: string\r\n img?: string | HTMLImageElement | HTMLCanvasElement\r\n}\r\n\r\nexport interface Tiles {\r\n key: string\r\n tile: Tile\r\n boundRange: any\r\n}\r\n\r\nexport type GetTileUrlFn = (tile: Tile, boundRange: any, cb: (image?: string | HTMLImageElement | HTMLCanvasElement) => void) => void\r\nexport type GetTilesUrlFn = (tiles: Tiles[], cb: (values: TileImg[]) => void) => void\r\n\r\nexport const tileLayerProps = {\r\n visible: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n transform: Object as PropType<{ source: string, target: string }>,\r\n png8: Boolean,\r\n height: Number,\r\n retry: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n retryTime: Number,\r\n transparentPng: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n dataType: Number,\r\n spanLevel: {\r\n type: Number,\r\n default: 0,\r\n },\r\n tileTypeName: String,\r\n cacheSize: {\r\n type: Number,\r\n default: 256,\r\n },\r\n customLayer: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n clipTile: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n isTop: Boolean,\r\n opacity: {\r\n type: Number,\r\n default: 1,\r\n },\r\n isLowText: Boolean,\r\n boundary: Array as PropType<string[] | string>,\r\n showRegion: String,\r\n useThumbData: Boolean,\r\n zIndex: Number,\r\n zIndexTop: Boolean,\r\n tileUrlTemplate: String,\r\n getTileUrl: Function as PropType<GetTileUrlFn>,\r\n getTilesUrl: Function as PropType<GetTilesUrlFn>,\r\n} as const\r\n\r\nexport type TileLayerProps = ExtractPublicPropTypes<typeof tileLayerProps>\r\n"],"names":[],"mappings":"AAuBO,MAAM,cAAA,GAAiB;AAAA,EAC5B,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,SAAA,EAAW,MAAA;AAAA,EACX,IAAA,EAAM,OAAA;AAAA,EACN,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,SAAA,EAAW,MAAA;AAAA,EACX,cAAA,EAAgB;AAAA,IACd,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,QAAA,EAAU,MAAA;AAAA,EACV,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,YAAA,EAAc,MAAA;AAAA,EACd,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,KAAA,EAAO,OAAA;AAAA,EACP,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,SAAA,EAAW,OAAA;AAAA,EACX,QAAA,EAAU,KAAA;AAAA,EACV,UAAA,EAAY,MAAA;AAAA,EACZ,YAAA,EAAc,OAAA;AAAA,EACd,MAAA,EAAQ,MAAA;AAAA,EACR,SAAA,EAAW,OAAA;AAAA,EACX,eAAA,EAAiB,MAAA;AAAA,EACjB,UAAA,EAAY,QAAA;AAAA,EACZ,WAAA,EAAa;;;;;"}
@@ -48,6 +48,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
48
48
  readonly zIndex: NumberConstructor;
49
49
  readonly zIndexTop: BooleanConstructor;
50
50
  readonly tileUrlTemplate: StringConstructor;
51
+ readonly getTileUrl: import("vue").PropType<import("./tile-props").GetTileUrlFn>;
51
52
  readonly getTilesUrl: import("vue").PropType<import("./tile-props").GetTilesUrlFn>;
52
53
  }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
53
54
  readonly visible: {
@@ -99,6 +100,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
99
100
  readonly zIndex: NumberConstructor;
100
101
  readonly zIndexTop: BooleanConstructor;
101
102
  readonly tileUrlTemplate: StringConstructor;
103
+ readonly getTileUrl: import("vue").PropType<import("./tile-props").GetTileUrlFn>;
102
104
  readonly getTilesUrl: import("vue").PropType<import("./tile-props").GetTilesUrlFn>;
103
105
  }>> & Readonly<{}>, {
104
106
  readonly visible: boolean;
@@ -7,6 +7,8 @@ var tile = /* @__PURE__ */ defineComponent({
7
7
  props: tileLayerProps,
8
8
  setup(props) {
9
9
  const mapInstance = useMapInstance();
10
+ let requestQueue = [];
11
+ let batchTimer;
10
12
  let layer = null;
11
13
  const setZIndex = (zIndex) => {
12
14
  layer === null || layer === void 0 ? void 0 : layer.setZIndex(zIndex);
@@ -17,42 +19,117 @@ var tile = /* @__PURE__ */ defineComponent({
17
19
  const setZIndexTop = (zIndexTop) => {
18
20
  layer === null || layer === void 0 ? void 0 : layer.setTop(zIndexTop);
19
21
  };
22
+ const loadImage = (request, img) => {
23
+ const handleLoad = (image) => {
24
+ image.tileInfo = request.tileInfo;
25
+ request.cb(image, request.key);
26
+ };
27
+ const handleError = () => request.cb(null, request.key);
28
+ if (typeof img === "string" || img instanceof HTMLCanvasElement) {
29
+ const image = new Image();
30
+ image.crossOrigin = "anonymous";
31
+ image.onload = () => handleLoad(image);
32
+ image.onerror = handleError;
33
+ image.src = typeof img === "string" ? img : img.toDataURL();
34
+ } else if (img instanceof HTMLImageElement) {
35
+ handleLoad(img);
36
+ } else {
37
+ handleError();
38
+ }
39
+ };
40
+ const processBatch = () => {
41
+ if (requestQueue.length === 0) return;
42
+ const {
43
+ getTilesUrl
44
+ } = props;
45
+ const batch = [...requestQueue];
46
+ requestQueue = [];
47
+ const tiles = batch.map(({
48
+ key,
49
+ tile,
50
+ boundRange
51
+ }) => ({
52
+ key,
53
+ tile,
54
+ boundRange
55
+ }));
56
+ getTilesUrl(tiles, (values) => {
57
+ for (const value of values) {
58
+ const index = batch.findIndex((item) => item.key === value.key);
59
+ if (index !== -1) {
60
+ const tiles2 = batch[index];
61
+ loadImage(tiles2, value.img);
62
+ batch.splice(index, 1);
63
+ }
64
+ }
65
+ batch.forEach((tiles2) => {
66
+ tiles2.cb(null, tiles2.key);
67
+ });
68
+ });
69
+ };
70
+ const enqueue = (data) => {
71
+ const existing = requestQueue.find((item) => item.key === data.key);
72
+ if (existing) {
73
+ existing.cb(null, data.key);
74
+ existing.cb = data.cb;
75
+ } else {
76
+ requestQueue.push(data);
77
+ }
78
+ if (batchTimer) {
79
+ clearTimeout(batchTimer);
80
+ }
81
+ batchTimer = setTimeout(() => processBatch(), 50);
82
+ };
20
83
  const addTileLayer = () => {
21
84
  const {
85
+ getTileUrl,
22
86
  getTilesUrl
23
87
  } = props;
24
88
  if (!layer) return;
25
- if (getTilesUrl) {
89
+ if (getTileUrl) {
26
90
  mapInstance().addTileLayer(layer);
27
91
  layer.loadRasterTileData = function(tileInfo, callback) {
28
92
  const key = this.getTileKey(tileInfo);
29
- const handleImageLoad = (image) => {
30
- image.tileInfo = tileInfo;
31
- callback && callback(image, key);
32
- };
33
- const handleError = () => callback && callback(null, key);
34
- const box = BMapGL.Projection.tileToBoundRange({
93
+ const boundRange = BMapGL.Projection.tileToBoundRange({
35
94
  col: tileInfo.col,
36
95
  row: tileInfo.row,
37
96
  baseTileSize: tileInfo.baseTileSize,
38
97
  zoom: tileInfo.zoom
39
98
  });
40
- getTilesUrl({
99
+ getTileUrl({
41
100
  x: tileInfo.col,
42
101
  y: tileInfo.row,
43
102
  z: tileInfo.zoom
44
- }, box, (img) => {
45
- if (typeof img === "string" || img instanceof HTMLCanvasElement) {
46
- const image = new Image();
47
- image.crossOrigin = "anonymous";
48
- image.onload = () => handleImageLoad(image);
49
- image.onerror = handleError;
50
- image.src = typeof img === "string" ? img : img.toDataURL();
51
- } else if (img instanceof HTMLImageElement) {
52
- handleImageLoad(img);
53
- } else {
54
- handleError();
55
- }
103
+ }, boundRange, (img) => {
104
+ loadImage({
105
+ cb: callback,
106
+ boundRange,
107
+ key,
108
+ tileInfo
109
+ }, img);
110
+ });
111
+ };
112
+ } else if (getTilesUrl) {
113
+ mapInstance().addTileLayer(layer);
114
+ layer.loadRasterTileData = function(tileInfo, callback) {
115
+ const key = this.getTileKey(tileInfo);
116
+ const tile = {
117
+ x: tileInfo.col,
118
+ y: tileInfo.row,
119
+ z: tileInfo.zoom
120
+ };
121
+ const boundRange = BMapGL.Projection.tileToBoundRange({
122
+ col: tileInfo.col,
123
+ row: tileInfo.row,
124
+ baseTileSize: tileInfo.baseTileSize,
125
+ zoom: tileInfo.zoom
126
+ });
127
+ enqueue({
128
+ key,
129
+ tile,
130
+ boundRange,
131
+ cb: callback,
132
+ tileInfo
56
133
  });
57
134
  };
58
135
  } else {
@@ -1 +1 @@
1
- {"version":3,"file":"tile.mjs","sources":["../../../../src/layer/tile/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/layer/tile/src/tile.tsx"],"sourcesContent":["import { defineComponent, onUnmounted, watch } from 'vue'\r\nimport { useMapInstance } from '../../../_mixins'\r\nimport { tileLayerProps } from './tile-props'\r\n\r\nexport default defineComponent({\r\n name: 'TileLayer',\r\n props: tileLayerProps,\r\n setup(props) {\r\n const mapInstance = useMapInstance()\r\n\r\n let layer: BMapGL.TileLayer | null = null\r\n\r\n const setZIndex = (zIndex?: number) => {\r\n (layer as any)?.setZIndex(zIndex)\r\n }\r\n\r\n const setBoundary = (boundary?: string[] | string) => {\r\n boundary ? (layer as any)?.addBoundary(boundary) : (layer as any)?.clearBoundary()\r\n }\r\n\r\n const setZIndexTop = (zIndexTop?: boolean) => {\r\n (layer as any)?.setTop(zIndexTop)\r\n }\r\n\r\n const addTileLayer = () => {\r\n const { getTilesUrl } = props\r\n if (!layer)\r\n return\r\n if (getTilesUrl) {\r\n mapInstance().addTileLayer(layer)\r\n ;(layer as any).loadRasterTileData = function (tileInfo: any, callback: any) {\r\n const key = this.getTileKey(tileInfo)\r\n\r\n const handleImageLoad = (image: HTMLImageElement) => {\r\n (image as any).tileInfo = tileInfo\r\n callback && callback(image, key)\r\n }\r\n\r\n const handleError = () => callback && callback(null, key)\r\n\r\n const box = (BMapGL as any).Projection.tileToBoundRange({\r\n col: tileInfo.col,\r\n row: tileInfo.row,\r\n baseTileSize: tileInfo.baseTileSize,\r\n zoom: tileInfo.zoom,\r\n })\r\n\r\n getTilesUrl({ x: tileInfo.col, y: tileInfo.row, z: tileInfo.zoom }, box, (img) => {\r\n if (typeof img === 'string' || img instanceof HTMLCanvasElement) {\r\n const image = new Image()\r\n image.crossOrigin = 'anonymous'\r\n\r\n image.onload = () => handleImageLoad(image)\r\n image.onerror = handleError\r\n\r\n image.src = typeof img === 'string' ? img : img.toDataURL()\r\n } else if (img instanceof HTMLImageElement) {\r\n handleImageLoad(img)\r\n } else {\r\n handleError()\r\n }\r\n })\r\n }\r\n } else {\r\n mapInstance().addTileLayer(layer)\r\n }\r\n }\r\n\r\n const initLayerOptions = () => {\r\n const { zIndex, boundary } = props\r\n setBoundary(boundary)\r\n setZIndex(zIndex)\r\n }\r\n\r\n const startWatchProps = () => {\r\n watch(() => props.zIndex, setZIndex)\r\n watch(() => props.boundary, setBoundary)\r\n watch(() => props.zIndexTop, setZIndexTop)\r\n watch(() => props.visible, n => n ? addTileLayer() : mapInstance().removeTileLayer(layer!))\r\n }\r\n\r\n const init = () => {\r\n const { visible, transform, png8, height, retry, retryTime, transparentPng, dataType, spanLevel, tileTypeName, cacheSize, customLayer, clipTile, isTop, opacity, isLowText, showRegion, useThumbData, tileUrlTemplate } = props\r\n layer = new BMapGL.TileLayer({\r\n transform,\r\n png8,\r\n height,\r\n retry,\r\n retryTime,\r\n transparentPng,\r\n dataType,\r\n spanLevel,\r\n tileTypeName,\r\n cacheSize,\r\n customLayer,\r\n clipTile,\r\n isTop,\r\n opacity,\r\n isLowText,\r\n showRegion,\r\n useThumbData,\r\n tileUrlTemplate,\r\n } as any)\r\n initLayerOptions()\r\n visible && addTileLayer()\r\n startWatchProps()\r\n }\r\n\r\n init()\r\n\r\n onUnmounted(() => {\r\n if (layer) {\r\n mapInstance().removeTileLayer(layer)\r\n }\r\n })\r\n\r\n return () => <></>\r\n },\r\n})\r\n"],"names":["name","props","tileLayerProps","setup","mapInstance","useMapInstance","layer","setZIndex","zIndex","setBoundary","boundary","addBoundary","clearBoundary","setZIndexTop","zIndexTop","setTop","addTileLayer","getTilesUrl","loadRasterTileData","tileInfo","callback","key","getTileKey","handleImageLoad","image","handleError","box","BMapGL","Projection","tileToBoundRange","col","row","baseTileSize","zoom","x","y","z","img","HTMLCanvasElement","Image","crossOrigin","onload","onerror","src","toDataURL","HTMLImageElement","initLayerOptions","startWatchProps","watch","visible","n","removeTileLayer","init","transform","png8","height","retry","retryTime","transparentPng","dataType","spanLevel","tileTypeName","cacheSize","customLayer","clipTile","isTop","opacity","isLowText","showRegion","useThumbData","tileUrlTemplate","TileLayer","onUnmounted","_createVNode","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"tile.mjs","sources":["../../../../src/layer/tile/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/layer/tile/src/tile.tsx"],"sourcesContent":["import type { Tiles } from './tile-props'\r\nimport { defineComponent, onUnmounted, watch } from 'vue'\r\nimport { useMapInstance } from '../../../_mixins'\r\nimport { tileLayerProps } from './tile-props'\r\n\r\ninterface TileRequest extends Partial<Tiles> {\r\n cb: any\r\n tileInfo: any\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'TileLayer',\r\n props: tileLayerProps,\r\n setup(props) {\r\n const mapInstance = useMapInstance()\r\n\r\n let requestQueue: TileRequest[] = []\r\n\r\n let batchTimer: number\r\n\r\n let layer: BMapGL.TileLayer | null = null\r\n\r\n const setZIndex = (zIndex?: number) => {\r\n (layer as any)?.setZIndex(zIndex)\r\n }\r\n\r\n const setBoundary = (boundary?: string[] | string) => {\r\n boundary ? (layer as any)?.addBoundary(boundary) : (layer as any)?.clearBoundary()\r\n }\r\n\r\n const setZIndexTop = (zIndexTop?: boolean) => {\r\n (layer as any)?.setTop(zIndexTop)\r\n }\r\n\r\n const loadImage = (request: TileRequest, img?: string | HTMLImageElement | HTMLCanvasElement) => {\r\n const handleLoad = (image: HTMLImageElement) => {\r\n (image as any).tileInfo = request.tileInfo\r\n request.cb(image, request.key)\r\n }\r\n\r\n const handleError = () => request.cb(null, request.key)\r\n\r\n if (typeof img === 'string' || img instanceof HTMLCanvasElement) {\r\n const image = new Image()\r\n image.crossOrigin = 'anonymous'\r\n image.onload = () => handleLoad(image)\r\n image.onerror = handleError\r\n image.src = typeof img === 'string' ? img : img.toDataURL()\r\n } else if (img instanceof HTMLImageElement) {\r\n handleLoad(img)\r\n } else {\r\n handleError()\r\n }\r\n }\r\n\r\n const processBatch = () => {\r\n if (requestQueue.length === 0)\r\n return\r\n\r\n const { getTilesUrl } = props\r\n\r\n const batch = [...requestQueue]\r\n requestQueue = []\r\n\r\n const tiles = batch.map(({ key, tile, boundRange }) => ({ key, tile, boundRange }))\r\n getTilesUrl!(tiles as any, (values) => {\r\n for (const value of values) {\r\n const index = batch.findIndex(item => item.key === value.key)\r\n if (index !== -1) {\r\n const tiles = batch[index]\r\n loadImage(tiles, value.img)\r\n batch.splice(index, 1)\r\n }\r\n }\r\n\r\n batch.forEach((tiles) => {\r\n tiles.cb(null, tiles.key)\r\n })\r\n })\r\n }\r\n\r\n const enqueue = (data: TileRequest) => {\r\n const existing = requestQueue.find(item => item.key === data.key)\r\n if (existing) {\r\n existing.cb(null, data.key)\r\n existing.cb = data.cb\r\n } else {\r\n requestQueue.push(data)\r\n }\r\n\r\n if (batchTimer) {\r\n clearTimeout(batchTimer)\r\n }\r\n batchTimer = setTimeout(() => processBatch(), 50)\r\n }\r\n\r\n const addTileLayer = () => {\r\n const { getTileUrl, getTilesUrl } = props\r\n if (!layer)\r\n return\r\n if (getTileUrl) {\r\n mapInstance().addTileLayer(layer)\r\n ;(layer as any).loadRasterTileData = function (tileInfo: any, callback: any) {\r\n const key = this.getTileKey(tileInfo)\r\n\r\n const boundRange = (BMapGL as any).Projection.tileToBoundRange({\r\n col: tileInfo.col,\r\n row: tileInfo.row,\r\n baseTileSize: tileInfo.baseTileSize,\r\n zoom: tileInfo.zoom,\r\n })\r\n\r\n getTileUrl({ x: tileInfo.col, y: tileInfo.row, z: tileInfo.zoom }, boundRange, (img) => {\r\n loadImage({ cb: callback, boundRange, key, tileInfo }, img)\r\n })\r\n }\r\n } else if (getTilesUrl) {\r\n mapInstance().addTileLayer(layer)\r\n ;(layer as any).loadRasterTileData = function (tileInfo: any, callback: any) {\r\n const key = this.getTileKey(tileInfo)\r\n\r\n const tile = { x: tileInfo.col, y: tileInfo.row, z: tileInfo.zoom }\r\n const boundRange = (BMapGL as any).Projection.tileToBoundRange({\r\n col: tileInfo.col,\r\n row: tileInfo.row,\r\n baseTileSize: tileInfo.baseTileSize,\r\n zoom: tileInfo.zoom,\r\n })\r\n\r\n enqueue({ key, tile, boundRange, cb: callback, tileInfo })\r\n }\r\n } else {\r\n mapInstance().addTileLayer(layer)\r\n }\r\n }\r\n\r\n const initLayerOptions = () => {\r\n const { zIndex, boundary } = props\r\n setBoundary(boundary)\r\n setZIndex(zIndex)\r\n }\r\n\r\n const startWatchProps = () => {\r\n watch(() => props.zIndex, setZIndex)\r\n watch(() => props.boundary, setBoundary)\r\n watch(() => props.zIndexTop, setZIndexTop)\r\n watch(() => props.visible, n => n ? addTileLayer() : mapInstance().removeTileLayer(layer!))\r\n }\r\n\r\n const init = () => {\r\n const { visible, transform, png8, height, retry, retryTime, transparentPng, dataType, spanLevel, tileTypeName, cacheSize, customLayer, clipTile, isTop, opacity, isLowText, showRegion, useThumbData, tileUrlTemplate } = props\r\n layer = new BMapGL.TileLayer({\r\n transform,\r\n png8,\r\n height,\r\n retry,\r\n retryTime,\r\n transparentPng,\r\n dataType,\r\n spanLevel,\r\n tileTypeName,\r\n cacheSize,\r\n customLayer,\r\n clipTile,\r\n isTop,\r\n opacity,\r\n isLowText,\r\n showRegion,\r\n useThumbData,\r\n tileUrlTemplate,\r\n } as any)\r\n initLayerOptions()\r\n visible && addTileLayer()\r\n startWatchProps()\r\n }\r\n\r\n init()\r\n\r\n onUnmounted(() => {\r\n if (layer) {\r\n mapInstance().removeTileLayer(layer)\r\n }\r\n })\r\n\r\n return () => <></>\r\n },\r\n})\r\n"],"names":["name","props","tileLayerProps","setup","mapInstance","useMapInstance","requestQueue","batchTimer","layer","setZIndex","zIndex","setBoundary","boundary","addBoundary","clearBoundary","setZIndexTop","zIndexTop","setTop","loadImage","request","img","handleLoad","image","tileInfo","cb","key","handleError","HTMLCanvasElement","Image","crossOrigin","onload","onerror","src","toDataURL","HTMLImageElement","processBatch","length","getTilesUrl","batch","tiles","map","tile","boundRange","values","value","index","findIndex","item","splice","forEach","enqueue","data","existing","find","push","clearTimeout","setTimeout","addTileLayer","getTileUrl","loadRasterTileData","callback","getTileKey","BMapGL","Projection","tileToBoundRange","col","row","baseTileSize","zoom","x","y","z","initLayerOptions","startWatchProps","watch","visible","n","removeTileLayer","init","transform","png8","height","retry","retryTime","transparentPng","dataType","spanLevel","tileTypeName","cacheSize","customLayer","clipTile","isTop","opacity","isLowText","showRegion","useThumbData","tileUrlTemplate","TileLayer","onUnmounted","_createVNode","_Fragment"],"mappings":"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"}
@@ -107,12 +107,12 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
107
107
  readonly default: false;
108
108
  };
109
109
  }>> & Readonly<{}>, {
110
- readonly minZoom: number;
111
- readonly maxZoom: number;
112
110
  readonly visible: boolean;
113
111
  readonly useThumbData: boolean;
114
112
  readonly zIndex: number;
115
113
  readonly zIndexTop: boolean;
114
+ readonly minZoom: number;
115
+ readonly maxZoom: number;
116
116
  readonly extentCRSIsWGS84: boolean;
117
117
  readonly tms: boolean;
118
118
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -1,3 +1,3 @@
1
1
  export { default as BTileLayer } from './src/tile';
2
2
  export { tileLayerProps } from './src/tile-props';
3
- export type { GetTilesUrlFn, TileLayerProps } from './src/tile-props';
3
+ export type { GetTilesUrlFn, GetTileUrlFn, TileLayerProps } from './src/tile-props';
@@ -1,10 +1,21 @@
1
1
  import type { PropType } from 'vue';
2
2
  import type { ExtractPublicPropTypes } from '../../../_utils';
3
- export type GetTilesUrlFn = (tile: {
3
+ export interface Tile {
4
4
  x: number;
5
5
  y: number;
6
6
  z: number;
7
- }, boundRange: any, cb: (image?: string | HTMLImageElement | HTMLCanvasElement) => void) => void;
7
+ }
8
+ export interface TileImg {
9
+ key: string;
10
+ img?: string | HTMLImageElement | HTMLCanvasElement;
11
+ }
12
+ export interface Tiles {
13
+ key: string;
14
+ tile: Tile;
15
+ boundRange: any;
16
+ }
17
+ export type GetTileUrlFn = (tile: Tile, boundRange: any, cb: (image?: string | HTMLImageElement | HTMLCanvasElement) => void) => void;
18
+ export type GetTilesUrlFn = (tiles: Tiles[], cb: (values: TileImg[]) => void) => void;
8
19
  export declare const tileLayerProps: {
9
20
  readonly visible: {
10
21
  readonly type: BooleanConstructor;
@@ -55,6 +66,7 @@ export declare const tileLayerProps: {
55
66
  readonly zIndex: NumberConstructor;
56
67
  readonly zIndexTop: BooleanConstructor;
57
68
  readonly tileUrlTemplate: StringConstructor;
69
+ readonly getTileUrl: PropType<GetTileUrlFn>;
58
70
  readonly getTilesUrl: PropType<GetTilesUrlFn>;
59
71
  };
60
72
  export type TileLayerProps = ExtractPublicPropTypes<typeof tileLayerProps>;
@@ -47,6 +47,7 @@ const tileLayerProps = {
47
47
  zIndex: Number,
48
48
  zIndexTop: Boolean,
49
49
  tileUrlTemplate: String,
50
+ getTileUrl: Function,
50
51
  getTilesUrl: Function
51
52
  };
52
53
 
@@ -1 +1 @@
1
- {"version":3,"file":"tile-props.js","sources":["../../../../src/layer/tile/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/layer/tile/src/tile-props.ts"],"sourcesContent":["import type { PropType } from 'vue'\r\nimport type { ExtractPublicPropTypes } from '../../../_utils'\r\n\r\nexport type GetTilesUrlFn = (tile: { x: number, y: number, z: number }, boundRange: any, cb: (image?: string | HTMLImageElement | HTMLCanvasElement) => void) => void\r\n\r\nexport const tileLayerProps = {\r\n visible: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n transform: Object as PropType<{ source: string, target: string }>,\r\n png8: Boolean,\r\n height: Number,\r\n retry: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n retryTime: Number,\r\n transparentPng: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n dataType: Number,\r\n spanLevel: {\r\n type: Number,\r\n default: 0,\r\n },\r\n tileTypeName: String,\r\n cacheSize: {\r\n type: Number,\r\n default: 256,\r\n },\r\n customLayer: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n clipTile: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n isTop: Boolean,\r\n opacity: {\r\n type: Number,\r\n default: 1,\r\n },\r\n isLowText: Boolean,\r\n boundary: Array as PropType<string[] | string>,\r\n showRegion: String,\r\n useThumbData: Boolean,\r\n zIndex: Number,\r\n zIndexTop: Boolean,\r\n tileUrlTemplate: String,\r\n getTilesUrl: Function as PropType<GetTilesUrlFn>,\r\n} as const\r\n\r\nexport type TileLayerProps = ExtractPublicPropTypes<typeof tileLayerProps>\r\n"],"names":[],"mappings":";;AAKO,MAAM,cAAA,GAAiB;AAAA,EAC5B,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,SAAA,EAAW,MAAA;AAAA,EACX,IAAA,EAAM,OAAA;AAAA,EACN,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,SAAA,EAAW,MAAA;AAAA,EACX,cAAA,EAAgB;AAAA,IACd,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,QAAA,EAAU,MAAA;AAAA,EACV,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,YAAA,EAAc,MAAA;AAAA,EACd,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,KAAA,EAAO,OAAA;AAAA,EACP,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,SAAA,EAAW,OAAA;AAAA,EACX,QAAA,EAAU,KAAA;AAAA,EACV,UAAA,EAAY,MAAA;AAAA,EACZ,YAAA,EAAc,OAAA;AAAA,EACd,MAAA,EAAQ,MAAA;AAAA,EACR,SAAA,EAAW,OAAA;AAAA,EACX,eAAA,EAAiB,MAAA;AAAA,EACjB,WAAA,EAAa;;;;;"}
1
+ {"version":3,"file":"tile-props.js","sources":["../../../../src/layer/tile/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/layer/tile/src/tile-props.ts"],"sourcesContent":["import type { PropType } from 'vue'\r\nimport type { ExtractPublicPropTypes } from '../../../_utils'\r\n\r\nexport interface Tile {\r\n x: number\r\n y: number\r\n z: number\r\n}\r\n\r\nexport interface TileImg {\r\n key: string\r\n img?: string | HTMLImageElement | HTMLCanvasElement\r\n}\r\n\r\nexport interface Tiles {\r\n key: string\r\n tile: Tile\r\n boundRange: any\r\n}\r\n\r\nexport type GetTileUrlFn = (tile: Tile, boundRange: any, cb: (image?: string | HTMLImageElement | HTMLCanvasElement) => void) => void\r\nexport type GetTilesUrlFn = (tiles: Tiles[], cb: (values: TileImg[]) => void) => void\r\n\r\nexport const tileLayerProps = {\r\n visible: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n transform: Object as PropType<{ source: string, target: string }>,\r\n png8: Boolean,\r\n height: Number,\r\n retry: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n retryTime: Number,\r\n transparentPng: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n dataType: Number,\r\n spanLevel: {\r\n type: Number,\r\n default: 0,\r\n },\r\n tileTypeName: String,\r\n cacheSize: {\r\n type: Number,\r\n default: 256,\r\n },\r\n customLayer: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n clipTile: {\r\n type: Boolean,\r\n default: undefined,\r\n },\r\n isTop: Boolean,\r\n opacity: {\r\n type: Number,\r\n default: 1,\r\n },\r\n isLowText: Boolean,\r\n boundary: Array as PropType<string[] | string>,\r\n showRegion: String,\r\n useThumbData: Boolean,\r\n zIndex: Number,\r\n zIndexTop: Boolean,\r\n tileUrlTemplate: String,\r\n getTileUrl: Function as PropType<GetTileUrlFn>,\r\n getTilesUrl: Function as PropType<GetTilesUrlFn>,\r\n} as const\r\n\r\nexport type TileLayerProps = ExtractPublicPropTypes<typeof tileLayerProps>\r\n"],"names":[],"mappings":";;AAuBO,MAAM,cAAA,GAAiB;AAAA,EAC5B,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,SAAA,EAAW,MAAA;AAAA,EACX,IAAA,EAAM,OAAA;AAAA,EACN,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,SAAA,EAAW,MAAA;AAAA,EACX,cAAA,EAAgB;AAAA,IACd,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,QAAA,EAAU,MAAA;AAAA,EACV,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,YAAA,EAAc,MAAA;AAAA,EACd,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,KAAA,EAAO,OAAA;AAAA,EACP,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,MAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV;AAAA,EACD,SAAA,EAAW,OAAA;AAAA,EACX,QAAA,EAAU,KAAA;AAAA,EACV,UAAA,EAAY,MAAA;AAAA,EACZ,YAAA,EAAc,OAAA;AAAA,EACd,MAAA,EAAQ,MAAA;AAAA,EACR,SAAA,EAAW,OAAA;AAAA,EACX,eAAA,EAAiB,MAAA;AAAA,EACjB,UAAA,EAAY,QAAA;AAAA,EACZ,WAAA,EAAa;;;;;"}
@@ -48,6 +48,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
48
48
  readonly zIndex: NumberConstructor;
49
49
  readonly zIndexTop: BooleanConstructor;
50
50
  readonly tileUrlTemplate: StringConstructor;
51
+ readonly getTileUrl: import("vue").PropType<import("./tile-props").GetTileUrlFn>;
51
52
  readonly getTilesUrl: import("vue").PropType<import("./tile-props").GetTilesUrlFn>;
52
53
  }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
53
54
  readonly visible: {
@@ -99,6 +100,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
99
100
  readonly zIndex: NumberConstructor;
100
101
  readonly zIndexTop: BooleanConstructor;
101
102
  readonly tileUrlTemplate: StringConstructor;
103
+ readonly getTileUrl: import("vue").PropType<import("./tile-props").GetTileUrlFn>;
102
104
  readonly getTilesUrl: import("vue").PropType<import("./tile-props").GetTilesUrlFn>;
103
105
  }>> & Readonly<{}>, {
104
106
  readonly visible: boolean;
@@ -9,6 +9,8 @@ var tile = /* @__PURE__ */ vue.defineComponent({
9
9
  props: tileProps.tileLayerProps,
10
10
  setup(props) {
11
11
  const mapInstance = useMapInstance();
12
+ let requestQueue = [];
13
+ let batchTimer;
12
14
  let layer = null;
13
15
  const setZIndex = (zIndex) => {
14
16
  layer === null || layer === void 0 ? void 0 : layer.setZIndex(zIndex);
@@ -19,42 +21,117 @@ var tile = /* @__PURE__ */ vue.defineComponent({
19
21
  const setZIndexTop = (zIndexTop) => {
20
22
  layer === null || layer === void 0 ? void 0 : layer.setTop(zIndexTop);
21
23
  };
24
+ const loadImage = (request, img) => {
25
+ const handleLoad = (image) => {
26
+ image.tileInfo = request.tileInfo;
27
+ request.cb(image, request.key);
28
+ };
29
+ const handleError = () => request.cb(null, request.key);
30
+ if (typeof img === "string" || img instanceof HTMLCanvasElement) {
31
+ const image = new Image();
32
+ image.crossOrigin = "anonymous";
33
+ image.onload = () => handleLoad(image);
34
+ image.onerror = handleError;
35
+ image.src = typeof img === "string" ? img : img.toDataURL();
36
+ } else if (img instanceof HTMLImageElement) {
37
+ handleLoad(img);
38
+ } else {
39
+ handleError();
40
+ }
41
+ };
42
+ const processBatch = () => {
43
+ if (requestQueue.length === 0) return;
44
+ const {
45
+ getTilesUrl
46
+ } = props;
47
+ const batch = [...requestQueue];
48
+ requestQueue = [];
49
+ const tiles = batch.map(({
50
+ key,
51
+ tile,
52
+ boundRange
53
+ }) => ({
54
+ key,
55
+ tile,
56
+ boundRange
57
+ }));
58
+ getTilesUrl(tiles, (values) => {
59
+ for (const value of values) {
60
+ const index = batch.findIndex((item) => item.key === value.key);
61
+ if (index !== -1) {
62
+ const tiles2 = batch[index];
63
+ loadImage(tiles2, value.img);
64
+ batch.splice(index, 1);
65
+ }
66
+ }
67
+ batch.forEach((tiles2) => {
68
+ tiles2.cb(null, tiles2.key);
69
+ });
70
+ });
71
+ };
72
+ const enqueue = (data) => {
73
+ const existing = requestQueue.find((item) => item.key === data.key);
74
+ if (existing) {
75
+ existing.cb(null, data.key);
76
+ existing.cb = data.cb;
77
+ } else {
78
+ requestQueue.push(data);
79
+ }
80
+ if (batchTimer) {
81
+ clearTimeout(batchTimer);
82
+ }
83
+ batchTimer = setTimeout(() => processBatch(), 50);
84
+ };
22
85
  const addTileLayer = () => {
23
86
  const {
87
+ getTileUrl,
24
88
  getTilesUrl
25
89
  } = props;
26
90
  if (!layer) return;
27
- if (getTilesUrl) {
91
+ if (getTileUrl) {
28
92
  mapInstance().addTileLayer(layer);
29
93
  layer.loadRasterTileData = function(tileInfo, callback) {
30
94
  const key = this.getTileKey(tileInfo);
31
- const handleImageLoad = (image) => {
32
- image.tileInfo = tileInfo;
33
- callback && callback(image, key);
34
- };
35
- const handleError = () => callback && callback(null, key);
36
- const box = BMapGL.Projection.tileToBoundRange({
95
+ const boundRange = BMapGL.Projection.tileToBoundRange({
37
96
  col: tileInfo.col,
38
97
  row: tileInfo.row,
39
98
  baseTileSize: tileInfo.baseTileSize,
40
99
  zoom: tileInfo.zoom
41
100
  });
42
- getTilesUrl({
101
+ getTileUrl({
43
102
  x: tileInfo.col,
44
103
  y: tileInfo.row,
45
104
  z: tileInfo.zoom
46
- }, box, (img) => {
47
- if (typeof img === "string" || img instanceof HTMLCanvasElement) {
48
- const image = new Image();
49
- image.crossOrigin = "anonymous";
50
- image.onload = () => handleImageLoad(image);
51
- image.onerror = handleError;
52
- image.src = typeof img === "string" ? img : img.toDataURL();
53
- } else if (img instanceof HTMLImageElement) {
54
- handleImageLoad(img);
55
- } else {
56
- handleError();
57
- }
105
+ }, boundRange, (img) => {
106
+ loadImage({
107
+ cb: callback,
108
+ boundRange,
109
+ key,
110
+ tileInfo
111
+ }, img);
112
+ });
113
+ };
114
+ } else if (getTilesUrl) {
115
+ mapInstance().addTileLayer(layer);
116
+ layer.loadRasterTileData = function(tileInfo, callback) {
117
+ const key = this.getTileKey(tileInfo);
118
+ const tile = {
119
+ x: tileInfo.col,
120
+ y: tileInfo.row,
121
+ z: tileInfo.zoom
122
+ };
123
+ const boundRange = BMapGL.Projection.tileToBoundRange({
124
+ col: tileInfo.col,
125
+ row: tileInfo.row,
126
+ baseTileSize: tileInfo.baseTileSize,
127
+ zoom: tileInfo.zoom
128
+ });
129
+ enqueue({
130
+ key,
131
+ tile,
132
+ boundRange,
133
+ cb: callback,
134
+ tileInfo
58
135
  });
59
136
  };
60
137
  } else {
@@ -1 +1 @@
1
- {"version":3,"file":"tile.js","sources":["../../../../src/layer/tile/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/layer/tile/src/tile.tsx"],"sourcesContent":["import { defineComponent, onUnmounted, watch } from 'vue'\r\nimport { useMapInstance } from '../../../_mixins'\r\nimport { tileLayerProps } from './tile-props'\r\n\r\nexport default defineComponent({\r\n name: 'TileLayer',\r\n props: tileLayerProps,\r\n setup(props) {\r\n const mapInstance = useMapInstance()\r\n\r\n let layer: BMapGL.TileLayer | null = null\r\n\r\n const setZIndex = (zIndex?: number) => {\r\n (layer as any)?.setZIndex(zIndex)\r\n }\r\n\r\n const setBoundary = (boundary?: string[] | string) => {\r\n boundary ? (layer as any)?.addBoundary(boundary) : (layer as any)?.clearBoundary()\r\n }\r\n\r\n const setZIndexTop = (zIndexTop?: boolean) => {\r\n (layer as any)?.setTop(zIndexTop)\r\n }\r\n\r\n const addTileLayer = () => {\r\n const { getTilesUrl } = props\r\n if (!layer)\r\n return\r\n if (getTilesUrl) {\r\n mapInstance().addTileLayer(layer)\r\n ;(layer as any).loadRasterTileData = function (tileInfo: any, callback: any) {\r\n const key = this.getTileKey(tileInfo)\r\n\r\n const handleImageLoad = (image: HTMLImageElement) => {\r\n (image as any).tileInfo = tileInfo\r\n callback && callback(image, key)\r\n }\r\n\r\n const handleError = () => callback && callback(null, key)\r\n\r\n const box = (BMapGL as any).Projection.tileToBoundRange({\r\n col: tileInfo.col,\r\n row: tileInfo.row,\r\n baseTileSize: tileInfo.baseTileSize,\r\n zoom: tileInfo.zoom,\r\n })\r\n\r\n getTilesUrl({ x: tileInfo.col, y: tileInfo.row, z: tileInfo.zoom }, box, (img) => {\r\n if (typeof img === 'string' || img instanceof HTMLCanvasElement) {\r\n const image = new Image()\r\n image.crossOrigin = 'anonymous'\r\n\r\n image.onload = () => handleImageLoad(image)\r\n image.onerror = handleError\r\n\r\n image.src = typeof img === 'string' ? img : img.toDataURL()\r\n } else if (img instanceof HTMLImageElement) {\r\n handleImageLoad(img)\r\n } else {\r\n handleError()\r\n }\r\n })\r\n }\r\n } else {\r\n mapInstance().addTileLayer(layer)\r\n }\r\n }\r\n\r\n const initLayerOptions = () => {\r\n const { zIndex, boundary } = props\r\n setBoundary(boundary)\r\n setZIndex(zIndex)\r\n }\r\n\r\n const startWatchProps = () => {\r\n watch(() => props.zIndex, setZIndex)\r\n watch(() => props.boundary, setBoundary)\r\n watch(() => props.zIndexTop, setZIndexTop)\r\n watch(() => props.visible, n => n ? addTileLayer() : mapInstance().removeTileLayer(layer!))\r\n }\r\n\r\n const init = () => {\r\n const { visible, transform, png8, height, retry, retryTime, transparentPng, dataType, spanLevel, tileTypeName, cacheSize, customLayer, clipTile, isTop, opacity, isLowText, showRegion, useThumbData, tileUrlTemplate } = props\r\n layer = new BMapGL.TileLayer({\r\n transform,\r\n png8,\r\n height,\r\n retry,\r\n retryTime,\r\n transparentPng,\r\n dataType,\r\n spanLevel,\r\n tileTypeName,\r\n cacheSize,\r\n customLayer,\r\n clipTile,\r\n isTop,\r\n opacity,\r\n isLowText,\r\n showRegion,\r\n useThumbData,\r\n tileUrlTemplate,\r\n } as any)\r\n initLayerOptions()\r\n visible && addTileLayer()\r\n startWatchProps()\r\n }\r\n\r\n init()\r\n\r\n onUnmounted(() => {\r\n if (layer) {\r\n mapInstance().removeTileLayer(layer)\r\n }\r\n })\r\n\r\n return () => <></>\r\n },\r\n})\r\n"],"names":["name","props","tileLayerProps","setup","mapInstance","useMapInstance","layer","setZIndex","zIndex","setBoundary","boundary","addBoundary","clearBoundary","setZIndexTop","zIndexTop","setTop","addTileLayer","getTilesUrl","loadRasterTileData","tileInfo","callback","key","getTileKey","handleImageLoad","image","handleError","box","BMapGL","Projection","tileToBoundRange","col","row","baseTileSize","zoom","x","y","z","img","HTMLCanvasElement","Image","crossOrigin","onload","onerror","src","toDataURL","HTMLImageElement","initLayerOptions","startWatchProps","watch","visible","n","removeTileLayer","init","transform","png8","height","retry","retryTime","transparentPng","dataType","spanLevel","tileTypeName","cacheSize","customLayer","clipTile","isTop","opacity","isLowText","showRegion","useThumbData","tileUrlTemplate","TileLayer","onUnmounted","_createVNode","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"tile.js","sources":["../../../../src/layer/tile/src/file:/D:/workspaces/personal-project/vue3-bmapgl/packages/vue3-bmapgl/src/layer/tile/src/tile.tsx"],"sourcesContent":["import type { Tiles } from './tile-props'\r\nimport { defineComponent, onUnmounted, watch } from 'vue'\r\nimport { useMapInstance } from '../../../_mixins'\r\nimport { tileLayerProps } from './tile-props'\r\n\r\ninterface TileRequest extends Partial<Tiles> {\r\n cb: any\r\n tileInfo: any\r\n}\r\n\r\nexport default defineComponent({\r\n name: 'TileLayer',\r\n props: tileLayerProps,\r\n setup(props) {\r\n const mapInstance = useMapInstance()\r\n\r\n let requestQueue: TileRequest[] = []\r\n\r\n let batchTimer: number\r\n\r\n let layer: BMapGL.TileLayer | null = null\r\n\r\n const setZIndex = (zIndex?: number) => {\r\n (layer as any)?.setZIndex(zIndex)\r\n }\r\n\r\n const setBoundary = (boundary?: string[] | string) => {\r\n boundary ? (layer as any)?.addBoundary(boundary) : (layer as any)?.clearBoundary()\r\n }\r\n\r\n const setZIndexTop = (zIndexTop?: boolean) => {\r\n (layer as any)?.setTop(zIndexTop)\r\n }\r\n\r\n const loadImage = (request: TileRequest, img?: string | HTMLImageElement | HTMLCanvasElement) => {\r\n const handleLoad = (image: HTMLImageElement) => {\r\n (image as any).tileInfo = request.tileInfo\r\n request.cb(image, request.key)\r\n }\r\n\r\n const handleError = () => request.cb(null, request.key)\r\n\r\n if (typeof img === 'string' || img instanceof HTMLCanvasElement) {\r\n const image = new Image()\r\n image.crossOrigin = 'anonymous'\r\n image.onload = () => handleLoad(image)\r\n image.onerror = handleError\r\n image.src = typeof img === 'string' ? img : img.toDataURL()\r\n } else if (img instanceof HTMLImageElement) {\r\n handleLoad(img)\r\n } else {\r\n handleError()\r\n }\r\n }\r\n\r\n const processBatch = () => {\r\n if (requestQueue.length === 0)\r\n return\r\n\r\n const { getTilesUrl } = props\r\n\r\n const batch = [...requestQueue]\r\n requestQueue = []\r\n\r\n const tiles = batch.map(({ key, tile, boundRange }) => ({ key, tile, boundRange }))\r\n getTilesUrl!(tiles as any, (values) => {\r\n for (const value of values) {\r\n const index = batch.findIndex(item => item.key === value.key)\r\n if (index !== -1) {\r\n const tiles = batch[index]\r\n loadImage(tiles, value.img)\r\n batch.splice(index, 1)\r\n }\r\n }\r\n\r\n batch.forEach((tiles) => {\r\n tiles.cb(null, tiles.key)\r\n })\r\n })\r\n }\r\n\r\n const enqueue = (data: TileRequest) => {\r\n const existing = requestQueue.find(item => item.key === data.key)\r\n if (existing) {\r\n existing.cb(null, data.key)\r\n existing.cb = data.cb\r\n } else {\r\n requestQueue.push(data)\r\n }\r\n\r\n if (batchTimer) {\r\n clearTimeout(batchTimer)\r\n }\r\n batchTimer = setTimeout(() => processBatch(), 50)\r\n }\r\n\r\n const addTileLayer = () => {\r\n const { getTileUrl, getTilesUrl } = props\r\n if (!layer)\r\n return\r\n if (getTileUrl) {\r\n mapInstance().addTileLayer(layer)\r\n ;(layer as any).loadRasterTileData = function (tileInfo: any, callback: any) {\r\n const key = this.getTileKey(tileInfo)\r\n\r\n const boundRange = (BMapGL as any).Projection.tileToBoundRange({\r\n col: tileInfo.col,\r\n row: tileInfo.row,\r\n baseTileSize: tileInfo.baseTileSize,\r\n zoom: tileInfo.zoom,\r\n })\r\n\r\n getTileUrl({ x: tileInfo.col, y: tileInfo.row, z: tileInfo.zoom }, boundRange, (img) => {\r\n loadImage({ cb: callback, boundRange, key, tileInfo }, img)\r\n })\r\n }\r\n } else if (getTilesUrl) {\r\n mapInstance().addTileLayer(layer)\r\n ;(layer as any).loadRasterTileData = function (tileInfo: any, callback: any) {\r\n const key = this.getTileKey(tileInfo)\r\n\r\n const tile = { x: tileInfo.col, y: tileInfo.row, z: tileInfo.zoom }\r\n const boundRange = (BMapGL as any).Projection.tileToBoundRange({\r\n col: tileInfo.col,\r\n row: tileInfo.row,\r\n baseTileSize: tileInfo.baseTileSize,\r\n zoom: tileInfo.zoom,\r\n })\r\n\r\n enqueue({ key, tile, boundRange, cb: callback, tileInfo })\r\n }\r\n } else {\r\n mapInstance().addTileLayer(layer)\r\n }\r\n }\r\n\r\n const initLayerOptions = () => {\r\n const { zIndex, boundary } = props\r\n setBoundary(boundary)\r\n setZIndex(zIndex)\r\n }\r\n\r\n const startWatchProps = () => {\r\n watch(() => props.zIndex, setZIndex)\r\n watch(() => props.boundary, setBoundary)\r\n watch(() => props.zIndexTop, setZIndexTop)\r\n watch(() => props.visible, n => n ? addTileLayer() : mapInstance().removeTileLayer(layer!))\r\n }\r\n\r\n const init = () => {\r\n const { visible, transform, png8, height, retry, retryTime, transparentPng, dataType, spanLevel, tileTypeName, cacheSize, customLayer, clipTile, isTop, opacity, isLowText, showRegion, useThumbData, tileUrlTemplate } = props\r\n layer = new BMapGL.TileLayer({\r\n transform,\r\n png8,\r\n height,\r\n retry,\r\n retryTime,\r\n transparentPng,\r\n dataType,\r\n spanLevel,\r\n tileTypeName,\r\n cacheSize,\r\n customLayer,\r\n clipTile,\r\n isTop,\r\n opacity,\r\n isLowText,\r\n showRegion,\r\n useThumbData,\r\n tileUrlTemplate,\r\n } as any)\r\n initLayerOptions()\r\n visible && addTileLayer()\r\n startWatchProps()\r\n }\r\n\r\n init()\r\n\r\n onUnmounted(() => {\r\n if (layer) {\r\n mapInstance().removeTileLayer(layer)\r\n }\r\n })\r\n\r\n return () => <></>\r\n },\r\n})\r\n"],"names":["name","props","tileLayerProps","setup","mapInstance","useMapInstance","requestQueue","batchTimer","layer","setZIndex","zIndex","setBoundary","boundary","addBoundary","clearBoundary","setZIndexTop","zIndexTop","setTop","loadImage","request","img","handleLoad","image","tileInfo","cb","key","handleError","HTMLCanvasElement","Image","crossOrigin","onload","onerror","src","toDataURL","HTMLImageElement","processBatch","length","getTilesUrl","batch","tiles","map","tile","boundRange","values","value","index","findIndex","item","splice","forEach","enqueue","data","existing","find","push","clearTimeout","setTimeout","addTileLayer","getTileUrl","loadRasterTileData","callback","getTileKey","BMapGL","Projection","tileToBoundRange","col","row","baseTileSize","zoom","x","y","z","initLayerOptions","startWatchProps","watch","visible","n","removeTileLayer","init","transform","png8","height","retry","retryTime","transparentPng","dataType","spanLevel","tileTypeName","cacheSize","customLayer","clipTile","isTop","opacity","isLowText","showRegion","useThumbData","tileUrlTemplate","TileLayer","onUnmounted","_createVNode","_Fragment"],"mappings":"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"}
@@ -107,12 +107,12 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
107
107
  readonly default: false;
108
108
  };
109
109
  }>> & Readonly<{}>, {
110
- readonly minZoom: number;
111
- readonly maxZoom: number;
112
110
  readonly visible: boolean;
113
111
  readonly useThumbData: boolean;
114
112
  readonly zIndex: number;
115
113
  readonly zIndexTop: boolean;
114
+ readonly minZoom: number;
115
+ readonly maxZoom: number;
116
116
  readonly extentCRSIsWGS84: boolean;
117
117
  readonly tms: boolean;
118
118
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spuermomonga/vue3-bmapgl",
3
- "version": "0.0.11",
3
+ "version": "0.0.12",
4
4
  "description": "Baidu Map GL encapsulation for Vue 3",
5
5
  "author": "SpuerMomonga <spuermomonga@qq.com>",
6
6
  "license": "MIT",