Hình dạng

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

Bản đồ có đường kẻ nhiều màu đỏ đậm

API Google Maps dành cho Android cung cấp một số cách đơn giản để bạn thêm hình dạng vào bản đồ nhằm tuỳ chỉnh các hình dạng đó cho ứng dụng của bạn.

  • Polyline là một chuỗi các đoạn đường được kết nối 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 đồ.
  • Polygon là một hình dạng kín có thể dùng để đánh dấu các khu vực trên bản đồ.
  • Circle là phép 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 khi được vẽ trên bản đồ.

Đối với tất cả các hình dạng này, bạn có thể tuỳ chỉnh giao diện bằng cách thay đổi một số thuộc tính.

Mã mẫu

Hướng dẫn về cách thêm đa giác và đa đường để biểu thị các khu vực và tuyến đường bao gồm toàn bộ mã cho một ứng dụng Android đơn giản.

Ngoài ra, kho lưu trữ ApiDemos trên GitHub bao gồm các mẫu minh hoạ cách sử dụng các hình dạng và tính năng của chúng:

Hình nhiều đường

Lớp Polyline xác định một tập hợp các đoạn đường được kết nối trên bản đồ. Đối tượng Polyline bao gồm một tập hợp các vị trí LatLng và tạo một loạt các phân đoạn dòng kết nối các vị trí đó theo trình tự sắp xếp.

Video này cung cấp ý tưởng về cách giúp người dùng đến nơi họ sắp đến bằng cách sử dụng nhiều đường để vẽ một đường dẫn trên bản đồ.

Để tạo một Polyline, trước tiên, hãy tạo một đối tượng PolylineOptions và thêm điểm vào đối tượng đó. Các điểm đại diện cho một điểm trên bề mặt trái đất và được biểu thị dưới dạng một đối tượng LatLng. Các phân đoạn dòng được vẽ giữa các điểm theo thứ tự mà bạn thêm các đối tượng đó vào đối tượng PolylineOptions.

Để thêm điểm vào đối tượng PolylineOptions, hãy gọi PolylineOptions.add(). Lưu ý rằng phương thức này nhận số lượng thông số có thể thay đổi, do đó, bạn có thể thêm nhiều điểm cùng một lúc (bạn cũng có thể gọi PolylineOptions.addAll(Iterable<LatLng>) nếu các điểm đã có trong danh sách).

Sau đó, bạn có thể thêm nhiều đường vào bản đồ bằng cách gọi GoogleMap.addPolyline(PolylineOptions). Phương thức này trả về một đối tượng Polyline mà sau đó bạn có thể thay đổi đa giác tại một thời điểm sau đó.

Đoạn mã sau minh hoạ cách thêm hình chữ nhật vào bản đồ:

Java


// Instantiates a new Polyline object and adds points to define a rectangle
PolylineOptions polylineOptions = new PolylineOptions()
    .add(new LatLng(37.35, -122.0))
    .add(new LatLng(37.45, -122.0))  // North of the previous point, but at the same longitude
    .add(new LatLng(37.45, -122.2))  // Same latitude, and 30km to the west
    .add(new LatLng(37.35, -122.2))  // Same longitude, and 16km to the south
    .add(new LatLng(37.35, -122.0)); // Closes the polyline.

// Get back the mutable Polyline
Polyline polyline = map.addPolyline(polylineOptions);

      

Kotlin


// Instantiates a new Polyline object and adds points to define a rectangle
val polylineOptions = PolylineOptions()
    .add(LatLng(37.35, -122.0))
    .add(LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude
    .add(LatLng(37.45, -122.2)) // Same latitude, and 30km to the west
    .add(LatLng(37.35, -122.2)) // Same longitude, and 16km to the south
    .add(LatLng(37.35, -122.0)) // Closes the polyline.

// Get back the mutable Polyline
val polyline = map.addPolyline(polylineOptions)

      

Hình chữ nhật này xuất hiện trên bản đồ như minh hoạ dưới đây:

Bản đồ có một đường kẻ nhiều hình chữ nhật

Để thay đổi hình dạng của nhiều đường sau khi thêm, bạn có thể gọi Polyline.setPoints() và cung cấp danh sách các điểm mới cho hình đa giác.

Bạn có thể tuỳ chỉnh giao diện của đa giác trước khi thêm vào bản đồ và sau khi đã thêm nó vào bản đồ. Xem mục tùy chỉnh giao diện bên dưới để biết thêm chi tiết.

Tuỳ chỉnh hình nhiều đường

Có một số cách để tùy chỉnh giao diện của nhiều dòng:

  • Nhiều đường đa màu đặt các phân đoạn nhiều đường thành các màu khác nhau.
  • Nhiều đường chuyển màu tô màu một đa giác bằng cách sử dụng độ dốc là hai màu.
  • Đường đa giác bị hỏng tạo kiểu nhiều đường bằng cách sử dụng các bitmap lặp lại.

Để sử dụng tính năng Tuỳ chỉnh Polyline, bạn phải sử dụng SDK Maps 18.1.0 trở lên cho Android và sử dụng SDK Maps mới nhất dành cho trình kết xuất Android.

Tạo một đường nhiều màu

Bản đồ với nhiều đường kẻ nhiều màu

Bạn có thể sử dụng span cho từng phân đoạn màu của một polyline bằng cách tạo các đối tượng StyleSpan và thêm các đối tượng đó vào PolylineOptions bằng cách sử dụng phương thức addSpan() hoặc addSpans(). Theo mặc định, mỗi mục trong mảng sẽ đặt màu của phân đoạn tương ứng. Ví dụ sau đây cho thấy việc đặt màu phân đoạn để tạo nhiều đường với các phân đoạn màu đỏ và màu xanh lục:

Java


Polyline line = map.addPolyline(new PolylineOptions()
        .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693))
        .addSpan(new StyleSpan(Color.RED))
        .addSpan(new StyleSpan(Color.GREEN)));

      

Kotlin


val line = map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(StyleSpan(Color.RED))
        .addSpan(StyleSpan(Color.GREEN))
)

      

Tạo một polyline gradient

Lập bản đồ bằng nhiều đường chuyển màu

Bạn có thể xác định độ dốc bằng cách chỉ định hai số nguyên 32 bit alpha-red-green-blue (ARGB) để chỉ định màu bắt đầu và màu kết thúc của nét vẽ. Đặt thuộc tính này trên đối tượng tùy chọn hình dạng bằng cách gọi PolylineOptions.addSpan(). Ví dụ sau cho thấy việc tạo nhiều đường dốc từ màu đỏ đến màu vàng từ Vườn thú Park Park đến Kirkland, Washington.

Java


Polyline line = map.addPolyline(new PolylineOptions()
        .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693))
        .addSpan(new StyleSpan(StrokeStyle.gradientBuilder(Color.RED, Color.YELLOW).build())));

      

Kotlin


val line = map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(
            StyleSpan(
                StrokeStyle.gradientBuilder(
                    Color.RED,
                    Color.YELLOW
                ).build()
            )
        )
)

      

Tạo một đường kẻ nhiều đường

Bản đồ có đường kẻ nhiều đường

Bạn có thể đặt giao diện của nhiều hình thành hoạ tiết bitmap lặp lại. Để thực hiện việc này, hãy tạo một StampStyle với TextureStyle, sau đó thiết lập thuộc tính này trên đối tượng có các tuỳ chọn hình dạng bằng cách gọi PolylineOptions.addSpan() như dưới đây:

Java


StampStyle stampStyle =
        TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build();
StyleSpan span = new StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build());
map.addPolyline(new PolylineOptions()
        .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693))
        .addSpan(span));

      

Kotlin


val stampStyle =
    TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build()
val span = StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build())
map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(span)
)

      

Sự kiện nhiều đường

Theo mặc định, nhiều đường không thể nhấp vào được. Bạn có thể bật và tắt tính năng có thể nhấp bằng cách gọi Polyline.setClickable(boolean).

Sử dụng OnPolylineClickListener để nghe các sự kiện nhấp vào một hình đa giác có thể nhấp. Để thiết lập trình nghe này trên bản đồ, hãy gọi GoogleMap.setOnPolylineClickListener(OnPolylineClickListener). Khi người dùng nhấp vào một hình nhiều đường, bạn sẽ nhận được một lệnh gọi lại onPolylineClick(Polyline).

Đa giác

Đối tượng Polygon tương tự như các đối tượng Polyline ở chỗ chúng bao gồm một loạt toạ độ theo trình tự. Tuy nhiên, thay vì được mở làm đa giác, thì đa giác được thiết kế để xác định các vùng trong một vòng lặp kín có nội thất được điền vào.

Bạn có thể thêm Polygon vào bản đồ theo cách tương tự như khi thêm Polyline. Trước tiên, hãy tạo một đối tượng PolygonOptions rồi thêm một số đ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. Sau đó, bạn thêm đa giác vào bản đồ bằng cách gọi GoogleMap.addPolygon(PolygonOptions) sẽ trả về một đối tượng Polygon.

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

Java


// Instantiates a new Polygon object and adds points to define a rectangle
PolygonOptions polygonOptions = new PolygonOptions()
    .add(new LatLng(37.35, -122.0),
        new LatLng(37.45, -122.0),
        new LatLng(37.45, -122.2),
        new LatLng(37.35, -122.2),
        new LatLng(37.35, -122.0));

// Get back the mutable Polygon
Polygon polygon = map.addPolygon(polygonOptions);

      

Kotlin


// Instantiates a new Polygon object and adds points to define a rectangle
val rectOptions = PolygonOptions()
    .add(
        LatLng(37.35, -122.0),
        LatLng(37.45, -122.0),
        LatLng(37.45, -122.2),
        LatLng(37.35, -122.2),
        LatLng(37.35, -122.0)
    )

// Get back the mutable Polygon
val polygon = map.addPolygon(rectOptions)

      

Để thay đổi hình dạng của đa giác sau khi thêm đa giác, bạn có thể gọi Polygon.setPoints() và cung cấp danh sách các điểm mới cho đường viền của đa giác.

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 đồ. Xem mục tùy chỉnh giao diện bên dưới để biết thêm chi tiết.

Tự động hoàn thành đa giác

Đa giác trong ví dụ trên bao gồm 5 tọa độ, nhưng hãy lưu ý rằng các tọa độ đầu tiên và cuối cùng là cùng một vị trí, xác định vòng lặp. Tuy nhiên, trên thực tế, do đa giác xác định các khu vực đóng nên bạn không cần xác định toạ độ cuối cùng này. Nếu toạ độ cuối cùng khác với toạ độ đầu tiên, API sẽ tự động "đóng" đa giác bằng cách thêm toạ độ đầu tiên vào cuối chuỗi toạ độ.

Hai đa giác bên dưới tương đương nhau và việc gọi polygon.getPoints() cho mỗi đa giác sẽ trả về cả 4 điểm.

Java


Polygon polygon1 = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5),
        new LatLng(0, 0))
    .strokeColor(Color.RED)
    .fillColor(Color.BLUE));

Polygon polygon2 = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5))
    .strokeColor(Color.RED)
    .fillColor(Color.BLUE));

      

Kotlin


val polygon1 = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0),
            LatLng(0.0, 0.0)
        )
        .strokeColor(Color.RED)
        .fillColor(Color.BLUE)
)
val polygon2 = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0)
        )
        .strokeColor(Color.RED)
        .fillColor(Color.BLUE)
)

      

Tạo một đa giác rỗng

Bạn có thể kết hợp nhiều đường dẫn trong một đối tượng Polygon để tạo ra các hình dạng phức tạp, chẳng hạn như hình tròn được tô màu nền hoặc "donuts" (trong đó các khu vực đa giác xuất hiện bên trong đa giác dưới dạng "islands" Các hình dạng phức tạp luôn là thành phần của nhiều đường dẫn đơn giản hơn.

Hai đường dẫn phải được xác định trong cùng một khu vực. Hai khu vực lớn hơn xác định diện tích lấp đầy và là một đa giác đơn giản không có tùy chọn bổ sung. Sau đó, truyền đường dẫn thứ hai đến phương thức addHole(). Khi đường dẫn thứ hai nhỏ hơn được bao bọc hoàn toàn bởi đường dẫn lớn hơn, đường dẫn đó sẽ xuất hiện như thể một phần của đa giác đã bị xóa. Nếu lỗ này giao với đường viền của đa giác, thì đa giác sẽ được hiển thị mà không cần bất kỳ tô màu nào.

Đoạn mã dưới đây sẽ tạo một hình chữ nhật có một lỗ hình chữ nhật nhỏ hơn.

Java


List<LatLng> hole = Arrays.asList(new LatLng(1, 1),
    new LatLng(1, 2),
    new LatLng(2, 2),
    new LatLng(2, 1),
    new LatLng(1, 1));
Polygon hollowPolygon = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5),
        new LatLng(3, 0),
        new LatLng(0, 0))
    .addHole(hole)
    .fillColor(Color.BLUE));

      

Kotlin


val hole = listOf(
    LatLng(1.0, 1.0),
    LatLng(1.0, 2.0),
    LatLng(2.0, 2.0),
    LatLng(2.0, 1.0),
    LatLng(1.0, 1.0)
)
val hollowPolygon = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0),
            LatLng(3.0, 0.0),
            LatLng(0.0, 0.0)
        )
        .addHole(hole)
        .fillColor(Color.BLUE)
)

      

Đa giác rỗng xuất hiện trên bản đồ như minh hoạ dưới đây:

Bản đồ có hình chữ nhật rỗng

Sự kiện đa giác

Theo mặc định, bạn không thể nhấp vào các đa giác. Bạn có thể bật và tắt tính năng có thể nhấp bằng cách gọi Polygon.setClickable(boolean).

Sử dụng OnPolygonClickListener để nghe các sự kiện trên một đa giác có thể nhấp. Để thiết lập trình nghe này trên bản đồ, hãy gọi GoogleMap.setOnPolygonClickListener(OnPolygonClickListener). Khi người dùng nhấp vào một đa giác, bạn sẽ nhận được lệnh gọi lại onPolygonClick(Polygon).

Các vòng tròn

Bản đồ có vòng tròn

Ngoài một lớp Polygon chung, API Maps cũng bao gồm các lớp cụ thể cho các đối tượng Circle, để đơn giản hoá quá trình xây dựng.

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

  • center dưới dạng LatLng.
  • 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 so với 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.

Để thay đổi hình dạng của vòng tròn sau khi thêm, bạn có thể gọi Circle.setRadius() hoặc Circle.setCenter() và cung cấp các giá trị mới.

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 đồ. Xem mục tùy chỉnh giao diện bên dưới để biết thêm chi tiết.

Đoạn mã sau đây sẽ thêm một vòng tròn vào bản đồ bằng cách tạo một đối tượng CircleOptions và gọi GoogleMap.addCircle(CircleOptions):

Java


// Instantiates a new CircleOptions object and defines the center and radius
CircleOptions circleOptions = new CircleOptions()
    .center(new LatLng(37.4, -122.1))
    .radius(1000); // In meters

// Get back the mutable Circle
Circle circle = map.addCircle(circleOptions);

      

Kotlin


// Instantiates a new CircleOptions object and defines the center and radius
val circleOptions = CircleOptions()
    .center(LatLng(37.4, -122.1))
    .radius(1000.0) // In meters

// Get back the mutable Circle
val circle = map.addCircle(circleOptions)

      

Sự kiện trong vòng kết nối

Theo mặc định, vòng kết nối không thể nhấp được. Bạn có thể bật và tắt tính năng có thể nhấp bằng cách gọi GoogleMap.addCircle() với CircleOptions.clickable(boolean) hoặc gọi Circle.setClickable(boolean).

Sử dụng OnCircleClickListener để theo dõi các sự kiện trên một vòng kết nối có thể nhấp. Để thiết lập trình nghe này trên bản đồ, hãy gọi GoogleMap.setOnCircleClickListener(OnCircleClickListener).

Khi người dùng nhấp vào một vòng kết nối, bạn sẽ nhận được lệnh gọi lại onCircleClick(Circle), như thể hiện trong mã mẫu sau:

Java


Circle circle = map.addCircle(new CircleOptions()
    .center(new LatLng(37.4, -122.1))
    .radius(1000)
    .strokeWidth(10)
    .strokeColor(Color.GREEN)
    .fillColor(Color.argb(128, 255, 0, 0))
    .clickable(true));

map.setOnCircleClickListener(new GoogleMap.OnCircleClickListener() {
    @Override
    public void onCircleClick(Circle circle) {
        // Flip the r, g and b components of the circle's stroke color.
        int strokeColor = circle.getStrokeColor() ^ 0x00ffffff;
        circle.setStrokeColor(strokeColor);
    }
});

      

Kotlin


val circle = map.addCircle(
    CircleOptions()
        .center(LatLng(37.4, -122.1))
        .radius(1000.0)
        .strokeWidth(10f)
        .strokeColor(Color.GREEN)
        .fillColor(Color.argb(128, 255, 0, 0))
        .clickable(true)
)
map.setOnCircleClickListener {
    // Flip the r, g and b components of the circle's stroke color.
    val strokeColor = it.strokeColor xor 0x00ffffff
    it.strokeColor = strokeColor
}

      

Tùy chỉnh giao diện

Bạn có thể thay đổi giao diện của một hình dạng cả trước khi hình dạng đó được thêm vào bản đồ (bằng cách chỉ định thuộc tính mong muốn trên đối tượng tuỳ chọn) hoặc sau khi đối tượng đã được thêm vào bản đồ. Phương thức getter cũng được hiển thị cho tất cả thuộc tính để bạn có thể dễ dàng truy cập vào trạng thái hiện tại của hình dạng.

Đoạn mã sau đây thêm một đường kẻ nhiều màu xanh dương cùng các phân đoạn trắc địa từ Melbourne đến Perth. Các phần dưới đây sẽ giải thích chi tiết hơn về các thuộc tính này.

Java


Polyline polyline = map.addPolyline(new PolylineOptions()
    .add(new LatLng(-37.81319, 144.96298), new LatLng(-31.95285, 115.85734))
    .width(25)
    .color(Color.BLUE)
    .geodesic(true));

      

Kotlin


val polyline = map.addPolyline(
    PolylineOptions()
        .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734))
        .width(25f)
        .color(Color.BLUE)
        .geodesic(true)
)

      

Bản đồ xuất hiện như bên dưới:

Bản đồ nhiều đường từ Melbourne đến Perth

Lưu ý: Mặc dù hầu hết các hình dạng này đều có thể áp dụng cho hình dạng bất kỳ, nhưng một số thuộc tính có thể không phù hợp với một số hình dạng nhất định (ví dụ: Hình nhiều đường không có màu tô vì không có nội thất).

Màu nét

Màu nét vẽ là một số nguyên 32 bit alpha-red-green-blue (ARGB) chỉ định độ mờ và màu sắc của nét vẽ. Đặt thuộc tính này trên đối tượng tùy chọn hình dạng bằng cách gọi *Options.strokeColor() (hoặc PolylineOptions.color() trong trường hợp nhiều đường). Nếu bạn không chỉ định, màu nét mặc định sẽ là màu đen (Color.BLACK).

Sau khi hình dạng đã được thêm vào bản đồ, bạn có thể truy cập màu của nét vẽ bằng cách gọi getStrokeColor() (hoặc getColor() cho nhiều đường) và có thể thay đổi bằng cách gọi setStrokeColor() (setColor() for a polyline).

Màu nền

Màu tô chỉ áp dụng cho hình đa giác và hình tròn. Không áp dụng cho nhiều đường kẻ do không có nội thất được xác định. Đối với đa giác, các vùng bên trong đa giác không nằm trong nội bộ của đa giác và sẽ không được tô màu nếu màu tô được đặt.

Màu tô là một số nguyên 32 bit alpha-red-green-blue (ARGB) chỉ định độ mờ và màu của nội thất của hình dạng. Đặt thuộc tính này trên đối tượng tùy chọn hình dạng bằng cách gọi *Options.fillColor(). Nếu không xác định thì màu nét vẽ mặc định là trong suốt (Color.TRANSPARENT).

Sau khi hình dạng được thêm vào bản đồ, bạn có thể truy cập màu tô nền bằng cách gọi getFillColor() và có thể thay đổi bằng cách gọi setFillColor().

Độ rộng nét

Chiều rộng của nét vẽ, dưới dạng số thực tính bằng pixel (px). Chiều rộng không phóng to khi bản đồ được thu phóng (tức là hình dạng sẽ có cùng chiều rộng nét vẽ ở tất cả các mức thu phóng). Đặt thuộc tính này trên đối tượng lựa chọn hình dạng bằng cách gọi *Options.strokeWidth() (hoặc PolylineOptions.width() đối với hình nhiều đường). Nếu bạn chưa chỉ định, thì nét vẽ mặc định có kích thước 10 pixel.

Sau khi hình dạng được thêm vào bản đồ, bạn có thể truy cập vào chiều rộng nét vẽ bằng cách gọi getStrokeWidth() (hoặc getWidth() đối với nhiều đường kẻ) và có thể thay đổi bằng cách gọi setStrokeWidth() (setWidth() for a polyline).

Mẫu nét vẽ

Mẫu nét vẽ mặc định là một đường liền nét cho đa giác và cho các đường viền của đa giác và vòng tròn. Bạn có thể chỉ định một mẫu nét vẽ tuỳ chỉnh của các đối tượng PatternItem, trong đó mỗi mục là một dấu gạch ngang, một dấu chấm hoặc một khoảng trống.

Mẫu sau đây đặt mẫu cho một đa giác thành một trình tự lặp lại của một dấu chấm, theo sau là một khoảng trống dài 20 pixel, một dấu gạch ngang dài 30 pixel và một khoảng trống 20 pixel khác.

Java


List<PatternItem> pattern = Arrays.asList(
    new Dot(), new Gap(20), new Dash(30), new Gap(20));
polyline.setPattern(pattern);

      

Kotlin


val pattern = listOf(
    Dot(), Gap(20F), Dash(30F), Gap(20F)
)
polyline.pattern = pattern

      

Mẫu này lặp lại dọc theo đường kẻ, bắt đầu bằng mục mẫu đầu tiên tại đỉnh đầu tiên được chỉ định cho hình dạng.

Loại khớp

Đối với các đường đa giác và đường viền của đa giác, bạn có thể chỉ định một cạnh xiên hoặc hình tròn JointType để thay thế loại mối nối cố định mặc định.

Mẫu sau đây áp dụng kiểu khớp tròn cho nhiều đường:

Java


polyline.setJointType(JointType.ROUND);

      

Kotlin


polyline.jointType = JointType.ROUND

      

Loại khớp ảnh hưởng đến các đường cong nội bộ trong đường kẻ. Nếu đường kẻ có hoa văn nét vẽ bao gồm dấu gạch ngang, thì kiểu khớp cũng được áp dụng khi dấu gạch ngang khớp với một khớp. Loại kết hợp không ảnh hưởng đến các dấu chấm vì chúng luôn là vòng tròn.

Giới hạn dòng

Bạn có thể chỉ định kiểu Cap cho mỗi đầu của một đa giác. Các tuỳ chọn là mông (mặc định), hình vuông, hình tròn hoặc bitmap tuỳ chỉnh. Đặt kiểu trong PolylineOptions.startCapPolylineOptions.endCap hoặc sử dụng các phương thức getter và setter thích hợp.

Đoạn mã sau đây chỉ định giới hạn hình tròn ở đầu một hình nhiều đường.

Java


polyline.setStartCap(new RoundCap());

      

Kotlin


polyline.startCap = RoundCap()

      

Đoạn mã sau đây chỉ định một bitmap tuỳ chỉnh cho hình tĩnh.

Java


polyline.setEndCap(
    new CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16));

      

Kotlin


polyline.endCap = CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16F)

      

Khi sử dụng bitmap tuỳ chỉnh, bạn nên chỉ định chiều rộng nét vẽ tham chiếu bằng pixel. API điều chỉnh bitmap cho phù hợp. Chiều rộng nét vẽ tham chiếu là chiều rộng nét vẽ mà bạn đã sử dụng khi thiết kế hình ảnh bitmap cho chữ hoa, ở kích thước ban đầu của hình ảnh. Chiều rộng nét tham chiếu mặc định là 10 pixel. Gợi ý: Để xác định chiều rộng của nét vẽ tham chiếu, hãy mở hình ảnh bitmap ở mức thu phóng 100% trong trình chỉnh sửa hình ảnh và vẽ chiều rộng mong muốn của nét vẽ so với hình ảnh.

Nếu bạn dùng BitmapDescriptorFactory.fromResource() để tạo bitmap, hãy nhớ sử dụng tài nguyên không phụ thuộc vào mật độ (nodpi).

Phân đoạn trắc địa

Cài đặt trắc địa chỉ áp dụng cho đa đường và đa giác. Không áp dụng cho vòng kết nối vì các vòng kết nối này không được xác định là một tập hợp các phân khúc.

Chế độ cài đặt trắc địa xác định cách vẽ các phân đoạn giữa các đỉnh liên tiếp của đa giác/đa giác. Các đoạn trắc địa là những đoạn đường đi theo đường đi ngắn nhất dọc theo bề mặt Trái Đất (một hình cầu) và thường xuất hiện dưới dạng các đường cong trên bản đồ với một phép chiếu Mercator. Các đoạn không trắc địa được vẽ thành các đường thẳng trên bản đồ.

Đặt thuộc tính này trên đối tượng tùy chọn hình dạng bằng cách gọi *Options.geodesic(), trong đó true cho biết các đoạn sẽ được vẽ dưới dạng hình học và false cho biết các đoạn nên được vẽ dưới dạng đường thẳng. Nếu không xác định thì chế độ mặc định sẽ là phân đoạn không trắc địa (false).

Sau khi hình dạng được thêm vào bản đồ, bạn có thể truy cập vào chế độ cài đặt trắc địa bằng cách gọi isGeodesic() và có thể thay đổi bằng cách gọi setGeodesic().

Chỉ mục Z

Chỉ mục z chỉ định thứ tự ngăn xếp của hình dạng này, so với các lớp phủ khác (hình dạng khác, lớp phủ mặt đất và lớp phủ ô) trên bản đồ. Lớp phủ có chỉ mục z cao được vẽ phía trên các lớp phủ có chỉ mục z thấp hơn. Hai lớp phủ có cùng chỉ mục z được vẽ theo thứ tự tùy ý.

Lưu ý: Các điểm đánh dấu luôn được vẽ phía trên các lớp phủ khác, bất kể chỉ mục z của các lớp phủ khác.

Đặt thuộc tính này trên đối tượng tùy chọn hình dạng bằng cách gọi *Options.zIndex(). Nếu bạn chưa chỉ định, chỉ mục z mặc định sẽ là 0. Sau khi hình dạng được thêm vào bản đồ, chỉ mục z có thể được truy cập bằng cách gọi getZIndex() và có thể thay đổi bằng cách gọi setZIndex().

Chế độ hiển thị

Chế độ hiển thị chỉ định xem bạn có nên vẽ hình dạng trên bản đồ hay không, trong đó true sẽ cho biết bạn nên vẽ hình dạng nào và false cho biết rằng hình dạng này không nên được vẽ. Cho phép bạn tạm thời không hiển thị hình dạng trên bản đồ. Để xoá vĩnh viễn hình dạng khỏi bản đồ, hãy gọi remove() trên hình dạng đó.

Đặt thuộc tính này trên đối tượng tùy chọn hình dạng bằng cách gọi *Options.visible(). Nếu bạn không chỉ định thì chế độ hiển thị sẽ là true. Sau khi hình dạng đã được thêm vào bản đồ, bạn có thể truy cập vào chế độ hiển thị bằng cách gọi isVisible() và có thể thay đổi bằng cách gọi setVisible().

Liên kết dữ liệu với hình dạng

Bạn có thể lưu trữ một đối tượng dữ liệu tuỳ ý với đa giác, đa giác hoặc hình tròn bằng cách sử dụng phương thức setTag() của hình dạng và truy xuất đối tượng đó bằng getTag(). Ví dụ: hãy gọi Polyline.setTag() để lưu trữ một đối tượng dữ liệu bằng nhiều đường kẻ và gọi Polyline.getTag() để truy xuất đối tượng dữ liệu đó.

Đoạn mã dưới đây định nghĩa một thẻ tuỳ ý (A) cho đa giác được chỉ định:

Java


Polyline polyline = map.addPolyline((new PolylineOptions())
    .clickable(true)
    .add(new LatLng(-35.016, 143.321),
        new LatLng(-34.747, 145.592),
        new LatLng(-34.364, 147.891),
        new LatLng(-33.501, 150.217),
        new LatLng(-32.306, 149.248),
        new LatLng(-32.491, 147.309)));

polyline.setTag("A");

      

Kotlin


val polyline = map.addPolyline(
    PolylineOptions()
        .clickable(true)
        .add(
            LatLng(-35.016, 143.321),
            LatLng(-34.747, 145.592),
            LatLng(-34.364, 147.891),
            LatLng(-33.501, 150.217),
            LatLng(-32.306, 149.248),
            LatLng(-32.491, 147.309)
        )
)
polyline.tag = "A"

      

Dưới đây là một số ví dụ về các tình huống mà bạn nên lưu trữ và truy xuất dữ liệu bằng các hình dạng:

  • Ứng dụng của bạn có thể phục vụ các loại hình dạng khác nhau và bạn muốn xử lý chúng theo nhiều cách khi người dùng nhấp vào các hình dạng đó.
  • Bạn có thể giao tiếp với một hệ thống có giá trị nhận dạng bản ghi duy nhất, trong đó hình dạng đại diện cho các bản ghi cụ thể trong hệ thống đó.
  • Dữ liệu hình dạng có thể cho biết mức độ ưu tiên để xác định chỉ mục z cho hình dạng.