Commit 3e884b08 authored by 郭铭瑶's avatar 郭铭瑶 🤘

添加gis图层展示

parent 70ae8115
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -6,10 +6,10 @@
<link rel="icon" href="./favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>静安智慧房管</title>
<script type="module" crossorigin src="./assets/index.203cae49.js"></script>
<script type="module" crossorigin src="./assets/index.b412d033.js"></script>
<link rel="modulepreload" href="./assets/vendor.d8be57b6.js">
<link rel="stylesheet" href="./assets/vendor.db35e2cd.css">
<link rel="stylesheet" href="./assets/index.00cfd82e.css">
<link rel="stylesheet" href="./assets/index.654526b7.css">
</head>
<body>
......
......@@ -24,4 +24,5 @@ export default {
EXPAND_INFO:
'/service-basicdatasync-ddd/public/tbl_community/entity/{id}/ext', // 小区拓展信息
ELEVATOR: '/service-special-ja-ddd/public/elevatorInstallationInfos', // 电梯
GIS: '/service-special-ja-ddd/public/giss', // gis点位
}
......@@ -61,7 +61,7 @@ const btns = computed(() => [
hidden: props.onlyOneView,
tip: '展示屏配置',
},
// { key: 'btn6', icon: btn6 },
{ key: 'gis', icon: btn6, tip: 'gis展示' },
{ key: 'reset', icon: btn8, tip: '重置' },
])
const onClick = (key: string) => {
......
......@@ -17,6 +17,7 @@ defineExpose({
zoomTo,
focus,
addPoints,
addPolygon,
remove,
setCommunityPoints,
})
......@@ -47,7 +48,7 @@ onMounted(async () => {
})
function onComplete() {
polygonLayer = map.add('polygon', {
polygonLayer = addPolygon({
data: {
path: jinganPath as [number, number][],
},
......@@ -101,6 +102,10 @@ function addPoints(options) {
// })
}
function addPolygon(options) {
return map.add('polygon', options)
}
function remove(layer) {
layer && map.remove(layer)
}
......
......@@ -22,7 +22,14 @@
</m-animate>
</div>
</m-grid>
<m-modal v-model="showModal" title="选择展示屏">
</div>
<MapBtns
:full-screen="fullScreen"
:is-default-screen="isDefaultScreen"
:only-one-view="onlyOneView"
@touch="handleMapBtnsEvents"
/>
<m-modal v-model="showModal" title="选择展示屏配置">
<div class="list-content">
<div v-for="item in list" :key="item.id" class="item">
<p :title="item.configName">{{ item.configName }}</p>
......@@ -39,13 +46,22 @@
</div>
</div>
</m-modal>
<m-modal v-model="showGisModal" title="选择GIS图层">
<div class="list-content">
<div v-for="item in gisTypes" :key="item.value" class="item">
<p :title="item.name">{{ item.name }}</p>
<n-button
size="tiny"
type="info"
ghost
dashed
@click="switchGisView(item.value)"
>
查看
</n-button>
</div>
<MapBtns
:full-screen="fullScreen"
:is-default-screen="isDefaultScreen"
:only-one-view="onlyOneView"
@touch="handleMapBtnsEvents"
/>
</div>
</m-modal>
<m-modal v-model="showCommunityDrawer" title="小区档案" width="80%">
<CommunityInfo :info="communityDetail" />
</m-modal>
......@@ -82,6 +98,7 @@ import c4 from '@/assets/images/c4.png'
import c5 from '@/assets/images/c5.png'
import c6 from '@/assets/images/c6.png'
import CommunityIcon from '@/assets/images/init-point.png'
import GisIcon from '@/assets/images/gis-icon.png'
const mapRef = shallowRef<any>(null)
const { layout } = useLayout()
......@@ -138,6 +155,63 @@ function switchDataView({ id, configJson }) {
const fullScreen = ref(false)
const showSearchModal = ref(false)
const gisTypes = ref([
{ name: '房屋安全排查结果', value: 'houseSecurity' },
{ name: '多层住宅电梯加装', value: 'multiHouseElevetor' },
{ name: '新盘清单', value: 'newHouse' },
{ name: '市政道路', value: 'cityRoad' },
{ name: '公益性设施', value: 'commonWealth' },
{ name: '公租房', value: 'publicRentalHouse' },
])
const showGisModal = ref(false)
let polygonLayers: any[] = []
const switchGisView = (gisType: string) => {
ajax
.get({
url: api.GIS,
params: {
gisType,
pageSize: 9000,
},
})
.then((res) => {
const { content = [] } = res?.data || {}
if (gisType === 'cityRoad') {
addPoints(null) // 清理之前点位
polygonLayers = content.map((item) =>
mapRef.value?.addPolygon({
data: {
path:
(item.gisPoint && JSON.parse(item.gisPoint))?.map((p) => [
p.x,
p.y,
]) || [],
},
fillColor: 'transparent',
color: '#F7933E',
lineWidth: 1,
}),
)
} else {
addPoints({
data: content.map((item) => {
const { x, y } =
(item.gisPointSingle && JSON.parse(item.gisPointSingle)) || {}
return {
id: item.id,
gisType: item.gisType,
x,
y,
}
}),
icon: GisIcon,
size: 16,
})
}
showGisModal.value = false
})
}
function handleMapBtnsEvents(key: string) {
switch (key) {
case 'list':
......@@ -175,6 +249,9 @@ function handleMapBtnsEvents(key: string) {
onMapComplete()
mapRef.value?.setCommunityPoints()
break
case 'gis':
showGisModal.value = true
break
default:
break
}
......@@ -196,8 +273,12 @@ function onMapComplete() {
}
function addPoints(data) {
mapRef.value?.remove(pointsLayer)
pointsLayer = mapRef.value?.addPoints(data)
pointsLayer && mapRef.value?.remove(pointsLayer)
if (polygonLayers.length > 0) {
polygonLayers.forEach((layer) => mapRef.value?.remove(layer))
polygonLayers = []
}
pointsLayer = data && mapRef.value?.addPoints(data)
mapRef.value?.focus([-1931.2637583608503, 4334.0159596985895], { zoom: 4 })
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment