Skip to content

Instantly share code, notes, and snippets.

@ming-chu
Last active February 14, 2019 01:14
Show Gist options
  • Save ming-chu/b1b4c505fd5d0f9079ab94211000ef29 to your computer and use it in GitHub Desktop.
Save ming-chu/b1b4c505fd5d0f9079ab94211000ef29 to your computer and use it in GitHub Desktop.
Just the Shop Object Structure
struct Shop: Codable {
struct MapMarker: Codable {
var id: Int
var description: String
var imagePath: String
var created_at: String?
var updated_at: String?
}
struct Tag: Codable {
var id: Int
var title: String
var bgColor: String
var textColor: String
}
struct TelNumber: Codable {
var id: Int
var telNumber: String
var type: String?
}
struct Link: Codable {
var id: Int
var link: String
}
var id: Int
var nameEn: String?
var nameTw: String?
var nameZhsc: String?
var addrEn: String?
var addrTw: String?
var addrZhsc: String?
var lat: Double
var lon: Double
var remarkEn: String?
var remarkTw: String?
var remarkZhsc: String?
var shopPhotoPath: String?
var shopPhotoLargePath: String?
var created_at: String?
var updated_at: String?
var openingTime: String?
var mapMarker: MapMarker
var tags: [Tag]
var telNumbers: [TelNumber]
var links: [Link]
var shopLocation: CLLocation {
return CLLocation(latitude: self.lat, longitude: self.lon)
}
var tagsCSV: String {
return self.tags.map({ $0.title }).joined(separator: ",")
}
func calculateDistanceInMeters(from location: CLLocation?) -> Double {
guard let location = location else { return 0 }
let distanceInMeters = location.distance(from: self.shopLocation)
let displayDistanceInMeters = (distanceInMeters/1000.0).roundToDecimal(1)
return displayDistanceInMeters
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment