גורמים לתכונות של נתונים להגיב לאירועי הקשה, ומשתמשים באירוע כדי להציג את הערך של מאפיין של התכונה שהוקשה עליה.
טיפול באירועים בשכבת מערך הנתונים
בדוגמה הזו מוצגים מאפייני נתונים של מערך נתונים עם מזהה YOUR_DATASET_ID, והפונקציה delegate מיושמת כדי להציג את הערך של מאפיין של התכונה שהמשתמש הקיש עליה.
בדוגמה הזו, מערך הנתונים מציג פארקים בעיר ניו יורק.
לכל תכונה של מערך נתונים, שמתאימה לפארק, מערך הנתונים מכיל מאפיין בשם acres
שמכיל את שטח הפארק. לפארק שהמשתמש הקליק עליו, מציגים את הערך של מאפיין acres
.
Swift
class SampleViewController: UIViewController { private lazy var mapView: GMSMapView = GMSMapView(frame: .zero, mapID: GMSMapID(identifier: "YOUR_MAP_ID"), camera: GMSCameraPosition(latitude: 40.7, longitude: -74, zoom: 12)) // Set default styles. view = mapView let style = FeatureStyle(fill: .green.withAlphaComponent(0.5), stroke: .green, strokeWidth: 2) mapView.datasetFeatureLayer(of: "YOUR_DATASET_ID").style = { _ in style } mapView.delegate = self } extension SampleViewController: GMSMapViewDelegate { func mapView(_ mapView: GMSMapView, didTap features: [Feature], in featureLayer: FeatureLayer<Feature>, atLocation: CLLocationCoordinate2D) { let toast = UIAlertController(title: "Area of park", message: (features.compactMap { ($0 as? DatasetFeature)?.datasetAttributes["acres"] }).joined(separator: ", "), preferredStyle: .alert) present(toast, animated: true, completion: nil) } }
Objective-C
@interface SampleViewController: UIViewController <GMSMapViewDelegate> @end @implementation SampleViewController - (void)loadView { GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero mapID:[GMSMapID mapIDWithIdentifier:@"YOUR_MAP_ID"] camera:[GMSCameraPosition cameraWithLatitude:40.7 longitude:-74 zoom:12]]; mapView.delegete = self; // Set default styles. GMSFeatureStyle *style = [GMSFeatureStyle styleWithFillColor:[[UIColor greenColor] colorWithAlphaComponent:0.5] strokeColor:[UIColor greenColor] strokeWidth:2.0]; [_mapView datasetFeatureLayerOfDatasetID:@"YOUR_DATASET_ID"].style = ^(GMSDatasetFeature *feature) { return style; }; self.view = mapView; } - (void)mapView:(GMSMapView *)mapView didTapFeatures:(NSArray<id<GMSFeature>> *)features inFeatureLayer:(GMSFeatureLayer *)featureLayer atLocation:(CLLocationCoordinate2D)location { NSMutableArray<NSString *> *parkAreas = [NSMutableArray array]; for (id<GMSFeature> feature in features) { if (![feature isKindOfClass:[GMSDatasetFeature class]]) { continue; } NSString *nameDefinedInDataset = ((GMSDatasetFeature *)feature).datasetAttributes[@"acres"]; [parkAreas addObject:nameDefinedInDataset]; } UIAlertController *toast = [UIAlertController alertControllerWithTitle:@"Area of park" message:[parkAreas componentsJoinedByString:@", "] preferredStyle:UIAlertControllerStyleAlert]; [self presentViewController:toast animated:YES completion:nil]; } @end