修改bug

This commit is contained in:
zyl
2025-11-27 14:27:40 +08:00
6 changed files with 144 additions and 89 deletions

View File

@ -1,6 +1,6 @@
server: server:
host: 127.0.0.1 host: 127.0.0.1
port: 8895 port: 8848
path: C:\Users\Administrator\AppData\Roaming\dzsp_shijingjun_offline_Y_save path: C:\Users\Administrator\AppData\Roaming\dzsp_shijingjun_offline_Y_save
poi: poi:
global: global:

View File

@ -1,2 +1,5 @@
1,Ψһ<EFBFBD><EFBFBD>ʶ,id <EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ԭ<EFBFBD><EFBFBD>ͷ,<EFBFBD>±<EFBFBD>ͷ,
2,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,name 1,apple(<28><>),ƻ<EFBFBD><EFBFBD>(<28><>),"<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߸<EFBFBD>ʽ<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>Ӧ<EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>ͷ<EFBFBD><EFBFBD>"
2,water(<28><>),ˮ(<28><>),
3,...,,

1 1 序号 唯一标识 原表头 id 新表头
2 2 1 姓名 apple(例) name 苹果(例) 备注:按照左边格式填写,严禁更改表格样式, 样例需删除(把原表头对应的翻译填入新表头)
3 2 water(例) 水(例)
4 3 ...
5

View File

@ -0,0 +1,2 @@
1,Ψһ<EFBFBD><EFBFBD>ʶ,id
2,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,name
1 1 唯一标识 id
2 2 姓名 name

View File

@ -1,31 +1,37 @@
<template> <template>
<Dialog ref="baseDialog" :title="title" width="900px" left="calc(50% - 450px)" top="calc(50% - 360px)" <Dialog
:closeCallback="closeCallback"> ref="baseDialog"
:title="title"
width="900px"
left="calc(50% - 450px)"
top="calc(50% - 360px)"
:closeCallback="closeCallback"
>
<template #content> <template #content>
<span class="custom-divider"></span> <span class="custom-divider"></span>
<div class="div-item" style="display: flex;"> <div class="div-item" style="display: flex">
<button @click="importHeader" style="margin-right: 15px;"> <button @click="importHeader" style="margin-right: 15px">
<svg class="icon-updateheigh"> <svg class="icon-updateheigh">
<use xlink:href="#icon-importHeader"></use> <use xlink:href="#icon-importHeader"></use></svg
</svg>{{ t('vector.导入表头') }} >{{ t('vector.导入表头') }}
</button> </button>
<button @click="downloadHeader"> <button @click="downloadHeader">
<svg> <svg>
<use xlink:href="#icon-download"></use> <use xlink:href="#icon-download"></use></svg
</svg>{{ t('vector.下载字典模板') }} >{{ t('vector.下载字典模板') }}
</button> </button>
<button @click="exportExcel" style="position: absolute; right: 25px;"> <button @click="exportExcel" style="position: absolute; right: 25px">
<svg> <svg>
<use xlink:href="#icon-export"></use> <use xlink:href="#icon-export"></use></svg
</svg>{{ t('vector.导出') }} >{{ t('vector.导出') }}
</button> </button>
</div> </div>
<span class="custom-divider"></span> <span class="custom-divider"></span>
<div class="div-item"> <div class="div-item">
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<input type="text" placeholder="输入关键字搜索" v-model="keyword" @input="search"> <input type="text" placeholder="输入关键字搜索" v-model="keyword" @input="search" />
<svg style="position: relative;left: -22px;width: 14px;height: 14px;"> <svg style="position: relative; left: -22px; width: 14px; height: 14px">
<use xlink:href="#icon-search"></use> <use xlink:href="#icon-search"></use>
</svg> </svg>
</div> </div>
@ -58,7 +64,13 @@
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<Pagination :total="total" v-model:page="pageNum" v-model:limit="pageSize" :pageSizes="pageSizes" @pagination="getTableList" /> <Pagination
:total="total"
v-model:page="pageNum"
v-model:limit="pageSize"
:pageSizes="pageSizes"
@pagination="getTableList"
/>
</div> </div>
</div> </div>
</template> </template>
@ -89,7 +101,7 @@ const baseDialog: any = ref(null)
const eventBus: any = inject('bus') const eventBus: any = inject('bus')
const keyData: any = ref([]) const keyData: any = ref([])
const keyword: any = ref('') const keyword: any = ref('')
const entityOptions: any = ref({}); const entityOptions: any = ref({})
let originalOptions: any let originalOptions: any
let that: any let that: any
const tableData: any = ref([]) const tableData: any = ref([])
@ -103,7 +115,7 @@ const title = ref('')
const closeCallback = () => { const closeCallback = () => {
entityOptions.value.originalOptions = structuredClone(originalOptions) entityOptions.value.originalOptions = structuredClone(originalOptions)
entityOptions.value.reset() entityOptions.value.reset()
eventBus.emit("destroyComponent") eventBus.emit('destroyComponent')
} }
const getKeys = () => { const getKeys = () => {
keyData.value = [] keyData.value = []
@ -126,12 +138,13 @@ let parentNode
let features let features
const open = async (id: any) => { const open = async (id: any) => {
// that = window.earth.entityMap.get(id) // that = window.earth.entityMap.get(id)
node = window.treeObj.getNodeByParam("id", id, null); node = window.treeObj.getNodeByParam('id', id, null)
entityOptions.value.field = JSON.parse(node.params).field
that = getThat(node) that = getThat(node)
console.log(node, that, entityOptions.field, 'yyyyyyyyyyyyyy')
if (that.options.id === id) { if (that.options.id === id) {
features = that.geojson.features features = that.geojson.features
} } else {
else {
features = [node.params] features = [node.params]
} }
console.log(features, that, id) console.log(features, that, id)
@ -139,6 +152,7 @@ const open = async (id: any) => {
let arr = JSON.parse(JSON.stringify(features)) let arr = JSON.parse(JSON.stringify(features))
filterData.value = JSON.parse(JSON.stringify(arr)) filterData.value = JSON.parse(JSON.stringify(arr))
total.value = filterData.value.length total.value = filterData.value.length
console.log(arr, 'arrarrarrarrarrarr')
let spliceData = arrSplice(arr, pageSize.value) let spliceData = arrSplice(arr, pageSize.value)
maxPageNum.value = spliceData.length maxPageNum.value = spliceData.length
tableData.value = spliceData[pageNum.value - 1] tableData.value = spliceData[pageNum.value - 1]
@ -155,10 +169,9 @@ const getThat = (n) => {
if (t) { if (t) {
parentNode = n parentNode = n
return t return t
} } else {
else {
if (n.parentId) { if (n.parentId) {
return getThat(window.treeObj.getNodeByParam("id", n.parentId, null)) return getThat(window.treeObj.getNodeByParam('id', n.parentId, null))
} }
} }
} }
@ -212,30 +225,46 @@ const getTableList = ({ page, limit }) => {
maxPageNum.value = spliceData.length maxPageNum.value = spliceData.length
tableData.value = spliceData[pageNum.value - 1] tableData.value = spliceData[pageNum.value - 1]
} }
const changeFieId = () => { const changeFieId = async (e) => {
console.log(e, 'eeeeeeeee')
let data = JSON.parse(node.params)
data.field = e
let params2 = {
id: data.id,
sourceName: data.name,
params: data,
isShow: data.show ? 1 : 0
}
await TreeApi.updateDirectoryInfo(params2)
updateNode(parentNode.children, entityOptions.value.field) updateNode(parentNode.children, entityOptions.value.field)
} }
const updateNode = (children, field) => { const updateNode = (children, field) => {
for (let i = 0; i < children.length; i++) { for (let i = 0; i < children.length; i++) {
if (children[i].children) { if (children[i].children) {
updateNode(children[i].children, field) updateNode(children[i].children, field)
} } else {
else {
if (children[i].params) { if (children[i].params) {
cusUpdateNode({ "id": children[i].id, "sourceName": children[i].params.properties[field], "params": children[i].params }) cusUpdateNode({
id: children[i].id,
sourceName:
children[i].params.properties[field] === undefined
? ''
: children[i].params.properties[field],
params: children[i].params
})
} }
} }
} }
} }
const exportExcel = () => { const exportExcel = async () => {
let prepareData: any = [[]] let prepareData: any = [[]]
for (let m = 0; m < keyData.value.length; m++) { for (let m = 0; m < keyData.value.length; m++) {
prepareData[0].push(keyData.value[m].label) prepareData[0].push(keyData.value[m].label)
} }
for (let i = 0; i < tableData.value.length; i++) { for (let i = 0; i < filterData.value.length; i++) {
let array: any = [] let array: any = []
for (let m = 0; m < keyData.value.length; m++) { for (let m = 0; m < keyData.value.length; m++) {
array.push(tableData.value[i].properties[keyData.value[m].key]) array.push(filterData.value[i].properties[keyData.value[m].key])
} }
prepareData.push(array) prepareData.push(array)
} }
@ -248,23 +277,23 @@ const exportExcel = () => {
} }
const importHeader = () => { const importHeader = () => {
let node let node
let selectNodes = getSelectedNodes(window.treeObj); let selectNodes = getSelectedNodes(window.treeObj)
if (selectNodes && selectNodes[selectNodes.length - 1]) { if (selectNodes && selectNodes[selectNodes.length - 1]) {
node = selectNodes[selectNodes.length - 1] node = selectNodes[selectNodes.length - 1]
} }
const dialogParams = { const dialogParams = {
properties: ["openFile", "multiSelections"], properties: ['openFile', 'multiSelections'],
filters: [ filters: [
{ {
name: "excel", name: 'excel',
extensions: ["csv"], extensions: ['csv']
}, }
], ]
}; }
openDirectoryDialog(dialogParams, (paths) => { openDirectoryDialog(dialogParams, (paths) => {
if (!paths.length) { if (!paths.length) {
return; return
} }
let entity = (window as any)._entityMap.get(node.id) let entity = (window as any)._entityMap.get(node.id)
if (!entity) { if (!entity) {
@ -276,17 +305,21 @@ const importHeader = () => {
params.headTables = res.data params.headTables = res.data
entity.options.headTables = [...params.headTables] entity.options.headTables = [...params.headTables]
let params2 = { let params2 = {
"id": node.id, id: node.id,
"sourceName": node.sourceName, sourceName: node.sourceName,
"params": params, params: params,
"isShow": node.isShow ? 1 : 0, isShow: node.isShow ? 1 : 0
} }
TreeApi.updateDirectoryInfo(params2) TreeApi.updateDirectoryInfo(params2)
cusUpdateNode({ "id": params2.id, "sourceName": params2.sourceName, "params": JSON.stringify(params) }) cusUpdateNode({
id: params2.id,
sourceName: params2.sourceName,
params: JSON.stringify(params)
})
getKeys() getKeys()
} }
}) })
}); })
} }
const downloadHeader = async () => { const downloadHeader = async () => {
let p = 'csv' let p = 'csv'
@ -319,10 +352,10 @@ const close = () => {
function openDirectoryDialog(option, cb) { function openDirectoryDialog(option, cb) {
const { ipcRenderer } = require('electron') const { ipcRenderer } = require('electron')
ipcRenderer.send("open-directory-dialog", option); ipcRenderer.send('open-directory-dialog', option)
ipcRenderer.once("selectedItem", (e, paths) => { ipcRenderer.once('selectedItem', (e, paths) => {
cb(paths); cb(paths)
}); })
} }
defineExpose({ defineExpose({
open, open,
@ -370,4 +403,4 @@ defineExpose({
padding: 4px; padding: 4px;
} }
} }
</style> </style>

View File

@ -38,8 +38,8 @@
y2="-6.678619384765625" y2="-6.678619384765625"
gradientUnits="userSpaceOnUse" gradientUnits="userSpaceOnUse"
> >
<stop offset="0" stop-color="rgb(var(--color-base1))" stop-opacity="0.2" /> <stop offset="0" stop-color="rgb(var(--color-base1))" stop-opacity="0.2"/>
<stop offset="1" stop-color="rgb(var(--color-base1))" stop-opacity="0" /> <stop offset="1" stop-color="rgb(var(--color-base1))" stop-opacity="0"/>
</linearGradient> </linearGradient>
<linearGradient <linearGradient
id="linear_border_2442_491_0" id="linear_border_2442_491_0"
@ -49,8 +49,8 @@
y2="29.435516357421875" y2="29.435516357421875"
gradientUnits="userSpaceOnUse" gradientUnits="userSpaceOnUse"
> >
<stop offset="0.0625" stop-color="rgb(var(--color-base1))" /> <stop offset="0.0625" stop-color="rgb(var(--color-base1))"/>
<stop offset="1" stop-color="var(--color-border1)" /> <stop offset="1" stop-color="var(--color-border1)"/>
</linearGradient> </linearGradient>
<filter <filter
id="filter_2442_492" id="filter_2442_492"
@ -61,21 +61,21 @@
filterUnits="userSpaceOnUse" filterUnits="userSpaceOnUse"
color-interpolation-filters="sRGB" color-interpolation-filters="sRGB"
> >
<feFlood flood-opacity="0" result="feFloodId_2442_492" /> <feFlood flood-opacity="0" result="feFloodId_2442_492"/>
<feColorMatrix <feColorMatrix
in="SourceAlpha" in="SourceAlpha"
type="matrix" type="matrix"
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
result="hardAlpha_2442_492" result="hardAlpha_2442_492"
/> />
<feOffset dx="0" dy="0" /> <feOffset dx="0" dy="0"/>
<feGaussianBlur stdDeviation="2" /> <feGaussianBlur stdDeviation="2"/>
<feComposite in2="hardAlpha_2442_492" operator="out" /> <feComposite in2="hardAlpha_2442_492" operator="out"/>
<feColorMatrix <feColorMatrix
type="matrix" type="matrix"
values="0 0 0 0 0.1450980392156863 0 0 0 0 0.7686274509803922 0 0 0 0 0.7686274509803922 0 0 0 1 0" values="0 0 0 0 0.1450980392156863 0 0 0 0 0.7686274509803922 0 0 0 0 0.7686274509803922 0 0 0 1 0"
/> />
<feBlend mode="normal" in2="feFloodId_2442_492" result="dropShadow_1_2442_492" /> <feBlend mode="normal" in2="feFloodId_2442_492" result="dropShadow_1_2442_492"/>
<feBlend <feBlend
mode="normal" mode="normal"
in="SourceGraphic" in="SourceGraphic"
@ -132,8 +132,8 @@
y2="-131.6942138671875" y2="-131.6942138671875"
gradientUnits="userSpaceOnUse" gradientUnits="userSpaceOnUse"
> >
<stop offset="0" stop-color="rgb(var(--color-base1))" stop-opacity="0.2" /> <stop offset="0" stop-color="rgb(var(--color-base1))" stop-opacity="0.2"/>
<stop offset="1" stop-color="rgb(var(--color-base1))" stop-opacity="0" /> <stop offset="1" stop-color="rgb(var(--color-base1))" stop-opacity="0"/>
</linearGradient> </linearGradient>
<linearGradient <linearGradient
id="linear_border_2409_300_0" id="linear_border_2409_300_0"
@ -143,8 +143,8 @@
y2="580.431640625" y2="580.431640625"
gradientUnits="userSpaceOnUse" gradientUnits="userSpaceOnUse"
> >
<stop offset="0.0625" stop-color="rgb(var(--color-base1))" /> <stop offset="0.0625" stop-color="rgb(var(--color-base1))"/>
<stop offset="1" stop-color="var(--color-border1)" /> <stop offset="1" stop-color="var(--color-border1)"/>
</linearGradient> </linearGradient>
</defs> </defs>
</svg> </svg>
@ -197,7 +197,7 @@
size="small" size="small"
@click="searchPlace" @click="searchPlace"
:loading="loading" :loading="loading"
>{{ t('btn.search') }} >{{ t('btn.search') }}
</el-button> </el-button>
</div> </div>
<div id="selectorBox"> <div id="selectorBox">
@ -210,6 +210,15 @@
:no-data-text="t('btn.selectNoText')" :no-data-text="t('btn.selectNoText')"
popper-class="custom-dropdown" popper-class="custom-dropdown"
> >
<template #empty>
<div
class="treeSearchEmpty"
style="padding: 10px; text-align: center; color: #909399"
>
<i class="el-icon-warning-outline"></i>
<div>暂无数据</div>
</div>
</template>
<el-option <el-option
v-for="(item, index) in poiOptions" v-for="(item, index) in poiOptions"
:key="item.search_key + index" :key="item.search_key + index"
@ -239,22 +248,22 @@
<script setup lang="ts"> <script setup lang="ts">
// @ts-nocheck // @ts-nocheck
import { debounce } from '@/utils' import {debounce} from '@/utils'
import { useI18n } from 'vue-i18n' import {useI18n} from 'vue-i18n'
import { useTree } from './hooks/tree' import {useTree} from './hooks/tree'
import AMapLoader from '@amap/amap-jsapi-loader' import AMapLoader from '@amap/amap-jsapi-loader'
import rightMenu from './components/rightMenu.vue' import rightMenu from './components/rightMenu.vue'
import { $changeComponentShow } from '@/utils/communication' import {$changeComponentShow} from '@/utils/communication'
import { ref, nextTick } from 'vue' import {ref, nextTick} from 'vue'
import { ElMessage } from 'element-plus' import {ElMessage} from 'element-plus'
import { bus } from '@/utils/bus' import {bus} from '@/utils/bus'
import { TreeApi } from '@/api/tree' import {TreeApi} from '@/api/tree'
import { PoiApi } from '@/api/poi' import {PoiApi} from '@/api/poi'
import { get } from 'jquery' import {get} from 'jquery'
const { initTree, rightMenuRef, initTreeCallBack } = useTree() const {initTree, rightMenuRef, initTreeCallBack} = useTree()
const { t } = useI18n() const {t} = useI18n()
const isShow = ref(false) const isShow = ref(false)
const select = ref('poi') const select = ref('poi')
const searchKey: any = ref('') const searchKey: any = ref('')
@ -360,7 +369,8 @@ var key =
(localStorage.getItem('AMapKey') && localStorage.getItem('AMapKey').split('|')[0]) || (localStorage.getItem('AMapKey') && localStorage.getItem('AMapKey').split('|')[0]) ||
'd88fcc689d1aa99866b2d0d83fd36677' 'd88fcc689d1aa99866b2d0d83fd36677'
var isOnline = false var isOnline = false
var loadAmp = (cb = () => {}) => { var loadAmp = (cb = () => {
}) => {
AMapLoader.reset() AMapLoader.reset()
AMapLoader.load({ AMapLoader.load({
key: key, // 申请好的Web端开发者Key首次调用 load 时必填 key: key, // 申请好的Web端开发者Key首次调用 load 时必填
@ -460,7 +470,7 @@ const searchPlace = debounce(function () {
let string = searchKey.value.trim() let string = searchKey.value.trim()
if (string) { if (string) {
// TreeApi.queryPOI({ name: string, pageNum: 1, pageSize: 1000 }).then((res) => { // TreeApi.queryPOI({ name: string, pageNum: 1, pageSize: 1000 }).then((res) => {
PoiApi.searchPoi({ name: string, pageNum: 1, pageSize: 1000 }).then((res) => { PoiApi.searchPoi({name: string, pageNum: 1, pageSize: 1000}).then((res) => {
console.log(res, 'resres') console.log(res, 'resres')
poiOptions.value = res.data poiOptions.value = res.data
if (poiOptions.value.length) { if (poiOptions.value.length) {
@ -513,7 +523,7 @@ const locationChange = () => {
// let sg84 = YJ.Global.CoordTransform.GCJ02ToWGS84(item.lng, item.lat); // let sg84 = YJ.Global.CoordTransform.GCJ02ToWGS84(item.lng, item.lat);
let params = { let params = {
id, id,
position: { lng: item.lng, lat: item.lat, alt: item.alt ? item.alt : 0 }, position: {lng: item.lng, lat: item.lat, alt: item.alt ? item.alt : 0},
billboard: { billboard: {
show: true, show: true,
image: 'http://localhost:' + availablePort.value + '/' + 'GEMarker1/A-ablu-blank.png', image: 'http://localhost:' + availablePort.value + '/' + 'GEMarker1/A-ablu-blank.png',
@ -643,11 +653,12 @@ defineExpose({
text-shadow: 0px 0px 9px var(--color-text-shadow); text-shadow: 0px 0px 9px var(--color-text-shadow);
font-weight: 700; font-weight: 700;
background: linear-gradient( background: linear-gradient(
90deg, 90deg,
rgba(var(--color-base1), 0) 0%, rgba(var(--color-base1), 0) 0%,
rgba(var(--color-base1), 0.5) 55.55%, rgba(var(--color-base1), 0.5) 55.55%,
rgba(var(--color-base1), 0) 100% rgba(var(--color-base1), 0) 100%
); );
> svg { > svg {
margin-right: 10px; margin-right: 10px;
} }
@ -788,20 +799,28 @@ defineExpose({
.el-select-dropdown__wrap { .el-select-dropdown__wrap {
max-height: 260px !important; max-height: 260px !important;
} }
.custom-dropdown { .custom-dropdown {
margin-top: 75px; margin-top: 75px;
margin-right: 10px; margin-right: 10px;
width: 380px !important; width: 380px !important;
} }
.el-select-dropdown__item.is-hovering { .el-select-dropdown__item.is-hovering {
background-color: unset !important; background-color: unset !important;
color: rgba(var(--color-base1), 1) !important; color: rgba(var(--color-base1), 1) !important;
} }
.el-select-dropdown__item.is-selected { .el-select-dropdown__item.is-selected {
background-color: unset !important; background-color: unset !important;
color: rgba(var(--color-base1), 1) !important; color: rgba(var(--color-base1), 1) !important;
} }
// .custom-dropdown2 { // .custom-dropdown2 {
// width: 380px !important; // width: 380px !important;
// } // }
.el-select-dropdown__empty,
.el-select-dropdown__loading {
margin-top: -150px !important;
}
</style> </style>

View File

@ -160,7 +160,6 @@ eventBus.on('openDialog', async (sourceType: any, id: any) => {
if (dynamicComponentRef.value && dynamicComponentRef.value.close) { if (dynamicComponentRef.value && dynamicComponentRef.value.close) {
dynamicComponentRef.value.close() dynamicComponentRef.value.close()
} }
console.log(sourceType, 'sourceType')
switch (sourceType) { switch (sourceType) {
case 'directory': case 'directory':
editdirectoryBox.value.open() editdirectoryBox.value.open()
@ -396,7 +395,6 @@ eventBus.on('openDialog', async (sourceType: any, id: any) => {
break break
case 'roam': //飞行漫游 case 'roam': //飞行漫游
case 'flyRoamDialog': //飞行漫游 case 'flyRoamDialog': //飞行漫游
console.log(FlyRoam, 'FlyRoam')
currentComponent.value = FlyRoam currentComponent.value = FlyRoam
await nextTick() await nextTick()
dynamicComponentRef.value?.open(id) dynamicComponentRef.value?.open(id)
@ -507,9 +505,9 @@ const createEarth = async () => {
// @ts-ignore // @ts-ignore
let options = JSON.parse(localStorage.getItem('defaultView')) let options = JSON.parse(localStorage.getItem('defaultView'))
YJ.Global.setDefaultView(window.earth, options) YJ.Global.setDefaultView(window.earth, options)
setTimeout(() => { // setTimeout(() => {
new YJ.Tools(window.earth).flyHome() new YJ.Tools(window.earth).flyHome(0)
}, 1000) // }, 1000)
// YJ.Global.setDefaultView(window.earth, { // YJ.Global.setDefaultView(window.earth, {
// destination: { lng: 100, lat: 30, alt: 10 }, // destination: { lng: 100, lat: 30, alt: 10 },
// orientation: { // orientation: {