A Swift library that extends MKMapView with custom callout views and annotation images, featuring smooth animations.
MapViewPlus is a Swift library that extends Apple's MapKit framework, adding delegate methods for custom annotation images and callout views. It solves the limitation of MKMapView's default callouts by allowing developers to use any UIView as a callout bubble and any UIImage as an annotation pin, with built-in animations and user interaction handling.
iOS developers building map-based applications who need highly customized annotation callouts beyond MapKit's default look and feel.
Developers choose MapViewPlus because it provides a clean, protocol-based API that simplifies MapKit customization, offers smooth animations, and forwards MapKit delegate methods for seamless integration without sacrificing native behavior.
Use any custom view as custom callout view for MKMapView with cool animations. Use any image as annotation view.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides a clean, native-feeling API that abstracts MapKit complexities, as shown in the delegate methods like imageForAnnotation and calloutViewForAnnotationView.
Allows any UIView for callouts and any UIImage for annotations without padding restrictions, enabling full design control as highlighted in the custom callout view setup.
Includes smooth animations for showing and hiding callouts from directions like top or bottom, enhancing UX without extra code, as detailed in the CalloutViewCustomizerDelegate.
Forwards all MKMapViewDelegate methods except viewForAnnotation, ensuring compatibility with existing MapKit code, as noted in the forwarding delegate methods section.
The default callout view template relies on Kingfisher for image downloading, adding an external dependency that may increase app size if not already used.
Limited to UIKit and MapKit, making it unsuitable for modern SwiftUI-based apps without complex bridging, which the README does not address.
Requires creating custom view models and callout views via xib or code, which can be verbose for simple annotations compared to vanilla MapKit callouts.