// // CircleMember.swift // QuickLocation // import Foundation import CoreLocation struct CircleMember { let id: String let name: String let avatar: String let isOnline: Bool let isOwner: Bool let coordinate: CLLocationCoordinate2D let address: String let heading: Double let lastUpdateText: String var isCurrentUser: Bool { id == "current" } } extension CircleMember { /// 从 GroupMemberModel 创建地图标注数据 init(member: GroupMemberModel, isOwner: Bool) { id = member.user_id name = member.nick_name avatar = member.head_pic isOnline = member.is_online self.isOwner = isOwner let (coord, addr) = Self.parsePosition(member.last_position) coordinate = coord address = addr heading = 0 lastUpdateText = member.is_online ? "在线" : "离线" } /// 解析 last_position:格式 "lat:lng:address" private static func parsePosition(_ position: String) -> (CLLocationCoordinate2D, String) { guard !position.isEmpty else { return (kCLLocationCoordinate2DInvalid, "") } let parts = position.components(separatedBy: ":") guard parts.count >= 2, let lat = Double(parts[0]), let lng = Double(parts[1]), CLLocationCoordinate2DIsValid(CLLocationCoordinate2D(latitude: lat, longitude: lng)) else { return (kCLLocationCoordinate2DInvalid, "") } let addr = parts.count >= 3 ? parts[2] : "" return (CLLocationCoordinate2D(latitude: lat, longitude: lng), addr) } }