<template>
	<view class="map-card">
		<!-- 地图区域 -->
		<view class="map-container">
			<map 
				:latitude="latitude" 
				:longitude="longitude" 
				:markers="markers"
				:show-location="false"
				:enable-zoom="false"
				:enable-scroll="false"
				:enable-rotate="false"
				:enable-overlooking="false"
				:enable-traffic="false"
				class="map"
				@tap="onMapTap"
			></map>
		</view>
		
		<!-- 地址信息区域 -->
		<view class="address-container">
			<view class="address-name">{{ addressName }}</view>
			<view class="address-detail" v-if="addressDetail">{{ addressDetail }}</view>
		</view>
	</view>
</template>

<script>
export default {
	name: 'MapCard',
	props: {
		// 纬度
		latitude: {
			type: [Number, String],
			required: true,
			default: 39.908823
		},
		// 经度
		longitude: {
			type: [Number, String], 
			required: true,
			default: 116.397470
		},
		// 地址名称
		addressName: {
			type: String,
			required: true,
			default: '位置信息'
		},
		// 地址详情（可选）
		addressDetail: {
			type: String,
			default: ''
		},
		// 地图高度
		mapHeight: {
			type: [Number, String],
			default: 300
		},
		// 是否可点击
		clickable: {
			type: Boolean,
			default: true
		}
	},
	computed: {
		// 地图标记点
		markers() {
			return [{
				id: 1,
				latitude: Number(this.latitude),
				longitude: Number(this.longitude),
				iconPath: '/static/image/location-marker.svg',
				width: 30,
				height: 30,
				callout: {
					content: this.addressName,
					color: '#333333',
					fontSize: 12,
					borderRadius: 4,
					bgColor: '#ffffff',
					padding: 8,
					display: 'ALWAYS'
				}
			}]
		}
	},
	methods: {
		// 地图点击事件
		onMapTap() {
			if (this.clickable) {
				this.$emit('mapClick', {
					latitude: this.latitude,
					longitude: this.longitude,
					addressName: this.addressName
				});
				
				// 打开地图导航
				this.openLocation();
			}
		},
		
		// 打开地图导航
		openLocation() {
			uni.openLocation({
				latitude: Number(this.latitude),
				longitude: Number(this.longitude),
				name: this.addressName,
				address: this.addressDetail || this.addressName,
				success: () => {
					console.log('打开地图成功');
				},
				fail: (err) => {
					console.error('打开地图失败:', err);
					uni.showToast({
						title: '打开地图失败',
						icon: 'none'
					});
				}
			});
		}
	}
}
</script>

<style lang="scss" scoped>
.map-card {
	background: $uni-bg-color;
	border-radius: $uni-border-radius-lg;
	overflow: hidden;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
	margin: $uni-spacing-row-base;
}

.map-container {
	position: relative;
	height: 300rpx;
	
	.map {
		width: 100%;
		height: 100%;
	}
}

.address-container {
	padding: $uni-spacing-row-lg $uni-spacing-row-base;
	background: $uni-bg-color;
	
	.address-name {
		font-size: $uni-font-size-lg;
		color: $uni-text-color;
		font-weight: 500;
		margin-bottom: $uni-spacing-col-sm;
		line-height: 1.4;
	}
	
	.address-detail {
		font-size: $uni-font-size-sm;
		color: $uni-text-color-grey;
		line-height: 1.4;
	}
}

// 点击态效果
.map-card:active {
	background: $uni-bg-color-hover;
}
</style>