Hình dạng

Chọn nền tảng: Android iOS JavaScript

SDK bản đồ dành cho iOS cung cấp một số cách đơn giản để bạn thêm hình dạng vào bản đồ. Các hình dạng sau được hỗ trợ:

  • Hình nhiều đường là một loạt các đoạn đường nối với nhau có thể tạo thành bất kỳ hình dạng nào bạn muốn và có thể dùng để đánh dấu các đường dẫn và tuyến đường trên bản đồ.
  • Đa giác là một hình dạng có thể dùng để đánh dấu các khu vực trên bản đồ.
  • Vòng tròn là hình chiếu chính xác về mặt địa lý của một vòng tròn trên bề mặt Trái Đất.

Bạn có thể sửa đổi giao diện của từng hình dạng theo một số cách.

Hình nhiều đường

Hình nhiều đường cho phép bạn vẽ các đường trên bản đồ. Đối tượng GMSPolyline biểu thị một chuỗi vị trí theo thứ tự, hiển thị dưới dạng một loạt các phân đoạn dòng. Bạn có thể đặt màu của nhiều đường với GMSStrokeStyle.

Để tạo một đa giác, bạn cần chỉ định đường dẫn của nó bằng cách tạo một đối tượng GMSMutablePath tương ứng với hai hoặc nhiều điểm. Mỗi CLLocationCoordinate2D đại diện cho một điểm trên bề mặt Trái Đất. Các phân đoạn dòng được vẽ giữa các điểm theo thứ tự mà bạn thêm chúng vào đường dẫn. Bạn có thể thêm điểm vào đường dẫn bằng các phương thức addCoordinate: hoặc addLatitude:longitude:.

Swift

let path = GMSMutablePath()
path.add(CLLocationCoordinate2D(latitude: -33.85, longitude: 151.20))
path.add(CLLocationCoordinate2D(latitude: -33.70, longitude: 151.40))
path.add(CLLocationCoordinate2D(latitude: -33.73, longitude: 151.41))
let polyline = GMSPolyline(path: path)
      

Objective-C

GMSMutablePath *path = [GMSMutablePath path];
[path addCoordinate:CLLocationCoordinate2DMake(-33.85, 151.20)];
[path addCoordinate:CLLocationCoordinate2DMake(-33.70, 151.40)];
[path addCoordinate:CLLocationCoordinate2DMake(-33.73, 151.41)];
GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
      

Thêm một hình nhiều đường

  1. Tạo đối tượng GMSMutablePath.
  2. Đặt các điểm trong đường dẫn bằng các phương thức addCoordinate: hoặc addLatitude:longitude:.
  3. Tạo bản sao của đối tượng GMSPolyline mới bằng cách sử dụng đường dẫn làm đối số.
  4. Đặt các thuộc tính khác, chẳng hạn như strokeWidthstrokeColor, nếu muốn.
  5. Thiết lập thuộc tính map của GMSPolyline.
  6. Hình nhiều đường xuất hiện trên bản đồ.

Đoạn mã sau đây sẽ thêm một hình chữ nhật vào bản đồ:

Swift

let rectanglePath = GMSMutablePath()
rectanglePath.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.0))
rectanglePath.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.0))
rectanglePath.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.2))
rectanglePath.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.2))
rectanglePath.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.0))

let rectangle = GMSPolyline(path: path)
rectangle.map = mapView
      

Objective-C

GMSMutablePath *rectanglePath = [GMSMutablePath path];
[rectanglePath addCoordinate:CLLocationCoordinate2DMake(37.36, -122.0)];
[rectanglePath addCoordinate:CLLocationCoordinate2DMake(37.45, -122.0)];
[rectanglePath addCoordinate:CLLocationCoordinate2DMake(37.45, -122.2)];
[rectanglePath addCoordinate:CLLocationCoordinate2DMake(37.36, -122.2)];
[rectanglePath addCoordinate:CLLocationCoordinate2DMake(37.36, -122.0)];

GMSPolyline *rectangle = [GMSPolyline polylineWithPath:path];
rectangle.map = mapView;
      

Hình nhiều đường hình chữ nhật

Xoá nhiều đường kẻ

Bạn có thể xoá một hình nhiều đường khỏi bản đồ bằng cách đặt thuộc tính map của GMSPolyline thành nil. Ngoài ra, bạn có thể xoá tất cả lớp phủ (bao gồm nhiều đường kẻ và hình dạng khác) hiện có trên bản đồ bằng cách gọi phương thức GMSMapView clear.

Swift

mapView.clear()
      

Objective-C

[mapView clear];
      

Tùy chỉnh hình nhiều đường

Đối tượng GMSPolyline cung cấp một số thuộc tính để kiểm soát giao diện của dòng. Thư viện này hỗ trợ các tùy chọn sau:

strokeWidth
Chiều rộng của toàn bộ dòng, trong các điểm màn hình. Giá trị mặc định là 1. Chiều rộng sẽ không điều chỉnh được khi phóng to bản đồ.
geodesic
Khi YES, hãy kết xuất nhiều cạnh này dưới dạng một trắc địa. Các đoạn trắc địa đi theo con đường ngắn nhất dọc theo bề mặt Trái đất và có thể xuất hiện dưới dạng các đường cong trên bản đồ với phép chiếu Mercator. Các đoạn phi địa lý được vẽ dưới dạng các đường thẳng trên bản đồ. Mặc định là NO.
spans
Dùng để chỉ định màu của một hoặc nhiều phân đoạn của hình nhiều đường. Thuộc tính span là một mảng các đối tượng GMSStyleSpan. Việc đặt thuộc tính spans là cách tốt nhất để thay đổi màu sắc của nhiều đường.
strokeColor
Một đối tượng UIColor xác định màu của nhiều đường. Mặc định là blueColor. Thuộc tính strokeColor sẽ bị bỏ qua nếu bạn đặt spans.

Đoạn mã sau đây thêm một đường đa giác dày từ Melbourne đến Perth, với nội suy trắc địa.

Swift

let path = GMSMutablePath()
path.addLatitude(-37.81319, longitude: 144.96298)
path.addLatitude(-31.95285, longitude: 115.85734)
let polyline = GMSPolyline(path: path)
polyline.strokeWidth = 10.0
polyline.geodesic = true
polyline.map = mapView
      

Objective-C

GMSMutablePath *path = [GMSMutablePath path];
[path addLatitude:-37.81319 longitude:144.96298];
[path addLatitude:-31.95285 longitude:115.85734];
GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
polyline.strokeWidth = 10.f;
polyline.geodesic = YES;
polyline.map = mapView;
      

Để sửa đổi nhiều đường sau khi đã thêm nó vào bản đồ, hãy nhớ giữ đối tượng GMSPolyline.

Swift

polyline.strokeColor = .blue
      

Objective-C

polyline.strokeColor = [UIColor blueColor];
      

Thay đổi màu của nhiều đường

Các đường kẻ được vẽ dưới dạng một loạt các phân đoạn trên bản đồ. Bạn có thể thay đổi màu của từng phân đoạn hoặc toàn bộ dòng bằng thuộc tính spans. Mặc dù thuộc tính này cho phép bạn kiểm soát chi tiết đối với nhiều màu của một đường kẻ, nhưng vẫn có một số tiện ích giúp bạn dễ dàng áp dụng một kiểu cho toàn bộ dòng.

Đoạn mã dưới đây sử dụng phương thức spanWithColor: để thay đổi màu của toàn bộ dòng thành màu đỏ.

Swift

polyline.spans = [GMSStyleSpan(color: .red)]
      

Objective-C

polyline.spans = @[[GMSStyleSpan spanWithColor:[UIColor redColor]]];
      

Ngoài ra, nếu đã có quyền truy cập vào đối tượng GMSStrokeStyle, bạn có thể sử dụng phương thức spanWithStyle:.

Swift

let solidRed = GMSStrokeStyle.solidColor(.red)
polyline.spans = [GMSStyleSpan(style: solidRed)]
      

Objective-C

GMSStrokeStyle *solidRed = [GMSStrokeStyle solidColor:[UIColor redColor]];
polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed]];
      

Trước phiên bản 1.7 của SDK Maps dành cho iOS, bạn có thể sử dụng một thuộc tính strokeColor để đặt toàn bộ màu của GMSPolyline. Thuộc tính spans được ưu tiên hơn strokeColor.

Swift

polyline.strokeColor = .red
      

Objective-C

polyline.strokeColor = [UIColor redColor];
      

Kiểu

Nếu ứng dụng áp dụng cùng một màu nét vẽ nhiều lần, bạn có thể thấy hữu ích khi xác định một kiểu có thể sử dụng lại. Kiểu polyline được chỉ định bằng cách sử dụng đối tượng GMSStrokeStyle. Kiểu nét vẽ có thể là màu đồng nhất hoặc chuyển màu từ màu này sang màu khác. Sau khi đã tạo một kiểu, bạn có thể áp dụng kiểu đó cho GMSStyleSpan bằng phương thức spanWithStyle:.

Swift

// Create two styles: one that is solid blue, and one that is a gradient from red to yellow
let solidBlue = GMSStrokeStyle.solidColor(.blue)
let solidBlueSpan = GMSStyleSpan(style: solidBlue)
let redYellow = GMSStrokeStyle.gradient(from: .red, to: .yellow)
let redYellowSpan = GMSStyleSpan(style: redYellow)
      

Objective-C

// Create two styles: one that is solid blue, and one that is a gradient from red to yellow
GMSStrokeStyle *solidBlue = [GMSStrokeStyle solidColor:[UIColor blueColor]];
GMSStyleSpan *solidBlueSpan = [GMSStyleSpan spanWithStyle:solidBlue];
GMSStrokeStyle *redYellow =
    [GMSStrokeStyle gradientFromColor:[UIColor redColor] toColor:[UIColor yellowColor]];
GMSStyleSpan *redYellowSpan = [GMSStyleSpan spanWithStyle:redYellow];
      

Kiểu của span sẽ tiếp tục cho đến khi kết thúc nhiều vòng hoặc cho đến khi đặt một kiểu mới. Bạn có thể thay đổi màu của toàn bộ dòng bằng cách đặt thuộc tính spans của một polyline thành một GMSStyleSpan. Đoạn mã dưới đây minh họa cách áp dụng độ dốc trên toàn bộ chiều dài của đa giác.

Swift

polyline.spans = [GMSStyleSpan(style: redYellow)]
      

Objective-C

polyline.spans = @[[GMSStyleSpan spanWithStyle:redYellow]];
      

Thay đổi màu của từng phân đoạn dòng

Nếu muốn tạo kiểu cho từng phân đoạn của nhiều đối tượng polyline, bạn có thể thực hiện bằng cách tạo một mảng các đối tượng GMSStyleSpan và truyền đối tượng này đến thuộc tính spans. Theo mặc định, mỗi mục trong mảng sẽ thiết lập màu của phân đoạn dòng tương ứng. Nếu có nhiều phần tử trong mảng hơn so với các phân đoạn trong dòng, các phần tử thừa sẽ bị bỏ qua. Nếu có ít phần tử hơn trong mảng, thì GMSStyleSpan cuối cùng sẽ mô tả màu sắc cho phần còn lại của dòng.

Bạn có thể sử dụng các khối nhiều màu và/hoặc nhiều độ dốc để cho biết những thay đổi trên nhiều đường kẻ của bạn, chẳng hạn như độ cao hoặc tốc độ. Đoạn mã dưới đây đặt màu của hai phân đoạn đầu tiên của một đa giác thành màu đỏ, và phần còn lại của dòng là một màu chuyển từ màu đỏ sang màu vàng.

Swift

polyline.spans = [
  GMSStyleSpan(style: solidRed),
  GMSStyleSpan(style: solidRed),
  GMSStyleSpan(style: redYellow)
]
      

Objective-C

polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed],
                   [GMSStyleSpan spanWithStyle:solidRed],
                   [GMSStyleSpan spanWithStyle:redYellow]];
      

Bạn có thể sử dụng phương thức spanWithStyle:segments: để đặt kiểu cho nhiều phân đoạn cùng một lúc. Ví dụ: mã sau tương đương với mã ở trên. Độ dài phân đoạn của GMSStyleSpan cuối cùng sẽ luôn bị bỏ qua vì kiểu sẽ được dùng để mô tả phần còn lại của dòng.

Swift

polyline.spans = [
  GMSStyleSpan(style: solidRed, segments:2),
  GMSStyleSpan(style: redYellow, segments:10)
]
      

Objective-C

polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed segments:2],
                   [GMSStyleSpan spanWithStyle:redYellow segments:10]];
      

Phân đoạn

Các phân đoạn cũng có thể được chỉ định dưới dạng giá trị phân số. Việc này sẽ áp dụng kiểu cho một số ít phân đoạn, dẫn đến việc phân chia trong một phân đoạn duy nhất. Mỗi GMSStyleSpan bắt đầu ngay sau màu trước: trong ví dụ bên dưới, màu xám sẽ bắt đầu từ 1⁄2 cho đến phân đoạn thứ hai và tiếp tục đến 1⁄2 cho đến phân đoạn thứ ba.

Swift

polyline.spans = [
  GMSStyleSpan(style: solidRed, segments: 2.5),
  GMSStyleSpan(color: .gray),
  GMSStyleSpan(color: .purple, segments: 0.75),
  GMSStyleSpan(style: redYellow)
]
      

Objective-C

polyline.spans = @[[GMSStyleSpan spanWithStyle:solidRed segments:2.5],
                   [GMSStyleSpan spanWithColor:[UIColor grayColor]],
                   [GMSStyleSpan spanWithColor:[UIColor purpleColor] segments:0.75],
                   [GMSStyleSpan spanWithStyle:redYellow]];
      

Thêm mẫu màu lặp lại vào nhiều đường

Nếu muốn thêm mẫu vào một hình nhiều đường, bạn có thể sử dụng phương thức tiện ích GMSStyleSpans trong GMSGeometryUtils. Phương thức GMSStyleSpans chấp nhận 2 mảng xác định mẫu lặp lại. Một mảng đặt các kiểu nên lặp lại, còn mảng kia xác định khoảng thời gian lặp lại. Khi được sử dụng cùng nhau, bạn có thể tạo một mẫu có thể áp dụng cho nhiều dòng đa giác, bất kể độ dài hoặc số lượng phân đoạn hiện có.

Ví dụ: đoạn mã dưới đây xác định một đa giác có mẫu xen kẽ màu đen và trắng. Chiều dài của mảnh được coi là mét dọc theo đường rhumb (trong Ngoài ra, đây là một đường thẳng) vì loại được chỉ định là kGMSLengthRhumb.

Swift

let styles = [
  GMSStrokeStyle.solidColor(.white),
  GMSStrokeStyle.solidColor(.black)
]
let lengths: [NSNumber] = [100000, 50000]
polyline.spans = GMSStyleSpans(
  polyline.path!,
  styles,
  lengths,
  GMSLengthKind.rhumb
)
      

Objective-C

NSArray *styles = @[[GMSStrokeStyle solidColor:[UIColor whiteColor]],
                    [GMSStrokeStyle solidColor:[UIColor blackColor]]];
NSArray *lengths = @[@100000, @50000];
polyline.spans = GMSStyleSpans(polyline.path, styles, lengths, kGMSLengthRhumb);
      

Đa giác

Đa giác tương tự như đa giác ở chỗ chúng bao gồm một loạt toạ độ trong một trình tự. Tuy nhiên, thay vì được mở, đa giác được thiết kế để xác định các vùng đồng nhất trong một vòng lặp kín. Đa giác được xác định trong SDK Maps dành cho iOS bằng lớp GMSPolygon.

Bạn có thể thêm GMSPolygon vào bản đồ theo cách tương tự như khi thêm GMSPolyline. Trước tiên, hãy chỉ định đường dẫn của đối tượng đó bằng cách tạo một đối tượng GMSMutablePath tương ứng và thêm điểm vào đối tượng đó. Các điểm này sẽ tạo thành đường viền của đa giác. Mỗi CLLocationCoordinate2D đại diện cho một điểm trên bề mặt Trái Đất. Các phân đoạn dạng đường được vẽ giữa các điểm theo thứ tự mà bạn thêm các đối tượng đó vào đường dẫn.

Thêm đa giác

  1. Tạo đối tượng GMSMutablePath.
  2. Đặt các điểm trong đường dẫn bằng các phương thức addCoordinate: hoặc addLatitude:longitude:. Các điểm này sẽ tạo thành đường viền của đa giác.
  3. Tạo bản sao của đối tượng GMSPolygon mới bằng cách sử dụng đường dẫn làm đối số.
  4. Đặt các thuộc tính khác, chẳng hạn như strokeWidth, strokeColorfillColor, như mong muốn.
  5. Chỉ định đa giác cho một đối tượng GMSMapView bằng cách đặt thuộc tính GMSPolygon.map.
  6. Đa giác xuất hiện trên bản đồ.

Đoạn mã sau đây sẽ thêm một hình chữ nhật vào bản đồ.

Swift

// Create a rectangular path
let rect = GMSMutablePath()
rect.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.0))
rect.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.0))
rect.add(CLLocationCoordinate2D(latitude: 37.45, longitude: -122.2))
rect.add(CLLocationCoordinate2D(latitude: 37.36, longitude: -122.2))

// Create the polygon, and assign it to the map.
let polygon = GMSPolygon(path: rect)
polygon.fillColor = UIColor(red: 0.25, green: 0, blue: 0, alpha: 0.05);
polygon.strokeColor = .black
polygon.strokeWidth = 2
polygon.map = mapView
      

Objective-C

// Create a rectangular path
GMSMutablePath *rect = [GMSMutablePath path];
[rect addCoordinate:CLLocationCoordinate2DMake(37.36, -122.0)];
[rect addCoordinate:CLLocationCoordinate2DMake(37.45, -122.0)];
[rect addCoordinate:CLLocationCoordinate2DMake(37.45, -122.2)];
[rect addCoordinate:CLLocationCoordinate2DMake(37.36, -122.2)];

// Create the polygon, and assign it to the map.
GMSPolygon *polygon = [GMSPolygon polygonWithPath:rect];
polygon.fillColor = [UIColor colorWithRed:0.25 green:0 blue:0 alpha:0.05];
polygon.strokeColor = [UIColor blackColor];
polygon.strokeWidth = 2;
polygon.map = mapView;
      

Bạn có thể tùy chỉnh giao diện của đa giác trước khi thêm đa giác vào bản đồ và sau khi đã thêm đa giác vào bản đồ.

Xoá đa giác

Xoá một Đa giác bằng cách đặt thuộc tính GMSPolygon.map thành nil và tách layer khỏi phần tử mẹ.

Swift

 polygon.map = nil
 polygon.layer.removeFromSuperLayer()

Objective-C

 polygon.map = nil;
 [polygon.layer removeFromSuperlayer];
 

Các vòng tròn

Ngoài lớp GMSPolygon chung, SDK bản đồ dành cho iOS cũng bao gồm GMSCircle, cho phép bạn dễ dàng vẽ vòng tròn trên bề mặt trái đất.

Để xây dựng một vòng kết nối, bạn phải chỉ định hai thuộc tính sau:

  • position dưới dạng CLLocationCoordinate2D.
  • radius mét.

Sau đó, một vòng tròn được xác định là tập hợp tất cả các điểm trên bề mặt Trái Đất, cách radius mét từ một center đã cho. Do cách mà phép chiếu RTBr được API Maps sử dụng hiển thị một hình cầu trên bề mặt phẳng, hình này sẽ xuất hiện dưới dạng một vòng tròn gần như hoàn hảo trên bản đồ khi nằm gần đường xích đạo và sẽ xuất hiện ngày càng không tròn (trên màn hình) khi vòng tròn di chuyển ra khỏi đường xích đạo.

Thêm vòng kết nối

Đoạn mã sau đây thêm một vòng tròn vào bản đồ:

Swift

let circleCenter = CLLocationCoordinate2D(latitude: 37.35, longitude: -122.0)
let circle = GMSCircle(position: circleCenter, radius: 1000)
circle.map = mapView
      

Objective-C

CLLocationCoordinate2D circleCenter = CLLocationCoordinate2DMake(37.35, -122.0);
GMSCircle *circle = [GMSCircle circleWithPosition:circleCenter
                                         radius:1000];
circle.map = mapView;
      

Bạn có thể tùy chỉnh giao diện của vòng kết nối cả trước khi thêm vào vòng tròn bản đồ cũng như sau khi vòng kết nối đã được thêm vào bản đồ.

Tùy chỉnh vòng kết nối

Bạn có thể chỉ định màu tuỳ chỉnh và chiều rộng nét vẽ bằng cách sửa đổi các thuộc tính của GMSCircle. Thư viện này hỗ trợ các tùy chọn sau:

fillColor
Đối tượng UIColor chỉ định màu bên trong của vòng tròn. Mặc định là minh bạch.
strokeColor
Đối tượng UIColor chỉ định màu sắc của đường viền vòng tròn. Mặc định là blackColor.
strokeWidth
Độ dày của đường viền hình tròn, ở các điểm trên màn hình. Giá trị mặc định là 1. Độ dày sẽ không được điều chỉnh theo tỷ lệ khi phóng to bản đồ.

Đoạn mã sau đây sẽ thêm một vòng tròn màu đỏ dày có nội thất màu đỏ nửa công khai.

Swift

circle.fillColor = UIColor(red: 0.35, green: 0, blue: 0, alpha: 0.05)
circle.strokeColor = .red
circle.strokeWidth = 5
      

Objective-C

circle.fillColor = [UIColor colorWithRed:0.25 green:0 blue:0 alpha:0.05];
circle.strokeColor = [UIColor redColor];
circle.strokeWidth = 5;
      

Tạo đa giác rỗng

Bạn có thể kết hợp nhiều đường dẫn trong một đối tượng GMSPolygon để tạo các hình dạng phức tạp, chẳng hạn như vòng được tô màu nền hoặc hình bánh rán (trong đó các khu vực đa giác xuất hiện bên trong đa giác dưới dạng các hình dạng riêng biệt). Các hình dạng phức tạp bao gồm nhiều đường dẫn.

Tạo một đa giác có đường dẫn chỉ định khu vực lớn nhất mà đa giác bao phủ. Sau đó, hãy chỉ định thuộc tính holes của đa giác dưới dạng một mảng của một hoặc nhiều đối tượng GMSPath, giúp xác định các lỗ trong đa giác.

Nếu một đường dẫn nhỏ hơn được bao bọc hoàn toàn bởi đường dẫn lớn hơn, nó sẽ xuất hiện như thể một phần của đa giác đã bị xóa.

Mã mẫu sau đây tạo một đa giác có hai lỗ:

Swift

let hydeParkLocation = CLLocationCoordinate2D(latitude: -33.87344, longitude: 151.21135)
let camera = GMSCameraPosition.camera(withTarget: hydeParkLocation, zoom: 16)
let mapView = GMSMapView.map(withFrame: .zero, camera: camera)
mapView.animate(to: camera)

let hydePark = "tpwmEkd|y[QVe@Pk@BsHe@mGc@iNaAKMaBIYIq@qAMo@Eo@@[Fe@DoALu@HUb@c@XUZS^ELGxOhAd@@ZB`@J^BhFRlBN\\BZ@`AFrATAJAR?rAE\\C~BIpD"
let archibaldFountain = "tlvmEqq|y[NNCXSJQOB[TI"
let reflectionPool = "bewmEwk|y[Dm@zAPEj@{AO"

let hollowPolygon = GMSPolygon()
hollowPolygon.path = GMSPath(fromEncodedPath: hydePark)
hollowPolygon.holes = [GMSPath(fromEncodedPath: archibaldFountain)!, GMSPath(fromEncodedPath: reflectionPool)!]
hollowPolygon.fillColor = UIColor(red: 1.0, green: 0.0, blue: 0.0, alpha: 0.2)
hollowPolygon.strokeColor = UIColor(red: 1.0, green: 0.0, blue: 0.0, alpha: 1.0)
hollowPolygon.strokeWidth = 2
hollowPolygon.map = mapView
      

Objective-C

CLLocationCoordinate2D hydeParkLocation = CLLocationCoordinate2DMake(-33.87344, 151.21135);
GMSCameraPosition *camera = [GMSCameraPosition cameraWithTarget:hydeParkLocation
                                                           zoom:16];
mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];

NSString *hydePark = @"tpwmEkd|y[QVe@Pk@BsHe@mGc@iNaAKMaBIYIq@qAMo@Eo@@[Fe@DoALu@HUb@c@XUZS^ELGxOhAd@@ZB`@J^BhFRlBN\\BZ@`AFrATAJAR?rAE\\C~BIpD";
NSString *archibaldFountain = @"tlvmEqq|y[NNCXSJQOB[TI";
NSString *reflectionPool = @"bewmEwk|y[Dm@zAPEj@{AO";

GMSPolygon *hollowPolygon = [[GMSPolygon alloc] init];
hollowPolygon.path = [GMSPath pathFromEncodedPath:hydePark];
hollowPolygon.holes = @[[GMSPath pathFromEncodedPath:archibaldFountain],
                  [GMSPath pathFromEncodedPath:reflectionPool]];
hollowPolygon.fillColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:0.2];
hollowPolygon.strokeColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0];
hollowPolygon.strokeWidth = 2;
hollowPolygon.map = mapView;