Add enabled property to MGLShape (#12352)
* [ios, macos] Add -[MGLMapViewDelegate mapView:canSelectAnnotation:] method. * [ios, macos] Update changelogs. * [ios, macos] Add mapView:canSelect: integration tests. * [ios, macos] Change semantics to shape annotations. * [ios, macos] Update changelogs. * [ios, macos] Update shapeAnnotationIsEnabled documentation, improve code readability.
This commit is contained in:
committed by
Fabian Guerra Soto
parent
50059659d1
commit
7fc872b797
@@ -10,6 +10,7 @@ Mapbox welcomes participation and contributions from everyone. Please read [CONT
|
||||
* Fixed inconsistencies in exception naming. ([#12583](https://github.com/mapbox/mapbox-gl-native/issues/12583))
|
||||
* Added `MGLShapeOfflineRegion` for defining arbitrarily shaped offline regions [#11447](https://github.com/mapbox/mapbox-gl-native/pull/11447)
|
||||
* Added a one-time warning about possible attribute loss when initializing an `MGLShapeSource` with an `MGLShapeCollection` [#12625](https://github.com/mapbox/mapbox-gl-native/pull/12625)
|
||||
* Added an `-[MGLMapViewDelegate mapView:shapeAnnotationIsEnabled:]` method to specify whether an annotation is selectable. ([#12352](https://github.com/mapbox/mapbox-gl-native/pull/12352))
|
||||
|
||||
## 4.3.0 - August 15, 2018
|
||||
|
||||
|
||||
@@ -4183,7 +4183,11 @@ public:
|
||||
{
|
||||
if ([annotation isKindOfClass:[MGLMultiPoint class]])
|
||||
{
|
||||
return false;
|
||||
if ([self.delegate respondsToSelector:@selector(mapView:shapeAnnotationIsEnabled:)]) {
|
||||
return !!(![self.delegate mapView:self shapeAnnotationIsEnabled:(MGLMultiPoint *)annotation]);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
MGLAnnotationImage *annotationImage = [self imageOfAnnotationWithTag:annotationTag];
|
||||
|
||||
@@ -432,6 +432,18 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
#pragma mark Selecting Annotations
|
||||
|
||||
/**
|
||||
Returns a Boolean value indicating whether the shape annotation can be selected.
|
||||
|
||||
If the return value is `YES`, the user can select the annotation by tapping
|
||||
on it. If the delegate does not implement this method, the default value is `YES`.
|
||||
|
||||
@param mapView The map view that has selected the annotation.
|
||||
@param annotation The object representing the shape annotation.
|
||||
@return A Boolean value indicating whether the annotation can be selected.
|
||||
*/
|
||||
- (BOOL)mapView:(MGLMapView *)mapView shapeAnnotationIsEnabled:(MGLShape *)annotation;
|
||||
|
||||
/**
|
||||
Tells the delegate that one of its annotations was selected.
|
||||
|
||||
|
||||
@@ -58,6 +58,8 @@ extension MGLMapViewDelegateIntegrationTests: MGLMapViewDelegate {
|
||||
func mapView(_ mapView: MGLMapView, tapOnCalloutFor annotation: MGLAnnotation) {}
|
||||
|
||||
func mapViewDidFinishRenderingFrame(_ mapView: MGLMapView, fullyRendered: Bool) {}
|
||||
|
||||
func mapView(_ mapView: MGLMapView, shapeAnnotationIsEnabled annotation: MGLShape) -> Bool { return false }
|
||||
|
||||
func mapView(_ mapView: MGLMapView, didAdd annotationViews: [MGLAnnotationView]) {}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
* The `-[MGLMapView annotationAtPoint:]` method can now return annotations near tile boundaries at high zoom levels. ([#12570](https://github.com/mapbox/mapbox-gl-native/pull/12570))
|
||||
* Fixed inconsistencies in exception naming. ([#12583](https://github.com/mapbox/mapbox-gl-native/issues/12583))
|
||||
* Added `MGLShapeOfflineRegion` for defining arbitrarily shaped offline regions [#11447](https://github.com/mapbox/mapbox-gl-native/pull/11447)
|
||||
* Added an `-[MGLMapViewDelegate mapView:shapeAnnotationIsEnabled:]` method to specify whether an annotation is selectable. ([#12352](https://github.com/mapbox/mapbox-gl-native/pull/12352))
|
||||
|
||||
# 0.10.0 - August 15, 2018
|
||||
|
||||
|
||||
@@ -2108,7 +2108,11 @@ public:
|
||||
|
||||
if ([annotation isKindOfClass:[MGLMultiPoint class]])
|
||||
{
|
||||
return false;
|
||||
if ([self.delegate respondsToSelector:@selector(mapView:shapeAnnotationIsEnabled:)]) {
|
||||
return !!(![self.delegate mapView:self shapeAnnotationIsEnabled:(MGLMultiPoint *)annotation]);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
MGLAnnotationImage *annotationImage = [self imageOfAnnotationWithTag:annotationTag];
|
||||
|
||||
@@ -243,6 +243,18 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
#pragma mark Selecting Annotations
|
||||
|
||||
/**
|
||||
Returns a Boolean value indicating whether the shape annotation can be selected.
|
||||
|
||||
If the return value is `YES`, the user can select the annotation by clicking
|
||||
on it. If the delegate does not implement this method, the default value is `YES`.
|
||||
|
||||
@param mapView The map view that has selected the annotation.
|
||||
@param annotation The object representing the shape annotation.
|
||||
@return A Boolean value indicating whether the annotation can be selected.
|
||||
*/
|
||||
- (BOOL)mapView:(MGLMapView *)mapView shapeAnnotationIsEnabled:(MGLShape *)annotation;
|
||||
|
||||
/**
|
||||
Tells the delegate that one of its annotations has been selected.
|
||||
|
||||
|
||||
@@ -26,6 +26,8 @@ extension MGLMapViewDelegateIntegrationTests: MGLMapViewDelegate {
|
||||
func mapViewDidFinishRenderingMap(_ mapView: MGLMapView, fullyRendered: Bool) {}
|
||||
|
||||
func mapViewDidFailLoadingMap(_ mapView: MGLMapView, withError error: Error) {}
|
||||
|
||||
func mapView(_ mapView: MGLMapView, shapeAnnotationIsEnabled annotation: MGLShape) -> Bool { return false }
|
||||
|
||||
func mapView(_ mapView: MGLMapView, didDeselect annotation: MGLAnnotation) {}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user