xzw 4 ヶ月 前
コミット
06b6637203
1 ファイル変更61 行追加44 行削除
  1. 61 44
      src/sdk/cover/index.js

+ 61 - 44
src/sdk/cover/index.js

@@ -17,7 +17,21 @@ const ModelTypes = {
     7 : {name:'圆周率相机' },//圆周率相机场景
     8 : {name:'动画模型'}
 }
-let cesAspect , cesImageryProvider
+
+let satellite = true
+let defaultMapProps = [{url: `//wprd04.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=${satellite?6:7}&x={x}&y={y}&z={z}&layer=6&token=YOUR_API_KEY`, //style=6是卫星,7是标准
+    maximumLevel: satellite?18:19, 
+    name:'高德baseLayer'  
+},{
+    url: `//wprd04.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}&layer=6&token=YOUR_API_KEY`, //style=6是卫星,7是标准
+    maximumLevel: 18, 
+    name:'高德textLayer'  
+}] 
+let cesAspect , cesImageryProvider,  mapProps = defaultMapProps 
+
+
+
+
 
 
 const Id_noIntersect = -100 //path绘制在地图上的点,modelId传这个值,勿更改
@@ -784,28 +798,36 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
         switchMapType(type){//切换成江门的卫星或标准  
             if(window.location.href.includes('localhost:7173')/*  || Potree.browser.urlHasValue('testMap') */ ) return
             console.log('switchMapType',type)
-            let maximumLevel, url
-            if(type == 'satellite'){
-                maximumLevel = 18
-                url = "//a.map.jms.gd/tile/weixing/{z}/{x}/{y}.png"
-            }else{
-                maximumLevel = 19
-                url = "//a.map.jms.gd/tile/gd_xiangtu/{z}/{x}/{y}.png"
+            
+            mapProps = [{
+                maximumLevel : type == 'satellite' ? 18 : 19,
+                url: type == 'satellite' ?  "//a.map.jms.gd/tile/weixing/{z}/{x}/{y}.png" : "//a.map.jms.gd/tile/gd_xiangtu/{z}/{x}/{y}.png"
+            }]
+            
+            if(Potree.settings.showCesium){
+                 buildMapFromProp()
             }
-            cesImageryProvider = new Cesium.UrlTemplateImageryProvider({ //直接用84坐标,不用转高德
-                url,  
-                crossOrigin: 'anonymous',  
-                minimumLevel: 0,
-                maximumLevel,
-                tilingScheme: new AmapMercatorTilingScheme(),  //修改投影,从84->高德
-            }) 
+        },
+        
+        
+        changeMapTile(urls){
+            //'http:/a.xxx.com/{x}/{y}/{z}.png'
+            console.log('changeMapTile',urls) 
+            
+            mapProps = urls.forEach(e=>{
+                return {
+                    maximumLevel : 18,
+                    url: e.url
+                }
+            })
+             
             if(Potree.settings.showCesium){
-                cesiumViewer.imageryLayers.removeAll();
-                cesiumViewer.imageryLayers.addImageryProvider(cesImageryProvider);
+                buildMapFromProp()
             }
         },
         
         
+        
         enableMap(mapArea, latlng) {
 
             if (!viewer.mapViewer) {
@@ -1571,6 +1593,9 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                         
                         
                         getCurrentSubtitlePixel({width , height}){// 获取当前模型旁白出现的适合位置,传入旁边dom的宽高,返回像素位置
+                           
+                            
+                            // let startTime = performance.now()
                             let bound = model.boundingBox 
                             let boundPoints = [  
                                 new THREE.Vector3(bound.min.x, bound.min.y, bound.min.z ),
@@ -1605,6 +1630,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                             }else{
                                 x = right.pos.x + margin  
                             }
+                            //console.log('获取字幕位置', performance.now() - startTime )
                             return {x,y}
                         },
 
@@ -2087,7 +2113,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                 }, 
                 changeCanMove(canMove){
                     //console.log('changeCanMove', tag.title,  canMove)
-                    tag.dragEnable = canMove
+                    tag.dragEnable = canMove 
                 },
                 
                 getImageCenter(){  //热点在模型的本地坐标 
@@ -2204,6 +2230,22 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
         prop.loading = true
 
     }
+    
+    function buildMapFromProp(){
+        cesiumViewer.imageryLayers.removeAll();
+        
+        mapProps.forEach(e=>{
+            let gaoDeImageryProvider = new Cesium.UrlTemplateImageryProvider({ 
+                url:e.url,
+                minimumLevel: 0,
+                maximumLevel: e.maximumLevel,
+                credit: new Cesium.Credit(e.name),
+                tilingScheme: new AmapMercatorTilingScheme(),  //修改投影,从84->高德
+                crossOrigin: 'anonymous',
+            }) 
+            cesiumViewer.imageryLayers.addImageryProvider(gaoDeImageryProvider);
+        })
+    } 
 
     function buildMap(){
         if (Potree.settings.showCesium && !window.cesiumViewer) {
@@ -2212,8 +2254,6 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
             //密钥
             Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2ZGM2YzY0ZC1kNWE0LTRiYTgtYTkwNS1kYmJiODRjMWUwMmQiLCJpZCI6MjMzMTQ1LCJpYXQiOjE3MjI5OTUwNTB9.niqpkl6xOkQ2KeJjelyDDDydmSGqKXKb5cX2NyxSNAw'
             
-
-            
  
             window.cesiumViewer = new Cesium.Viewer('app', {
                 useDefaultRenderLoop: true,
@@ -2234,30 +2274,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                 //terrainShadows: Cesium.ShadowMode.DISABLED, //terrain地形 //自带的地图直接用84坐标 
             }); 
             
-            let satellite = true
-            let gaoDeImageryProvider = cesImageryProvider || new Cesium.UrlTemplateImageryProvider({ 
-                url: `//wprd04.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=${satellite?6:7}&x={x}&y={y}&z={z}&layer=6&token=YOUR_API_KEY`, //style=6是卫星,7是标准
-                minimumLevel: 0,
-                maximumLevel: satellite?18:19, 
-                credit: new Cesium.Credit('高德地图'),
-                tilingScheme: new AmapMercatorTilingScheme(),  //修改投影,从84->高德
-                crossOrigin: 'anonymous',
-            }) 
-            cesiumViewer.imageryLayers.removeAll();
-            cesiumViewer.imageryLayers.addImageryProvider(gaoDeImageryProvider);
-             
-            //叠一层文字上去
-            let gaoDeImageryProvider2 = cesImageryProvider || new Cesium.UrlTemplateImageryProvider({ 
-                url: `//wprd04.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}&layer=6&token=YOUR_API_KEY`, //style=6是卫星,7是标准
-                minimumLevel: 0,
-                maximumLevel: 18, 
-                credit: new Cesium.Credit('高德地图'),
-                tilingScheme: new AmapMercatorTilingScheme(),  //修改投影,从84->高德
-                crossOrigin: 'anonymous',
-            }) 
-            cesiumViewer.imageryLayers.addImageryProvider(gaoDeImageryProvider2);
-             
-             
+            buildMapFromProp()
               
             Potree.cesScreenshot = (w,h)=>{
                 console.log('cesScreenshot',w,h)