Newer
Older
KaiFengPC / src / views / gisMapPage / gisMapCommonPage.vue
@zhangdeliang zhangdeliang on 23 May 1 KB 初始化项目
<template>
  <div class="mapPage">
    <div id="cesiumContainer"></div>
  </div>
</template>
<script>
import mapStyle from '@/utils/gisCesium/mapStyle.json';
import bus from '@/bus';
export default {
  components: {},
  props: {},
  setup(props) {
    const allData = reactive({
      movePosition: '113.934113,30.872118',
    });
    const initeMap = async () => {
      window.newfiberMap = new NewFiberMap('cesiumContainer', {
        terrain: true,
        skyBox: NewFiberMap.Enum.SkyBox.BLUE,
        selectionIndicator: false, //单击是否出现绿色边框
      });
      //加载底图
      newfiberMap.setBaseMapByEnum([NewFiberMap.Enum.BaseMap.ARCGIS_VECTOR_BLUE], [], mapStyle);
      newfiberMap.setView({
        pitch: -25,
        lng: 113.934,
        lat: 30.872,
        zoom: 2300,
      });
      mapMoveEvent();
    };
    //鼠标移动获取经纬度
    const mapMoveEvent = () => {
      newfiberMap.registerMouseMove(point => {
        allData.movePosition = `${point[0].toFixed(6)},${point[1].toFixed(6)}`;
      });
    };
    onMounted(() => {
      nextTick(() => {
        initeMap();
      });
    });
    onBeforeUnmount(() => {
      if (newfiberMap) {
        let _originalGLContext = newfiberMap.getMap().scene?.context._originalGLContext;
        newfiberMap.getMap().destroy();
        if (_originalGLContext) {
          _originalGLContext.getExtension('WEBGL_lose_context').loseContext();
          _originalGLContext = null;
        }
        newfiberMap.baseMap.map = null;
        newfiberMap = null;
      }
    });
    return {
      ...toRefs(allData),
      initeMap,
    };
  },
};
</script>
<style lang="scss">
.mapPage {
  width: 100%;
  height: 100%;
  position: absolute;
  left: 0px;
  top: 0px;
  z-index: 10;
  background: lavender;
  #cesiumContainer {
    width: 100%;
    height: 100%;
    position: absolute;
  }
  .coordinateContainer {
    position: absolute;
    left: 20px;
    bottom: 30px;
  }
}
</style>