jsdw_ios/QuickLocation/Section/Map/CircleMember.swift

52 lines
1.6 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// 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)
}
}