diff --git a/TIAppleMapUtils/Sources/ApplePlacemarkManager.swift b/TIAppleMapUtils/Sources/ApplePlacemarkManager.swift index 232c13df..b7167010 100644 --- a/TIAppleMapUtils/Sources/ApplePlacemarkManager.swift +++ b/TIAppleMapUtils/Sources/ApplePlacemarkManager.swift @@ -23,7 +23,7 @@ import TIMapUtils import MapKit -open class ApplePlacemarkManager: BasePlacemarkManager, +open class ApplePlacemarkManager: BaseItemPlacemarkManager, MKAnnotation { // MARK: - MKAnnotation @@ -36,12 +36,9 @@ open class ApplePlacemarkManager: BasePlacemarkManager: BasePlacemarkManager: BaseClusterPlacemarkManager Bool { diff --git a/TIGoogleMapUtils/Sources/GooglePlacemarkManager.swift b/TIGoogleMapUtils/Sources/GooglePlacemarkManager.swift index 6cc058e1..f8516274 100644 --- a/TIGoogleMapUtils/Sources/GooglePlacemarkManager.swift +++ b/TIGoogleMapUtils/Sources/GooglePlacemarkManager.swift @@ -24,19 +24,16 @@ import TIMapUtils import GoogleMaps import GoogleMapsUtils -open class GooglePlacemarkManager: BasePlacemarkManager, +open class GooglePlacemarkManager: BaseItemPlacemarkManager, GMUClusterItem { // MARK: - GMUClusterItem /// Point (coordinates) itself of the current placemark manager public var position: CLLocationCoordinate2D { - placemarkPosition ?? .init() + placemarkPosition } - /// Placemark itself of the current placemark manager - public private(set) var placemark: GMSMarker? - /// The current state of a manager's placemark override public var state: MarkerState { didSet { @@ -62,8 +59,7 @@ open class GooglePlacemarkManager: BasePlacemarkManager: BasePlacemarkManager where ItemPlacemarkManager.Position : Equatable { diff --git a/TIMapUtils/Sources/Managers/BaseItemPlacemarkManager.swift b/TIMapUtils/Sources/Managers/BaseItemPlacemarkManager.swift new file mode 100644 index 00000000..15f9b45a --- /dev/null +++ b/TIMapUtils/Sources/Managers/BaseItemPlacemarkManager.swift @@ -0,0 +1,43 @@ +// +// Copyright (c) 2023 Touch Instinct +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the Software), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +/** + Base single item placemark manager + + Contains all properties of `BasePlacemarkManager` and adds a `placemark` property to use + + - Parameters: + - Placemark: a placemark itself managed by an item placemark manager + - DataModel: a data model of a placemark which is used for configuration etc. + - Location: latitude and longitude of a placemark + */ +open class BaseItemPlacemarkManager: BasePlacemarkManager { + + /// Placemark itself of the current placemark manager + public private(set) var placemark: Placemark? + + override open func configure(placemark: Placemark) { + super.configure(placemark: placemark) + + self.placemark = placemark + } +} diff --git a/TIYandexMapUtils/Sources/YandexPlacemarkManager.swift b/TIYandexMapUtils/Sources/YandexPlacemarkManager.swift index 2e18e9e2..87ee3d62 100644 --- a/TIYandexMapUtils/Sources/YandexPlacemarkManager.swift +++ b/TIYandexMapUtils/Sources/YandexPlacemarkManager.swift @@ -23,12 +23,9 @@ import TIMapUtils import YandexMapsMobile -open class YandexPlacemarkManager: BasePlacemarkManager, +open class YandexPlacemarkManager: BaseItemPlacemarkManager, YMKMapObjectTapListener { - /// Placemark itself of the current placemark manager - public private(set) var placemark: YMKPlacemarkMapObject? - /// The current state of a manager's placemark override public var state: MarkerState { didSet { @@ -71,8 +68,9 @@ open class YandexPlacemarkManager: BasePlacemarkManager