BIGEMAP卫星地图_高清卫星地图_北斗高清地图_地图软件_矢量地图数据_专题地图

顯示源代碼
3D行政區域可視化
 開發文檔
            <!DOCTYPE html>

<html>
  <head>
    <meta charset="UTF-8" />
    <meta
      name="viewport"
      content="initial-scale=1,maximum-scale=1,user-scalable=no"
    />
    <link
      href="http://www.cnhrsm.com:9000/bigemap-gl.js/v1.1.0/Widgets/widgets.css"
      rel="stylesheet"
    />
    <script src="http://www.cnhrsm.com:9000/bigemap-gl.js/v1.1.0/bigemap-gl.js"></script>
    <style>
      body {
        margin: 0;
        padding: 0;
      }

      #container {
        position: absolute;
        top: 0;
        bottom: 0;
        width: 100%;
        background-image: url("/bmgl/3dksh/bj.jpg");
        background-repeat: no-repeat;
        background-size: 100%;
      }

      .bmgl-widget-credits {
        display: none;
      }
    </style>
    <title>part_test</title>
  </head>
  <body>
    <div id="container"></div>

    <script>
      bmgl.Config.HTTP_URL = 'http://ua.bigemap.com:30081/bmsdk/';
      var viewer = new bmgl.Viewer("container", {
        mapId: "bigemap.dc-satellite",
        requestRenderMode: false,
        orderIndependentTranslucency: false,
        contextOptions: {
          webgl: {
            alpha: true,
          },
        },
      });
      viewer.BMWidget.screenSpaceEventHandler.removeInputAction(
        bmgl.ScreenSpaceEventType.LEFT_CLICK
      );

      var scene = viewer.scene;
      var handler = new bmgl.ScreenSpaceEventHandler(scene.canvas);
      var ellipsoid = scene.globe.ellipsoid; //得到當前三維場景的橢球體

      //關閉地圖元素
      viewer.scene.globe.show = false;
      viewer.scene.skyBox.show = false; //隱藏天空盒子
      viewer.scene.backgroundColor = new bmgl.Color(0.0, 0.0, 0.0, 0.0); //隱藏黑色背景
      viewer.scene.globe.baseColor = new bmgl.Color(0, 0, 0, 0); //替換球體默認藍色
      viewer.scene.globe.enableLighting = false; //隱藏太陽
      viewer.shadows = false;
      viewer.scene.sun.show = false; //或者viewer.scene.sun.destroy();
      viewer.scene.moon.show = false; //隱藏月亮
      viewer.scene.skyAtmosphere.show = false; //大氣圈
      viewer.scene.fog.enable = false; //霧

      viewer.imageryLayers.remove(viewer.imageryLayers.get(0), false);

      //加載省市
      var promise = bmgl.KmlDataSource.load("/bmgl/3dksh/sichuan.kml");
      promise
        .then(function (dataSource) {
          viewer.dataSources.add(dataSource);
          //Get the array of entities
          var entities = dataSource.entities.values;
          var colorHash = {};
          for (var i = 0; i < entities.length; i++) {
            //For each entity, create a random color based on the state name.
            //Some states have multiple entities, so we store the color in a
            //hash so that we use the same color for the entire state.
            var entity = entities[i];

            if (entity.polygon) {
              var name = entity.name;

              viewer.entities.add({
                polygon: {
                  hierarchy: entity.polygon.hierarchy.getValue(),
                  outline: true,
                  material: new bmgl.ImageMaterialProperty({
                    image: "/bmgl/3dksh/sc.png",
                    repeat: new bmgl.Cartesian2(1, 1),
                  }),
                  extrudedHeight: 20000,
                },
              });
            }
          }
          viewer.flyTo(viewer.entities);
        })
        .otherwise(function (error) {
          //Display any errrors encountered while loading.
          window.alert(error);
        });

      var promise = bmgl.KmlDataSource.load("/bmgl/3dksh/soncity.kml");
      promise
        .then(function (dataSource) {
          viewer.dataSources.add(dataSource);
          //Get the array of entities
          var entities = dataSource.entities.values;
          var colorHash = {};
          for (var i = 0; i < entities.length; i++) {
            //For each entity, create a random color based on the state name.
            //Some states have multiple entities, so we store the color in a
            //hash so that we use the same color for the entire state.
            var entity = entities[i];

            if (entity.polygon) {
              var name = entity.name;

              //畫多邊形
              viewer.entities.add({
                name: name,
                type: "polygon",
                polygon: {
                  hierarchy: entity.polygon.hierarchy.getValue(),
                  outline: true,
                  material: new bmgl.Color(0, 0, 0, 0.1),
                  extrudedHeight: 21000,
                },
              });

              //畫邊界線
              let xyzs = entity.polygon.hierarchy.getValue();

              //添加標注
              drawLabel(xyzs.positions, name);

              //畫線
              let latlngs = [];
              xyzs.positions.forEach((v) => {
                let tmplatlng = xyz2latlng(v);
                tmplatlng.forEach((l) => {
                  latlngs.push(l);
                });
              });
              drawLine(latlngs);
            }
          }
          viewer.flyTo(viewer.entities);
        })
        .otherwise(function (error) {
          //Display any errrors encountered while loading.
          window.alert(error);
        });

      //記錄上一個點擊的entity
      let lastentity = "";

      handler.setInputAction(function (e) {
        var entity = viewer.scene.pick(e.position);

        console.log(entity);
        console.log(lastentity);
        if (entity != undefined) {
          if (entity.id.type == "polygon") {
            if (lastentity != "") {
              lastentity.material = new bmgl.Color(0, 0, 0, 0.1);
            }
            lastentity = entity.id.polygon;
            lastentity.material = new bmgl.Color(0.4, 0, 0, 0.8);
            console.log(entity.id.name);
          }
        } else {
          if (lastentity != "") {
            lastentity.material = new bmgl.Color(0, 0, 0, 0.1);
          }
          lastentity = "";
        }
      }, bmgl.ScreenSpaceEventType.LEFT_CLICK);

      function xyz2latlng(xyz, height = 20100) {
        let wgs84 = ellipsoid.cartesianToCartographic(xyz);
        let lng = bmgl.Math.toDegrees(wgs84.longitude);
        let lat = bmgl.Math.toDegrees(wgs84.latitude);
        return [lng, lat, height];
      }

      function drawLine(latlngs) {
        var orangeOutlined = viewer.entities.add({
          type: "line",
          polyline: {
            positions: bmgl.Cartesian3.fromDegreesArrayHeights(latlngs),
            width: 5,
            material: new bmgl.PolylineOutlineMaterialProperty({
              color: bmgl.Color.ORANGE,
              outlineWidth: 2,
              outlineColor: bmgl.Color.BLACK,
            }),
          },
        });
      }

      function drawLabel(polyPositions, name) {
        let polyCenter = bmgl.BoundingSphere.fromPoints(polyPositions).center;
        polyCenter = bmgl.Ellipsoid.WGS84.scaleToGeodeticSurface(polyCenter);

        let xyz = new bmgl.Cartesian3(polyCenter.x, polyCenter.y, polyCenter.z);
        let wgs84 = ellipsoid.cartesianToCartographic(xyz);
        let lng = bmgl.Math.toDegrees(wgs84.longitude);
        let lat = bmgl.Math.toDegrees(wgs84.latitude);
        viewer.entities.add({
          type: "label",
          position: bmgl.Cartesian3.fromDegrees(lng, lat, 40000),
          label: {
            scale: 0.6,
            showBackground: true,
            backgroundColor: new bmgl.Color(0.165, 0.165, 0.165, 0.5),
            fillColor: bmgl.Color.WHITE,
            text: name,
            disableDepthTestDistance: 900000,
          },
        });
      }
    </script>
  </body>
</html>
        
主站蜘蛛池模板: 浙江中瓷阀门有限公司 | 液晶拼接屏_三星46寸/55寸/LG液晶拼接屏_深圳拼接墙厂家_电视大屏幕液晶拼接_高清工业级液晶监视器 | 节能设备|余热回收|蒸汽压缩机|脱硝-河北耀一节能设备制造有限责任公司 | 咪咕体育直播,咪咕直播,CCTV5直播,体育直播,高清直播,腾讯体育直播,篮球直播,足球直播 | 杀菌剂_除藻剂_杀菌灭藻剂_1227杀菌剂_中北精细化工 | 山东礼品盒,礼品盒生产厂家,礼品包装盒厂家-济南恒印包装有限公司 | 品润财税_广州公司注册_南沙代理记账服务_危化证出口退税外国人工作签证代办 | 无锡亮鑫不锈钢有限公司-不锈钢炉胆,马弗炉胆,耐高温炉胆,310s炉胆,网带炉 | 喷涂流水线,喷漆流水线-山东天意设备科技 | 欧氏运动木地板,体育木地板厂家,篮球木地板价格_欧氏体育木地板 欧派板材官网 | 全屋定制板材 专业供应商 | 昆明护栏网厂家_隔离栅_围栏网_石笼网「13年生产经验」-云南北辛商贸 | 瑞安网站建设_网站制作_做网站找瑞安联创网络:专业网页制作、手机网站、SEO百度网站关键字优化 软文营销推广-新闻稿发布-软文撰写-百科词条编辑-品牌全案策划推广网络营销传播-喜尚传媒 | 瑞安网站建设_网站制作_做网站找瑞安联创网络:专业网页制作、手机网站、SEO百度网站关键字优化 软文营销推广-新闻稿发布-软文撰写-百科词条编辑-品牌全案策划推广网络营销传播-喜尚传媒 | 山东邹平华强无纺布有限公司| 中港物流|香港专线|香港物流|中港运输|中港货运|深圳理想物流公司|4006899888 | 亿企商贸-亿万企业的商务贸易平台-B2B企业产品发布供求信息平台,一带一路中国企业及产品展示平台,免费企业智能自助建站网络营销推广平台,打造B2B企业黄页产品信息发布推广专业综合电子商务平台! | 威海电子电镀,山东五金电镀,威海镀镍,山东镀铜镍铬-威海鑫镱金属制品厂 | 无尘车间_净化工程_GMP食品药品化妆品电子厂无尘净化车间_无尘室 | 青岛网站建设_网站制作_品牌设计_网站设计_圭谷设计 | 潍坊卓瑞机械有限公司,输送设备,石灰消化设备,餐厨垃圾设备,化机浆设备,污泥脱水 | 华为交换机及防火墙-H3C无线AP-鸿远腾达华为交换机总代理商 | 阻抗分析仪 阻抗测试仪 介电常数测试仪 充电枪测试仪-苏州腾斯凯电子科技有限公司 | 亚洲一区日韩一区欧美一区a,中文字幕乱妇无码AV在线,欧美日韩免费在线观看,国产精品一区二区三区免费,日韩精品免费一线在线观看,日韩一本在线,国产呦精品一区二区三区下载,国产日韩精品一区二区在线观看,欧美日韩高清一区二区三区,日韩在线免费观看视频,欧美日韩一区在线观看 | 气体报警器,有毒气体报警器,可燃气体探测器,乙炔气体报警器,可燃气体检漏仪,便携式气体检测仪,气体报警控制器-山东如特安防设备有限公司 | 中婴网,推动母婴产业健康·可持续发展,婴童网络专业传媒,母婴网,360孕婴童网,婴童品牌,婴儿用品品牌,婴儿用品加盟店,母婴用品加盟店 | 网带输送机_皮带_滚筒_链板输送机_不锈钢输送链条生产厂家-宁津县鸿昶机械设备有限公司 | 九九信息网-专业的分类信息网站| 华药药业集团|华药修医师|修医师浸膏|河南华药药业有限公司 | 无锡言午机械,无锡市言午机械有限公司--官方网站 | 晶圆盒垫纸|铝线棒精益管|防静电接地系统工程-上海德拉电子科技有限公司 | 油漆颜料砂磨机,油墨水砂磨机,水性涂料砂磨机-常州市奥能达机械设备有限公司 | 渣浆泵厂家/潜水-渣浆泵过流件-管道增压泵 - 河北聚洪泵业有限公司 | 实木中药柜,实木中药斗,木制中药柜,木制中药柜的价格,实木中草药柜,安国美佳中药柜厂家 | 液压万能试验机价格_电子万能试验机|摩擦磨损试验机厂家-济南辰达试验机制造有限公司 | 维启科技-创造科技的无限可能 | 上海维启信息技术有限公司 建筑仿真 BIM 虚拟现实 VR AR 顶岗实习 建筑智能模型 | 液体灌装机_全自动灌装机_大桶灌装机_200L灌装机_涂料油漆灌装机-昆山灌装自动化设备有限公司 | 青岛大倾角输送带厂家_橡胶挡边输送带_波纹状挡边输送带_大倾角输送带型号-青岛朗森橡胶有限公司 | 紫铜箔(带)导电胶带定做,定做紫铜箔(带)导电胶带厂家[价格]-艾飞敏铜箔 | 上饶建盛建设,建盛建设,上饶市建盛建设工程质量检测有限公司-房屋鉴定 | 样品前处理仪器_光谱仪器_色谱/分析仪器_测量/计量仪器_青岛聚创世纪环保科技有限公司 | 新能源洗扫车、新能源压缩垃圾车_新能源路面养护车_电动树叶收集车_电动扫地机_电动洗地机_高尔夫球车 |