Dimitris Togias

add initial map view controller

...@@ -33,6 +33,8 @@ ...@@ -33,6 +33,8 @@
33 A07936762885E9CC00064122 /* UIColorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A07936752885E9CC00064122 /* UIColorExtensions.swift */; }; 33 A07936762885E9CC00064122 /* UIColorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A07936752885E9CC00064122 /* UIColorExtensions.swift */; };
34 A079367C2885F2F500064122 /* AnalysisHeaderViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079367B2885F2F500064122 /* AnalysisHeaderViewCell.swift */; }; 34 A079367C2885F2F500064122 /* AnalysisHeaderViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079367B2885F2F500064122 /* AnalysisHeaderViewCell.swift */; };
35 A079367E2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079367D2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift */; }; 35 A079367E2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A079367D2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift */; };
36 + A080CFD628D170A20045A315 /* MapsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A080CFD428D170A20045A315 /* MapsViewController.swift */; };
37 + A080CFD728D170A20045A315 /* MapsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A080CFD528D170A20045A315 /* MapsViewController.xib */; };
36 A09DBCAE2888BA8100DD50B0 /* SharingHistoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A09DBCAD2888BA8100DD50B0 /* SharingHistoryViewController.swift */; }; 38 A09DBCAE2888BA8100DD50B0 /* SharingHistoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A09DBCAD2888BA8100DD50B0 /* SharingHistoryViewController.swift */; };
37 E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */ = {isa = PBXBuildFile; fileRef = E6A77852282933340045BBA8 /* SwiftWarplyFramework.docc */; }; 39 E6A77853282933340045BBA8 /* SwiftWarplyFramework.docc in Sources */ = {isa = PBXBuildFile; fileRef = E6A77852282933340045BBA8 /* SwiftWarplyFramework.docc */; };
38 E6A77854282933340045BBA8 /* SwiftWarplyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = E6A77851282933340045BBA8 /* SwiftWarplyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; }; 40 E6A77854282933340045BBA8 /* SwiftWarplyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = E6A77851282933340045BBA8 /* SwiftWarplyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; };
...@@ -187,6 +189,8 @@ ...@@ -187,6 +189,8 @@
187 A07936752885E9CC00064122 /* UIColorExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorExtensions.swift; sourceTree = "<group>"; }; 189 A07936752885E9CC00064122 /* UIColorExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorExtensions.swift; sourceTree = "<group>"; };
188 A079367B2885F2F500064122 /* AnalysisHeaderViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisHeaderViewCell.swift; sourceTree = "<group>"; }; 190 A079367B2885F2F500064122 /* AnalysisHeaderViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisHeaderViewCell.swift; sourceTree = "<group>"; };
189 A079367D2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisHeaderMessageViewCell.swift; sourceTree = "<group>"; }; 191 A079367D2885F60A00064122 /* AnalysisHeaderMessageViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnalysisHeaderMessageViewCell.swift; sourceTree = "<group>"; };
192 + A080CFD428D170A20045A315 /* MapsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapsViewController.swift; sourceTree = "<group>"; };
193 + A080CFD528D170A20045A315 /* MapsViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MapsViewController.xib; sourceTree = "<group>"; };
190 A09DBCAD2888BA8100DD50B0 /* SharingHistoryViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharingHistoryViewController.swift; sourceTree = "<group>"; }; 194 A09DBCAD2888BA8100DD50B0 /* SharingHistoryViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharingHistoryViewController.swift; sourceTree = "<group>"; };
191 A9B7BE01A4E812DE49866EF8 /* Pods-SwiftWarplyFramework.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.debug.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.debug.xcconfig"; sourceTree = "<group>"; }; 195 A9B7BE01A4E812DE49866EF8 /* Pods-SwiftWarplyFramework.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.debug.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.debug.xcconfig"; sourceTree = "<group>"; };
192 B9EB8A451EF0C5AD75094EEE /* Pods-SwiftWarplyFramework.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.release.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.release.xcconfig"; sourceTree = "<group>"; }; 196 B9EB8A451EF0C5AD75094EEE /* Pods-SwiftWarplyFramework.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwiftWarplyFramework.release.xcconfig"; path = "Target Support Files/Pods-SwiftWarplyFramework/Pods-SwiftWarplyFramework.release.xcconfig"; sourceTree = "<group>"; };
...@@ -400,6 +404,13 @@ ...@@ -400,6 +404,13 @@
400 name = cells; 404 name = cells;
401 sourceTree = "<group>"; 405 sourceTree = "<group>";
402 }; 406 };
407 + A080CFD828D17F7A0045A315 /* controls */ = {
408 + isa = PBXGroup;
409 + children = (
410 + );
411 + name = controls;
412 + sourceTree = "<group>";
413 + };
403 C049E0423E2B72D796B777A3 /* Pods */ = { 414 C049E0423E2B72D796B777A3 /* Pods */ = {
404 isa = PBXGroup; 415 isa = PBXGroup;
405 children = ( 416 children = (
...@@ -433,9 +444,12 @@ ...@@ -433,9 +444,12 @@
433 1E108A9728A3FA9B0008B8E7 /* Info.plist */, 444 1E108A9728A3FA9B0008B8E7 /* Info.plist */,
434 1E108A8B28A3F8FF0008B8E7 /* Resources */, 445 1E108A8B28A3F8FF0008B8E7 /* Resources */,
435 A02F34042882B6E60086465F /* TelcoViewController.swift */, 446 A02F34042882B6E60086465F /* TelcoViewController.swift */,
447 + A080CFD828D17F7A0045A315 /* controls */,
436 A07936712885E65C00064122 /* models */, 448 A07936712885E65C00064122 /* models */,
437 A079366A2885CDDC00064122 /* analysis */, 449 A079366A2885CDDC00064122 /* analysis */,
438 A07936742885E96A00064122 /* utilities */, 450 A07936742885E96A00064122 /* utilities */,
451 + A080CFD428D170A20045A315 /* MapsViewController.swift */,
452 + A080CFD528D170A20045A315 /* MapsViewController.xib */,
439 E6A7785E282933E40045BBA8 /* CouponsViewController.swift */, 453 E6A7785E282933E40045BBA8 /* CouponsViewController.swift */,
440 1EA1AF092835346A008998AA /* CouponsTableViewCell.swift */, 454 1EA1AF092835346A008998AA /* CouponsTableViewCell.swift */,
441 E6A7785D282933E40045BBA8 /* CouponViewController.swift */, 455 E6A7785D282933E40045BBA8 /* CouponViewController.swift */,
...@@ -814,6 +828,7 @@ ...@@ -814,6 +828,7 @@
814 E6A778E5282933E60045BBA8 /* Main.storyboard in Resources */, 828 E6A778E5282933E60045BBA8 /* Main.storyboard in Resources */,
815 1E108A9628A3F9280008B8E7 /* pf_square_sans_pro_bold.ttf in Resources */, 829 1E108A9628A3F9280008B8E7 /* pf_square_sans_pro_bold.ttf in Resources */,
816 1E108A9228A3F9280008B8E7 /* pf_square_sans_pro_regular.ttf in Resources */, 830 1E108A9228A3F9280008B8E7 /* pf_square_sans_pro_regular.ttf in Resources */,
831 + A080CFD728D170A20045A315 /* MapsViewController.xib in Resources */,
817 E6A778EA282933E60045BBA8 /* WLNativeVideoTableViewCell.xib in Resources */, 832 E6A778EA282933E60045BBA8 /* WLNativeVideoTableViewCell.xib in Resources */,
818 1E108A9528A3F9280008B8E7 /* pf_square_sans_pro_bold_italic.ttf in Resources */, 833 1E108A9528A3F9280008B8E7 /* pf_square_sans_pro_bold_italic.ttf in Resources */,
819 E6A7790A282933E60045BBA8 /* warp_white_close_button.png in Resources */, 834 E6A7790A282933E60045BBA8 /* warp_white_close_button.png in Resources */,
...@@ -925,6 +940,7 @@ ...@@ -925,6 +940,7 @@
925 E6A7794A282933E70045BBA8 /* FMDatabaseAdditions.m in Sources */, 940 E6A7794A282933E70045BBA8 /* FMDatabaseAdditions.m in Sources */,
926 E6A77903282933E60045BBA8 /* WLAPSItem.m in Sources */, 941 E6A77903282933E60045BBA8 /* WLAPSItem.m in Sources */,
927 E6A7790B282933E60045BBA8 /* WLPushManager.m in Sources */, 942 E6A7790B282933E60045BBA8 /* WLPushManager.m in Sources */,
943 + A080CFD628D170A20045A315 /* MapsViewController.swift in Sources */,
928 A079366E2885D07700064122 /* AnalysisChildViewController.swift in Sources */, 944 A079366E2885D07700064122 /* AnalysisChildViewController.swift in Sources */,
929 E6A77950282933E70045BBA8 /* FMResultSet.m in Sources */, 945 E6A77950282933E70045BBA8 /* FMResultSet.m in Sources */,
930 E6A77936282933E70045BBA8 /* AFAutoPurgingImageCache.m in Sources */, 946 E6A77936282933E70045BBA8 /* AFAutoPurgingImageCache.m in Sources */,
......
1 +//
2 +// MapsViewController.swift
3 +// SwiftWarplyFramework
4 +//
5 +// Created by Βασιλης Σκουρας on 14/9/22.
6 +//
7 +
8 +import UIKit
9 +import MapKit
10 +
11 +class MapsViewController: UIViewController, MKMapViewDelegate {
12 +
13 + // ui
14 + @IBOutlet private var mapView: MKMapView!
15 +
16 + @IBOutlet private var titleView: UILabel!
17 + @IBOutlet private var nameImageView: UIImageView!
18 + @IBOutlet private var nameView: UILabel!
19 + @IBOutlet private var hoursView: UILabel!
20 + @IBOutlet private var phoneView: UILabel!
21 + @IBOutlet private var addressView: UILabel!
22 + @IBOutlet private var directionsButton: UIButton!
23 + @IBOutlet private var infoTopConstraint: NSLayoutConstraint!
24 +
25 + // public
26 + public var couponSet: swiftApi.CouponSetItemModel?
27 + var merchantsArray:Array<swiftApi.MerchantModel> = []
28 +
29 + //
30 + var loading: Bool = false
31 + let initialLocation = CLLocation(latitude: 38.0689416, longitude: 19.9906012) // greece
32 +
33 + //
34 + override func viewDidLoad() {
35 + super.viewDidLoad()
36 +
37 + self.hidesBottomBarWhenPushed = true
38 +
39 + self.infoTopConstraint.constant = 0
40 +
41 + setBackButton("ic_close")
42 + //setNavigationTitle(ccms?._titleOffer ?? "")
43 +
44 + mapView.delegate = self
45 + mapView.centerToLocation(initialLocation)
46 +
47 + //directionsButton.titleLabel?.font = UIFont(name: "PFSquareSansPro-Medium", size: 16)
48 + directionsButton.setTitle("Οδηγίες", for: .normal)
49 + directionsButton.setTitleColor(.white, for: .normal)
50 + directionsButton.backgroundColor = UIColor(red: 0.47, green: 0.75, blue: 0.08, alpha: 1.00)
51 + directionsButton.layer.cornerRadius = 12.0
52 + }
53 +
54 + // mvp
55 + @objc func load() {
56 +
57 + if (loading) {
58 + return;
59 + }
60 +
61 + showLoading()
62 +
63 + // TODO: adapt params
64 + let merchantUuid: String = couponSet!.merchant_uuid!
65 + swiftApi().getMultilingualMerchantsAsync([], false, 0.0, [], "", 0, [merchantUuid], getMerchantsCallback)
66 + showContent()
67 + }
68 +
69 + func getMerchantsCallback (_ merchantsData: Array<swiftApi.MerchantModel>?) -> Void {
70 + if (merchantsData != nil) {
71 + DispatchQueue.main.async {
72 + self.merchantsArray = merchantsData!
73 + self.loadMapPins()
74 + }
75 +
76 + return
77 + }
78 + }
79 +
80 + private func showLoading() {
81 +
82 + loading = true
83 + }
84 +
85 + private func showError() {
86 + }
87 +
88 + private func showContent() {
89 +
90 + loading = false
91 + }
92 +
93 + // private
94 + @IBAction func closeButtomAction(_ sender: Any) {
95 + hidePinDetailsView()
96 + }
97 +
98 + private func loadMapPins() {
99 + for item in merchantsArray {
100 + let pin = MKPointAnnotation()
101 + pin.coordinate = CLLocationCoordinate2D(latitude: item._latitude, longitude: item._longitude)
102 + mapView.addAnnotation(pin)
103 + }
104 + }
105 +
106 + private func loadPinDetailsView() {
107 + self.titleView.text = "INTERSPORT"
108 + self.nameImageView.image = UIImage(named: "intersport")
109 + self.nameView.text = "Intersport Χαλάνδρι"
110 + self.hoursView.text = "Δευτέρα - Τετάρτη"
111 + self.phoneView.text = "210-6230453"
112 + self.addressView.text = "ΕΘΝΙΚΗΣ ΑΝΤΙΣΤΑΣΕΩΝ 4 41"
113 + }
114 +
115 + private func showPinDetailsView() {
116 + self.infoTopConstraint.constant = -320
117 + UIView.animate(withDuration: 2.0) {
118 + self.view.layoutIfNeeded()
119 + }
120 + }
121 +
122 + private func hidePinDetailsView() {
123 + self.infoTopConstraint.constant = 0
124 + UIView.animate(withDuration: 2.0) {
125 + self.view.layoutIfNeeded()
126 + }
127 + }
128 +
129 + // map view delegate
130 + func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
131 + guard !(annotation is MKUserLocation) else {
132 + return nil
133 + }
134 +
135 + var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: "warply_custom")
136 + if (annotationView == nil) {
137 + annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: "warply_custom")
138 + annotationView?.canShowCallout = false
139 + } else {
140 + annotationView?.annotation = annotation
141 + }
142 +
143 + // TODO: add custom pin image?
144 + annotationView?.image = UIImage(named: "custom")
145 +
146 + return annotationView
147 + }
148 +
149 + func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
150 + loadPinDetailsView()
151 + showPinDetailsView()
152 + }
153 +
154 + func mapView(_ mapView: MKMapView, didDeselect view: MKAnnotationView) {
155 + hidePinDetailsView()
156 + }
157 +}
158 +
159 +private extension MKMapView {
160 +
161 + func centerToLocation(_ location: CLLocation, regionRadius: CLLocationDistance = 1000) {
162 + let coordinateRegion = MKCoordinateRegion(
163 + center: location.coordinate,
164 + latitudinalMeters: regionRadius,
165 + longitudinalMeters: regionRadius)
166 + setRegion(coordinateRegion, animated: true)
167 + }
168 +}
This diff is collapsed. Click to expand it.