<!-- @format --> <template> <div> <NsGMap ref="nsGMap" @change="coordinates" v-bind="props" v-if="mapKey.type === 'gmap'" /> <NsTMap ref="nsTMap" @change="coordinates" v-bind="props" v-if="mapKey.type === 'tmap'" /> </div> </template> <script lang="ts"> export default { name: 'NsMap', }; </script> <script lang="ts" setup> import { ref, reactive, onMounted, useAttrs, computed } from 'vue'; import NsGMap from './mapV2.vue'; import NsTMap from './tmap.vue'; const nsGMap: any = ref(null); const nsTMap: any = ref(null); let mapKey = ref({ type: '', url: '', }); // console.log(useAttrs()); const props = defineProps({ titleName: { type: String, default: '位置信息', }, longitude: { type: String, default: '', }, latitude: { type: String, default: '', }, defaultAddress: { type: String, default: '', }, longLat: { type: Object, }, //新的写法 defaultValue: { type: Array, default: () => { return []; }, }, viewOnly: { type: Boolean, default: false, }, value: { type: Array, default: () => { return []; }, }, fieldMap: { type: Object || Array, default: () => { return []; }, }, formModel: { type: Object || Array, }, // ...useAttrs(), }); const getBindValue = computed(() => { return { ...props, ...useAttrs(), }; }); console.log(getBindValue); // emit const emit = defineEmits(['change']); const coordinates = (data: any) => { emit('change', [data[0], data[1], data[2]]); }; const getMapKey = () => { if (window.localStorage.getItem('mapKey')) { try { let mapobj = JSON.parse(window.localStorage.getItem('mapKey')); mapKey.value = mapobj; } catch (error) {} } else { mapKey.value = { type: 'gmap', url: '', }; } }; onMounted(() => { getMapKey(); }); </script>