Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
蒋波涛
/
super_globe_vue
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
a3c28eee
authored
2019-12-05 21:40:33 +0800
by
chiangbt
Browse Files
Options
Browse Files
Tag
Download
Plain Diff
Merge branch 'antd-vue' of
https://git.coding.net/chiangbt/superglobevue
2 parents
4b82e36f
faebabd6
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
247 additions
and
31 deletions
package-lock.json
package.json
src/components/viewer_s3m.vue
src/components/viewer_s3m_single.vue
src/components/viewer_tdt.vue
src/main.js
src/views/Home.vue
package-lock.json
View file @
a3c28ee
...
...
@@ -2410,6 +2410,14 @@
"integrity"
:
"sha1-3TeelPDbgxCwgpH51kwyCXZmF/0="
,
"dev"
:
true
},
"async-validator"
:
{
"version"
:
"1.8.5"
,
"resolved"
:
"https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz"
,
"integrity"
:
"sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA=="
,
"requires"
:
{
"babel-runtime"
:
"6.x"
}
},
"asynckit"
:
{
"version"
:
"0.4.0"
,
"resolved"
:
"https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz"
,
...
...
@@ -2536,6 +2544,11 @@
"resolve"
:
"^1.12.0"
}
},
"babel-helper-vue-jsx-merge-props"
:
{
"version"
:
"2.0.3"
,
"resolved"
:
"https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz"
,
"integrity"
:
"sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg=="
},
"babel-jest"
:
{
"version"
:
"24.9.0"
,
"resolved"
:
"https://registry.npm.taobao.org/babel-jest/download/babel-jest-24.9.0.tgz?cache=0&sync_timestamp=1566444289086&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbabel-jest%2Fdownload%2Fbabel-jest-24.9.0.tgz"
,
...
...
@@ -2638,7 +2651,6 @@
"version"
:
"6.26.0"
,
"resolved"
:
"https://registry.npm.taobao.org/babel-runtime/download/babel-runtime-6.26.0.tgz"
,
"integrity"
:
"sha1-llxwWGaOgrVde/4E/yM3vItWR/4="
,
"dev"
:
true
,
"requires"
:
{
"core-js"
:
"^2.4.0"
,
"regenerator-runtime"
:
"^0.11.0"
...
...
@@ -2647,14 +2659,12 @@
"core-js"
:
{
"version"
:
"2.6.10"
,
"resolved"
:
"https://registry.npm.taobao.org/core-js/download/core-js-2.6.10.tgz?cache=0&sync_timestamp=1575309477270&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcore-js%2Fdownload%2Fcore-js-2.6.10.tgz"
,
"integrity"
:
"sha1-iluDkfjMcBPacDQRzltYVwYwDX8="
,
"dev"
:
true
"integrity"
:
"sha1-iluDkfjMcBPacDQRzltYVwYwDX8="
},
"regenerator-runtime"
:
{
"version"
:
"0.11.1"
,
"resolved"
:
"https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz"
,
"integrity"
:
"sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk="
,
"dev"
:
true
"integrity"
:
"sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk="
}
}
},
...
...
@@ -5016,6 +5026,26 @@
"integrity"
:
"sha1-pvfhx5AlwrBYOOjjRPbonrgyE6g="
,
"dev"
:
true
},
"element-ui"
:
{
"version"
:
"2.13.0"
,
"resolved"
:
"https://registry.npmjs.org/element-ui/-/element-ui-2.13.0.tgz"
,
"integrity"
:
"sha512-KYsHWsBXYbLELS8cdfvgJTOMSUby3UEjvsPV1V1VmgJ/DdkOAS4z3MiOrPxrT9w2Cc5lZ4eVSQiGhYFR5NVChw=="
,
"requires"
:
{
"async-validator"
:
"~1.8.1"
,
"babel-helper-vue-jsx-merge-props"
:
"^2.0.0"
,
"deepmerge"
:
"^1.2.0"
,
"normalize-wheel"
:
"^1.0.1"
,
"resize-observer-polyfill"
:
"^1.5.0"
,
"throttle-debounce"
:
"^1.0.1"
},
"dependencies"
:
{
"deepmerge"
:
{
"version"
:
"1.5.2"
,
"resolved"
:
"https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz"
,
"integrity"
:
"sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ=="
}
}
},
"elliptic"
:
{
"version"
:
"6.5.2"
,
"resolved"
:
"https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.2.tgz"
,
...
...
@@ -9785,6 +9815,11 @@
"integrity"
:
"sha1-suHE3E98bVd0PfczpPWXjRhlBVk="
,
"dev"
:
true
},
"normalize-wheel"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz"
,
"integrity"
:
"sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU="
},
"npm-run-path"
:
{
"version"
:
"2.0.2"
,
"resolved"
:
"https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz?cache=0&sync_timestamp=1571055779038&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnpm-run-path%2Fdownload%2Fnpm-run-path-2.0.2.tgz"
,
...
...
@@ -11495,6 +11530,11 @@
"integrity"
:
"sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
,
"dev"
:
true
},
"resize-observer-polyfill"
:
{
"version"
:
"1.5.1"
,
"resolved"
:
"https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz"
,
"integrity"
:
"sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
},
"resolve"
:
{
"version"
:
"1.13.1"
,
"resolved"
:
"https://registry.npm.taobao.org/resolve/download/resolve-1.13.1.tgz"
,
...
...
@@ -12762,6 +12802,11 @@
"integrity"
:
"sha1-iQN8vJLFarGJJua6TLsgDhVnKmo="
,
"dev"
:
true
},
"throttle-debounce"
:
{
"version"
:
"1.1.0"
,
"resolved"
:
"https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz"
,
"integrity"
:
"sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg=="
},
"through"
:
{
"version"
:
"2.3.8"
,
"resolved"
:
"https://registry.npm.taobao.org/through/download/through-2.3.8.tgz"
,
...
...
package.json
View file @
a3c28ee
...
...
@@ -10,6 +10,7 @@
},
"dependencies"
:
{
"core-js"
:
"^3.4.3"
,
"element-ui"
:
"^2.13.0"
,
"vue"
:
"^2.6.10"
,
"vue-router"
:
"^3.1.3"
},
...
...
src/components/viewer_s3m.vue
View file @
a3c28ee
...
...
@@ -101,5 +101,16 @@ export default {
</
script
>
<
style
>
.sm-compass
{
pointer-events
:
auto
;
position
:
absolute
;
right
:
10px
;
top
:
70px
;
width
:
128px
;
height
:
128px
;
overflow
:
hidden
;
}
.sm-zoom
{
top
:
190px
;
}
</
style
>
...
...
src/components/viewer_s3m_single.vue
View file @
a3c28ee
<!--
* @Author: jiangbotao
* 本例中使用了铁岭的倾斜摄影数据发布的服务
* 1、必须同时发布为三维和Rest服务
* 2、使用要素查询方式来选择倾斜摄影覆盖面
* 3、使用Popup来弹出倾斜摄影覆盖面的信息
* @Date: 2019-12-03 22:52:56
* @LastEditors: jiangbotao
* @LastEditTime: 2019-12-0
4 23:31:19
* @LastEditTime: 2019-12-0
5 21:30:15
* @FilePath: \superglobevue\src\components\viewer.vue
-->
<
template
>
...
...
@@ -28,6 +32,14 @@
<div
class=
"circle4"
></div>
</div>
</div>
<!-- 气泡HTML -->
<div
id=
"bubble"
class=
"bubble"
style=
"bottom:0;left:82%;display:none;"
>
<div
id=
"tools"
style=
"text-align : right"
>
<span
style=
"color: rgb(95, 74, 121);padding: 5px;position: absolute;left: 10px;top: 4px;"
>
对象属性
</span>
<span
class=
"fui-cross"
title=
"关闭"
id=
"close"
style=
"color: darkgrey;padding:5px"
></span>
</div>
<div
style=
"overflow-y:scroll;height:150px"
id=
"tableContainer"
><table
id=
"tab"
></table></div>
</div>
</div>
</
template
>
...
...
@@ -52,6 +64,7 @@ export default {
},
mounted
:
function
()
{
this
.
viewer
=
new
Cesium
.
Viewer
(
"cesiumContainer"
,
{
navigationInstructionsInitiallyVisible
:
false
});
// 使用自定义的navigation
var
options
=
{};
options
.
enableCompass
=
true
;
options
.
enableZoomControls
=
true
;
...
...
@@ -67,21 +80,8 @@ export default {
var
scene
=
this
.
viewer
.
scene
;
var
widget
=
this
.
viewer
.
cesiumWidget
;
var
camera
=
scene
.
camera
;
var
handler
=
new
Cesium
.
ScreenSpaceEventHandler
(
this
.
viewer
.
canvas
);
handler
.
setInputAction
(
function
(
e
)
{
smviewer
.
entities
.
removeById
(
'identify-area'
);
var
position
=
scene
.
pickPosition
(
e
.
position
);
var
cartographic
=
Cesium
.
Cartographic
.
fromCartesian
(
position
);
var
longitude
=
Cesium
.
Math
.
toDegrees
(
cartographic
.
longitude
);
var
latitude
=
Cesium
.
Math
.
toDegrees
(
cartographic
.
latitude
);
var
queryPoint
=
{
// 查询点对象
x
:
longitude
,
y
:
latitude
};
console
.
log
(
queryPoint
);
queryByPoint
(
queryPoint
);
},
Cesium
.
ScreenSpaceEventType
.
LEFT_CLICK
);
// 场景位置,用于popup定位
var
scenePosition
=
null
;
try
{
var
promise2
=
scene
.
addS3MTilesLayerByScp
(
"http://www.supermapol.com/realspace/services/3D-dynamicDTH/rest/realspace/datas/Config%20-%201/config"
,
...
...
@@ -107,7 +107,42 @@ export default {
var
dataSourceName
=
'铁岭矢量面'
;
// 数据源名称
var
dataSetName
=
'New_Region3D_1'
;
// 数据集名称
var
dataServiceUrl
=
'http://www.supermapol.com/realspace/services/data-dynamicDTH/rest/data/featureResults.rjson?returnContent=true'
;
var
infoboxContainer
=
document
.
getElementById
(
"bubble"
);
var
table
=
document
.
getElementById
(
"tab"
);
// 鼠标左键的触发事件,查询要素并弹出显示
var
handler
=
new
Cesium
.
ScreenSpaceEventHandler
(
this
.
viewer
.
canvas
);
handler
.
setInputAction
(
function
(
e
)
{
smviewer
.
entities
.
removeById
(
'identify-area'
);
var
position
=
scene
.
pickPosition
(
e
.
position
);
// 设置场景位置
scenePosition
=
position
;
var
cartographic
=
Cesium
.
Cartographic
.
fromCartesian
(
position
);
var
longitude
=
Cesium
.
Math
.
toDegrees
(
cartographic
.
longitude
);
var
latitude
=
Cesium
.
Math
.
toDegrees
(
cartographic
.
latitude
);
var
queryPoint
=
{
// 查询点对象
x
:
longitude
,
y
:
latitude
};
// console.log(queryPoint);
queryByPoint
(
queryPoint
);
},
Cesium
.
ScreenSpaceEventType
.
LEFT_CLICK
);
$
(
"#close"
).
click
(
function
(){
// 关闭气泡
$
(
"#bubble"
).
hide
();
});
// 每一帧都去计算气泡的正确位置
scene
.
postRender
.
addEventListener
(
function
(){
if
(
scenePosition
)
{
var
canvasHeight
=
scene
.
canvas
.
height
;
var
windowPosition
=
new
Cesium
.
Cartesian2
();
Cesium
.
SceneTransforms
.
wgs84ToWindowCoordinates
(
scene
,
scenePosition
,
windowPosition
);
infoboxContainer
.
style
.
bottom
=
(
canvasHeight
-
windowPosition
.
y
+
45
)
+
'px'
;
infoboxContainer
.
style
.
left
=
(
windowPosition
.
x
-
70
)
+
'px'
;
infoboxContainer
.
style
.
visibility
=
"visible"
;
}
});
// 通过点击查询用于表示单体化的面要素,添加到场景中高亮显示。
function
queryByPoint
(
queryPoint
)
{
var
queryObj
=
{
...
...
@@ -130,7 +165,20 @@ export default {
success
:
function
(
result
)
{
var
resultObj
=
JSON
.
parse
(
result
);
if
(
resultObj
.
featureCount
>
0
)
{
addClapFeature
(
resultObj
.
features
[
0
]);
var
selectedFeature
=
resultObj
.
features
[
0
];
addClapFeature
(
selectedFeature
);
console
.
log
(
selectedFeature
);
$
(
"#bubble"
).
show
();
for
(
var
i
=
table
.
rows
.
length
-
1
;
i
>-
1
;
i
--
){
table
.
deleteRow
(
i
);
}
for
(
var
index
in
selectedFeature
.
fieldNames
){
var
newRow
=
table
.
insertRow
();
var
cell1
=
newRow
.
insertCell
();
var
cell2
=
newRow
.
insertCell
();
cell1
.
innerHTML
=
selectedFeature
.
fieldNames
[
index
];
cell2
.
innerHTML
=
selectedFeature
.
fieldValues
[
index
];
}
}
},
error
:
function
(
msg
)
{
...
...
@@ -168,9 +216,13 @@ export default {
<
style
>
.compass
{
top
:
1
0px
;
top
:
6
0px
;
}
.navigation-controls
{
top
:
120px
;
top
:
180px
;
}
.bubble
{
padding
:
10px
;
border-radius
:
10px
;
}
</
style
>
...
...
src/components/viewer_tdt.vue
View file @
a3c28ee
...
...
@@ -4,7 +4,7 @@
* 2、添加了超图发布的矢量瓦片服务
* @Date: 2019-12-02 09:05:50
* @LastEditors: jiangbotao
* @LastEditTime: 2019-12-0
4 22:37:19
* @LastEditTime: 2019-12-0
5 13:14:46
* @FilePath: \WebGL_Webpack_Vue\components\viewer.vue
-->
<
template
>
...
...
@@ -90,5 +90,16 @@ export default {
</
script
>
<
style
>
.sm-compass
{
pointer-events
:
auto
;
position
:
absolute
;
right
:
10px
;
top
:
70px
;
width
:
128px
;
height
:
128px
;
overflow
:
hidden
;
}
.sm-zoom
{
top
:
190px
;
}
</
style
>
\ No newline at end of file
...
...
src/main.js
View file @
a3c28ee
/*
* @Author: jiangbotao
* @Date: 2019-12-03 22:31:08
* @LastEditors: jiangbotao
* @LastEditTime: 2019-12-05 11:16:09
* @FilePath: \superglobevue\src\main.js
*/
import
Vue
from
'vue'
import
ElementUI
from
'element-ui'
import
'element-ui/lib/theme-chalk/index.css'
import
App
from
'./App.vue'
import
router
from
'./router'
Vue
.
config
.
productionTip
=
false
Vue
.
use
(
ElementUI
)
new
Vue
({
router
,
...
...
src/views/Home.vue
View file @
a3c28ee
...
...
@@ -2,13 +2,66 @@
* @Author: jiangbotao
* @Date: 2019-12-03 22:31:08
* @LastEditors: jiangbotao
* @LastEditTime: 2019-12-05
10:46:1
3
* @LastEditTime: 2019-12-05
21:29:5
3
* @FilePath: \superglobevue\src\views\Home.vue
-->
<
template
>
<div
id=
"map"
>
<viewer></viewer>
</div>
<el-container
style=
"height: 100%; border: 1px solid #eee"
>
<el-container>
<el-header
style=
"text-align: left; font-size: 28px"
>
<i
class=
"el-icon-map-location"
></i>
三维
</el-header>
<el-main>
<el-aside
width=
"66px"
style=
"background-color: white"
>
<el-menu
default-active=
"1-4-1"
class=
"el-menu-vertical-demo"
:collapse=
"isCollapse"
>
<el-submenu
index=
"1"
>
<template
slot=
"title"
>
<i
class=
"el-icon-location"
></i>
<span
slot=
"title"
>
地图操作
</span>
</
template
>
<el-menu-item-group>
<span
slot=
"title"
>
分组一
</span>
<el-menu-item
index=
"1-1"
>
选项1
</el-menu-item>
<el-menu-item
index=
"1-2"
>
选项2
</el-menu-item>
</el-menu-item-group>
<el-menu-item-group
title=
"分组2"
>
<el-menu-item
index=
"1-3"
>
选项3
</el-menu-item>
</el-menu-item-group>
<el-submenu
index=
"1-4"
>
<span
slot=
"title"
>
选项4
</span>
<el-menu-item
index=
"1-4-1"
>
选项1
</el-menu-item>
</el-submenu>
</el-submenu>
<el-menu-item
index=
"2"
>
<i
class=
"el-icon-menu"
></i>
<span
slot=
"title"
>
空间查询
</span>
</el-menu-item>
<el-submenu
index=
"3"
>
<
template
slot=
"title"
>
<i
class=
"el-icon-location"
></i>
<span
slot=
"title"
>
地图操作
</span>
</
template
>
<el-menu-item-group>
<span
slot=
"title"
>
分组一
</span>
<el-menu-item
index=
"3-1"
>
淹没分析
</el-menu-item>
<el-menu-item
index=
"3-2"
>
选项2
</el-menu-item>
</el-menu-item-group>
<el-menu-item-group
title=
"分组2"
>
<el-menu-item
index=
"3-3"
>
选项3
</el-menu-item>
</el-menu-item-group>
<el-submenu
index=
"3-4"
>
<span
slot=
"title"
>
选项4
</span>
<el-menu-item
index=
"3-4-1"
>
选项1
</el-menu-item>
</el-submenu>
</el-submenu>
</el-menu>
</el-aside>
<div
id=
"map"
>
<viewer></viewer>
</div>
</el-main>
</el-container>
</el-container>
</template>
<
script
>
...
...
@@ -16,8 +69,41 @@ import viewer from "@/components/viewer_s3m_single.vue";
export
default
{
name
:
"home"
,
data
()
{
return
{
isCollapse
:
true
};
},
components
:
{
viewer
}
};
</
script
>
<
style
scoped
>
.el-header
{
padding
:
12px
20px
;
-webkit-box-sizing
:
border-box
;
box-sizing
:
border-box
;
-ms-flex-negative
:
0
;
flex-shrink
:
0
;
position
:
absolute
;
z-index
:
99
;
background-color
:
white
;
width
:
100%
;
margin-top
:
-1px
;
border-bottom
:
red
;
border-bottom-style
:
solid
;
border-bottom-width
:
2px
;
}
.el-aside
{
width
:
200px
;
position
:
absolute
;
height
:
100%
;
z-index
:
98
;
margin-top
:
39px
;
margin-left
:
-20px
;
background-color
:
white
;
/* background-color: rgb(238, 241, 246); */
}
</
style
>
...
...
Please
register
or
sign in
to post a comment