Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
a8e7d2e
Fixed map objects being added to the map before all properties are set
Colman Jun 28, 2024
832c13f
Updated changelog
Colman Jun 28, 2024
cce2d0b
Updated pubspec
Colman Jun 28, 2024
5c9cb06
Added fix for tiles
Colman Jun 28, 2024
ac578f1
Merge branch 'main' into maps-ios-set-visible-after-other-properties
Colman Jun 28, 2024
e5e2824
Partially added tests
Colman Jul 2, 2024
c9c7cf7
Merge branch 'maps-ios-set-visible-after-other-properties' of https:/…
Colman Jul 2, 2024
6ee3394
Added tests
Colman Jul 3, 2024
41aa17a
Merge branch 'main' into maps-ios-set-visible-after-other-properties
Colman Jul 3, 2024
f3e2597
Formatted files and updated pubspec
Colman Jul 3, 2024
a1b5e57
Fixed merge error
Colman Jul 3, 2024
fe0f77c
Fixed warnings
Colman Jul 3, 2024
683c748
Fixed warnings
Colman Jul 3, 2024
2a55aa9
Fixed errors
Colman Jul 4, 2024
8df1940
Moved tests to iOS 14
Colman Jul 4, 2024
bfbe724
Remove changes to iOS 15 pbxproj file
Colman Jul 4, 2024
809aa4d
Merge branch 'main' into maps-ios-set-visible-after-other-properties
Colman Jul 5, 2024
f260c80
Merge branch 'main' into maps-ios-set-visible-after-other-properties
Colman Jul 7, 2024
e63414e
Merge branch 'main' into maps-ios-set-visible-after-other-properties
Colman Jul 10, 2024
d3cc41c
Merge branch 'main' into maps-ios-set-visible-after-other-properties
Colman Jul 10, 2024
60d5e9e
Merge branch 'main' into maps-ios-set-visible-after-other-properties
Colman Jul 11, 2024
f1de4e2
Merge branch 'main' into maps-ios-set-visible-after-other-properties
Colman Jul 11, 2024
76a918f
Merge branch 'main' into maps-ios-set-visible-after-other-properties
Colman Jul 17, 2024
2d290b2
Merge branch 'main' into maps-ios-set-visible-after-other-properties
Colman Jul 18, 2024
c174732
Merge branch 'main' into maps-ios-set-visible-after-other-properties
Colman Jul 23, 2024
3b0d6ae
Merge branch 'main' into maps-ios-set-visible-after-other-properties
Colman Jul 23, 2024
08cb314
Merge branch 'main' into maps-ios-set-visible-after-other-properties
Colman Jul 25, 2024
c18acea
Merge branch 'main' into maps-ios-set-visible-after-other-properties
Colman Jul 26, 2024
3053a6a
Made changes based on comments
Colman Oct 10, 2024
ae45789
Merge branch 'main' into maps-ios-set-visible-after-other-properties
Colman Oct 10, 2024
d0f382a
Made changes based on comments
Colman Oct 10, 2024
c813a40
Merge branch 'main' into maps-ios-set-visible-after-other-properties
Colman Oct 15, 2024
db3e9e8
Incremented version
Colman Oct 15, 2024
5664e67
Made changes based on comments
Colman Oct 17, 2024
4de17bd
Made changes based on comments
Colman Oct 17, 2024
bb29485
Formatted files
Colman Oct 17, 2024
a46fbf6
Merge branch 'main' into maps-ios-set-visible-after-other-properties
Colman Oct 17, 2024
fd917a9
Merge branch 'main' into maps-ios-set-visible-after-other-properties
Colman Oct 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 2.13.2

* Fixes map objects (markers, polygons, polylines, circles, and tiles) being added with the wrong properties.

## 2.13.1

* Updates Pigeon for non-nullable collection type support.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@
2BDE99378062AE3E60B40021 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3ACE0AFE8D82CD5962486AFD /* Pods_RunnerTests.framework */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
478116522BEF8F47002F593E /* GoogleMapsPolylinesControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 478116512BEF8F47002F593E /* GoogleMapsPolylinesControllerTests.m */; };
4792283D2C3734EB00A4FEAF /* PartiallyMockedPolyline.m in Sources */ = {isa = PBXBuildFile; fileRef = 479228352C3734EB00A4FEAF /* PartiallyMockedPolyline.m */; };
4792283F2C3734EB00A4FEAF /* PartiallyMockedPolygon.m in Sources */ = {isa = PBXBuildFile; fileRef = 479228372C3734EB00A4FEAF /* PartiallyMockedPolygon.m */; };
479228402C3734EB00A4FEAF /* PartiallyMockedTileLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 479228382C3734EB00A4FEAF /* PartiallyMockedTileLayer.m */; };
479228412C3734EB00A4FEAF /* PartiallyMockedMarker.m in Sources */ = {isa = PBXBuildFile; fileRef = 479228392C3734EB00A4FEAF /* PartiallyMockedMarker.m */; };
479228422C3734EB00A4FEAF /* PartiallyMockedCircle.m in Sources */ = {isa = PBXBuildFile; fileRef = 4792283B2C3734EB00A4FEAF /* PartiallyMockedCircle.m */; };
47D4D0B32CC199FA004E5D39 /* GoogleMapsCallOrderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 479228302C3734EB00A4FEAF /* GoogleMapsCallOrderTests.m */; };
528F16832C62941000148160 /* FGMClusterManagersControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 528F16822C62941000148160 /* FGMClusterManagersControllerTests.m */; };
528F16872C62952700148160 /* ExtractIconFromDataTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 528F16862C62952700148160 /* ExtractIconFromDataTests.m */; };
6851F3562835BC180032B7C8 /* FLTGoogleMapJSONConversionsConversionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6851F3552835BC180032B7C8 /* FLTGoogleMapJSONConversionsConversionTests.m */; };
Expand Down Expand Up @@ -64,6 +70,17 @@
3ACE0AFE8D82CD5962486AFD /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
478116512BEF8F47002F593E /* GoogleMapsPolylinesControllerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GoogleMapsPolylinesControllerTests.m; sourceTree = "<group>"; };
479228302C3734EB00A4FEAF /* GoogleMapsCallOrderTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GoogleMapsCallOrderTests.m; sourceTree = "<group>"; };
479228312C3734EB00A4FEAF /* PartiallyMockedTileLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PartiallyMockedTileLayer.h; sourceTree = "<group>"; };
479228322C3734EB00A4FEAF /* PartiallyMockedCircle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PartiallyMockedCircle.h; sourceTree = "<group>"; };
479228332C3734EB00A4FEAF /* PartiallyMockedPolygon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PartiallyMockedPolygon.h; sourceTree = "<group>"; };
479228342C3734EB00A4FEAF /* PartiallyMockedPolyline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PartiallyMockedPolyline.h; sourceTree = "<group>"; };
479228352C3734EB00A4FEAF /* PartiallyMockedPolyline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PartiallyMockedPolyline.m; sourceTree = "<group>"; };
479228372C3734EB00A4FEAF /* PartiallyMockedPolygon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PartiallyMockedPolygon.m; sourceTree = "<group>"; };
479228382C3734EB00A4FEAF /* PartiallyMockedTileLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PartiallyMockedTileLayer.m; sourceTree = "<group>"; };
479228392C3734EB00A4FEAF /* PartiallyMockedMarker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PartiallyMockedMarker.m; sourceTree = "<group>"; };
4792283A2C3734EB00A4FEAF /* PartiallyMockedMarker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PartiallyMockedMarker.h; sourceTree = "<group>"; };
4792283B2C3734EB00A4FEAF /* PartiallyMockedCircle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PartiallyMockedCircle.m; sourceTree = "<group>"; };
528F16822C62941000148160 /* FGMClusterManagersControllerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FGMClusterManagersControllerTests.m; sourceTree = "<group>"; };
528F16862C62952700148160 /* ExtractIconFromDataTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ExtractIconFromDataTests.m; sourceTree = "<group>"; };
61A9A8623F5CA9BBC813DC6B /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
Expand Down Expand Up @@ -202,6 +219,17 @@
F7151F11265D7ED70028CB91 /* RunnerTests */ = {
isa = PBXGroup;
children = (
479228302C3734EB00A4FEAF /* GoogleMapsCallOrderTests.m */,
479228322C3734EB00A4FEAF /* PartiallyMockedCircle.h */,
4792283B2C3734EB00A4FEAF /* PartiallyMockedCircle.m */,
4792283A2C3734EB00A4FEAF /* PartiallyMockedMarker.h */,
479228392C3734EB00A4FEAF /* PartiallyMockedMarker.m */,
479228332C3734EB00A4FEAF /* PartiallyMockedPolygon.h */,
479228372C3734EB00A4FEAF /* PartiallyMockedPolygon.m */,
479228342C3734EB00A4FEAF /* PartiallyMockedPolyline.h */,
479228352C3734EB00A4FEAF /* PartiallyMockedPolyline.m */,
479228312C3734EB00A4FEAF /* PartiallyMockedTileLayer.h */,
479228382C3734EB00A4FEAF /* PartiallyMockedTileLayer.m */,
F269303A2BB389BF00BF17C4 /* assets */,
528F16862C62952700148160 /* ExtractIconFromDataTests.m */,
528F16822C62941000148160 /* FGMClusterManagersControllerTests.m */,
Expand Down Expand Up @@ -509,10 +537,16 @@
files = (
528F16832C62941000148160 /* FGMClusterManagersControllerTests.m in Sources */,
F7151F13265D7ED70028CB91 /* GoogleMapsTests.m in Sources */,
479228402C3734EB00A4FEAF /* PartiallyMockedTileLayer.m in Sources */,
6851F3562835BC180032B7C8 /* FLTGoogleMapJSONConversionsConversionTests.m in Sources */,
479228412C3734EB00A4FEAF /* PartiallyMockedMarker.m in Sources */,
4792283F2C3734EB00A4FEAF /* PartiallyMockedPolygon.m in Sources */,
982F2A6C27BADE17003C81F4 /* PartiallyMockedMapView.m in Sources */,
478116522BEF8F47002F593E /* GoogleMapsPolylinesControllerTests.m in Sources */,
4792283D2C3734EB00A4FEAF /* PartiallyMockedPolyline.m in Sources */,
0DD7B6C32B744EEF00E857FD /* FLTTileProviderControllerTests.m in Sources */,
47D4D0B32CC199FA004E5D39 /* GoogleMapsCallOrderTests.m in Sources */,
479228422C3734EB00A4FEAF /* PartiallyMockedCircle.m in Sources */,
528F16872C62952700148160 /* ExtractIconFromDataTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,247 @@
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

@import google_maps_flutter_ios;
@import google_maps_flutter_ios.Test;
@import XCTest;
@import MapKit;
@import GoogleMaps;

#import <OCMock/OCMock.h>
#import "PartiallyMockedCircle.h"
#import "PartiallyMockedMapView.h"
#import "PartiallyMockedMarker.h"
#import "PartiallyMockedPolygon.h"
#import "PartiallyMockedPolyline.h"
#import "PartiallyMockedTileLayer.h"

@interface GoogleMapsCallOrderTests : XCTestCase
@end

@interface FLTGoogleMapMarkerController (Tests)
- (void)interpretMarkerOptions:(NSDictionary *)data
registrar:(NSObject<FlutterPluginRegistrar> *)registrar
screenScale:(CGFloat)screenScale;
@end

@interface FLTGoogleMapPolygonController (Tests)
- (void)interpretPolygonOptions:(NSDictionary *)data
registrar:(NSObject<FlutterPluginRegistrar> *)registrar;
@end

@interface FLTGoogleMapPolylineController (Tests)
- (void)interpretPolylineOptions:(NSDictionary *)data
registrar:(NSObject<FlutterPluginRegistrar> *)registrar;
@end

@interface FLTGoogleMapCircleController (Tests)
- (void)interpretCircleOptions:(NSDictionary *)data;
@end

@interface FLTGoogleMapTileOverlayController (Tests)
- (void)interpretTileOverlayOptions:(NSDictionary *)data;
@end

@implementation GoogleMapsCallOrderTests

- (void)testMarker {
PartiallyMockedMarker *marker =
[PartiallyMockedMarker markerWithPosition:CLLocationCoordinate2DMake(0, 0)];

NSDictionary *assetData =
@{@"assetName" : @"fakeImageNameKey", @"bitmapScaling" : @"auto", @"imagePixelRatio" : @1};
NSArray *iconData = @[ @"asset", assetData ];
NSDictionary *options = @{
@"alpha" : @1,
@"anchor" : @[ @0.5, @1 ],
@"draggable" : @0,
@"icon" : iconData,
@"flat" : @0,
@"infoWindow" : @{
@"title" : @"TestTitle",
@"snippet" : @"TestSnippet",
@"infoWindowAnchor" : @[ @0, @0 ],
},
@"position" : @[ @0, @0 ],
@"rotation" : @0,
@"zIndex" : @0,
@"visible" : @1,
};

CGRect frame = CGRectMake(0, 0, 100, 100);
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
// TODO(stuartmorgan): Switch to initWithOptions: once we can guarantee we will be using SDK 8.3+.
// That API was only added in 8.3, and Cocoapod caches on some machines may not be up-to-date
// enough to resolve to that yet even when targeting iOS 14+.
PartiallyMockedMapView *mapView = [[PartiallyMockedMapView alloc]
initWithFrame:frame
camera:[[GMSCameraPosition alloc] initWithLatitude:0 longitude:0 zoom:0]];
#pragma clang diagnostic pop

NSString *identifier = @"TestMarker";
FLTGoogleMapMarkerController *controller =
[[FLTGoogleMapMarkerController alloc] initWithMarker:marker
markerIdentifier:identifier
clusterManagerIdentifier:nil
mapView:mapView];
id registrar = OCMProtocolMock(@protocol(FlutterPluginRegistrar));
CGFloat screenScale = mapView.traitCollection.displayScale;
[controller interpretMarkerOptions:options registrar:registrar screenScale:screenScale];

XCTAssert(marker.isOrderCorrect);
}

- (void)testPolygon {
GMSMutablePath *path = [GMSMutablePath path];
[path addCoordinate:CLLocationCoordinate2DMake(0, 0)];
[path addCoordinate:CLLocationCoordinate2DMake(1, 0)];
[path addCoordinate:CLLocationCoordinate2DMake(1, 1)];

PartiallyMockedPolygon *polygon = [PartiallyMockedPolygon polygonWithPath:path];

NSDictionary *options = @{
@"consumeTapEvents" : @0,
@"zIndex" : @0,
@"points" : @[ @[ @0, @0 ], @[ @1, @0 ], @[ @1, @1 ] ],
@"holes" : @[],
@"fillColor" : @0x000000,
@"strokeColor" : @0x000000,
@"strokeWidth" : @1,
@"visible" : @1,
};

CGRect frame = CGRectMake(0, 0, 100, 100);
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
// TODO(stuartmorgan): Switch to initWithOptions: once we can guarantee we will be using SDK 8.3+.
// That API was only added in 8.3, and Cocoapod caches on some machines may not be up-to-date
// enough to resolve to that yet even when targeting iOS 14+.
PartiallyMockedMapView *mapView = [[PartiallyMockedMapView alloc]
initWithFrame:frame
camera:[[GMSCameraPosition alloc] initWithLatitude:0 longitude:0 zoom:0]];
#pragma clang diagnostic pop

NSString *identifier = @"TestPolygon";
FLTGoogleMapPolygonController *controller =
[[FLTGoogleMapPolygonController alloc] initWithPolygon:polygon
identifier:identifier
mapView:mapView];
id registrar = OCMProtocolMock(@protocol(FlutterPluginRegistrar));
[controller interpretPolygonOptions:options registrar:registrar];

XCTAssert(polygon.isOrderCorrect);
}

- (void)testPolyline {
GMSMutablePath *path = [GMSMutablePath path];
[path addCoordinate:CLLocationCoordinate2DMake(0, 0)];
[path addCoordinate:CLLocationCoordinate2DMake(1, 0)];
[path addCoordinate:CLLocationCoordinate2DMake(1, 1)];

PartiallyMockedPolyline *polyline = [PartiallyMockedPolyline polylineWithPath:path];

NSDictionary *options = @{
@"consumeTapEvents" : @0,
@"zIndex" : @0,
@"points" : @[ @[ @0, @0 ], @[ @1, @0 ], @[ @1, @1 ] ],
@"color" : @0x000000,
@"width" : @1,
@"geodesic" : @0,
@"pattern" : @[ @[ @"dot", @1 ], @[ @"gap", @1 ] ],
@"visible" : @1,
};

CGRect frame = CGRectMake(0, 0, 100, 100);
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
// TODO(stuartmorgan): Switch to initWithOptions: once we can guarantee we will be using SDK 8.3+.
// That API was only added in 8.3, and Cocoapod caches on some machines may not be up-to-date
// enough to resolve to that yet even when targeting iOS 14+.
PartiallyMockedMapView *mapView = [[PartiallyMockedMapView alloc]
initWithFrame:frame
camera:[[GMSCameraPosition alloc] initWithLatitude:0 longitude:0 zoom:0]];
#pragma clang diagnostic pop

NSString *identifier = @"TestPolyline";
FLTGoogleMapPolylineController *controller =
[[FLTGoogleMapPolylineController alloc] initWithPolyline:polyline
identifier:identifier
mapView:mapView];
id registrar = OCMProtocolMock(@protocol(FlutterPluginRegistrar));
[controller interpretPolylineOptions:options registrar:registrar];

XCTAssert(polyline.isOrderCorrect);
}

- (void)testCircle {
PartiallyMockedCircle *circle =
[PartiallyMockedCircle circleWithPosition:CLLocationCoordinate2DMake(0, 0) radius:1.0];

NSDictionary *options = @{
@"consumeTapEvents" : @0,
@"zIndex" : @0,
@"center" : @[ @0, @0 ],
@"radius" : @0,
@"strokeColor" : @0x000000,
@"strokeWidth" : @1,
@"fillColor" : @0x000000,
@"visible" : @1,
};

CGRect frame = CGRectMake(0, 0, 100, 100);
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
// TODO(stuartmorgan): Switch to initWithOptions: once we can guarantee we will be using SDK 8.3+.
// That API was only added in 8.3, and Cocoapod caches on some machines may not be up-to-date
// enough to resolve to that yet even when targeting iOS 14+.
PartiallyMockedMapView *mapView = [[PartiallyMockedMapView alloc]
initWithFrame:frame
camera:[[GMSCameraPosition alloc] initWithLatitude:0 longitude:0 zoom:0]];
#pragma clang diagnostic pop

NSString *identifier = @"TestCircle";
FLTGoogleMapCircleController *controller =
[[FLTGoogleMapCircleController alloc] initWithCircle:circle
circleId:identifier
mapView:mapView
options:options];
[controller interpretCircleOptions:options];

XCTAssert(circle.isOrderCorrect);
}

- (void)testTileOverlay {
PartiallyMockedTileLayer *tileLayer = [PartiallyMockedTileLayer alloc];

NSDictionary *options = @{
@"transparency" : @0,
@"zIndex" : @0,
@"fadeIn" : @0,
@"tileSize" : @256,
@"visible" : @1,
};

CGRect frame = CGRectMake(0, 0, 100, 100);
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
// TODO(stuartmorgan): Switch to initWithOptions: once we can guarantee we will be using SDK 8.3+.
// That API was only added in 8.3, and Cocoapod caches on some machines may not be up-to-date
// enough to resolve to that yet even when targeting iOS 14+.
PartiallyMockedMapView *mapView = [[PartiallyMockedMapView alloc]
initWithFrame:frame
camera:[[GMSCameraPosition alloc] initWithLatitude:0 longitude:0 zoom:0]];
#pragma clang diagnostic pop

FLTGoogleMapTileOverlayController *controller =
[[FLTGoogleMapTileOverlayController alloc] initWithTileLayer:tileLayer
mapView:mapView
options:options];

[controller interpretTileOverlayOptions:options];

XCTAssert(tileLayer.isOrderCorrect);
}

@end
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

@import GoogleMaps;

/**
* Defines a marker used for testing the call order of setters.
*/
@interface PartiallyMockedCircle : GMSCircle

@property(nonatomic, assign, readonly) BOOL didSetTappable;
@property(nonatomic, assign, readonly) BOOL didSetZIndex;
@property(nonatomic, assign, readonly) BOOL didSetPosition;
@property(nonatomic, assign, readonly) BOOL didSetRadius;
@property(nonatomic, assign, readonly) BOOL didSetStrokeColor;
@property(nonatomic, assign, readonly) BOOL didSetStrokeWidth;
@property(nonatomic, assign, readonly) BOOL didSetFillColor;
@property(nonatomic, assign, readonly) BOOL didSetMap;

/**
* Defines a property that represents whether the call order was correct.
*/
@property(nonatomic, assign, readonly) BOOL isOrderCorrect;

@end
Loading
Loading