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 đồ của bạn để tuỳ chỉnh chúng cho ứng dụng của bạn.
Polyline
là một chuỗi các đoạn thẳng được kết nối có thể tạo hình bất kỳ bạn muốn và có thể được dùng để đánh dấu các đường đi và tuyến đường trên bản đồ.Polygon
là một hình dạng kèm theo có thể dùng để đánh dấu các khu vực trên bản đồ.Circle
là phép chiếu hình tròn chính xác về mặt địa lý trên bề mặt Trái Đất được vẽ trên bản đồ.
Đối với tất cả các hình dạng này, bạn có thể tùy chỉnh giao diện của chúng bằng cách thay đổi số lượng thuộc tính.
Mã mẫu
Hướng dẫn về cách thêm đa giác và hình nhiều đường thể hiện 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 mẫu minh hoạ cách sử dụng các hình dạng và các đặc điểm của chúng:
- Vòng tròn Circle DemoActivity (Java / Kotlin): Vòng kết nối
- PolygonDemoActivity (Java / Kotlin): Polygon
- PolylinedemoActivity (Java / Kotlin): Polyline
Hình nhiều đường
Lớp Polyline
xác định một tập hợp các đường kết nối
trên bản đồ. Đối tượng Polyline
bao gồm một tập hợp
LatLng
vị trí và tạo một loạt các phân khúc đối tượng
kết nối các vị trí đó theo một trình tự theo thứ tự.
Video này đưa ra các ý tưởng về cách giúp người dùng của bạn truy cập vào đó, bằng cách dùng hình nhiều đường để vẽ đường đi trên bản đồ.
Để tạo một Hình nhiều đường, trước tiên hãy tạo một PolylineOptions
đối tượng và thêm điểm vào đối tượng đó. Các điểm biểu thị một điểm trên bề mặt trái đất,
và được biểu thị dưới dạng đối tượng LatLng
. Đã vẽ các đoạn thẳng
giữa các điểm theo thứ tự mà bạn thêm chú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 sử dụng một số lượng tham số có thể thay đổi, vì vậy, 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 hình nhiều đường vào bản đồ bằng cách gọi
GoogleMap.addPolyline(PolylineOptions)
. Chiến lược phát hành đĩa đơn
phương thức trả về đối tượng Polyline
mà bạn có thể thay đổi hình nhiều đường tại
lúc khác.
Đoạn mã sau minh hoạ cách thêm một hình chữ nhật vào bản đồ:
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)
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);
Hình chữ nhật này sẽ xuất hiện trên bản đồ như minh hoạ dưới đây:
Để thay đổi hình dạng của hình nhiều đường sau khi thêm vào, bạn có thể gọi
Polyline.setPoints()
và cung cấp danh sách các điểm mới cho hình nhiều đường.
Bạn có thể tuỳ chỉnh hình thức của hình nhiều đường trước khi thêm vào bản đồ và sau khi được thêm vào bản đồ. Xem phần này trên tuỳ 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 tuỳ chỉnh hình thức của hình nhiều đường:
- Hình nhiều đường đặt các đoạn nhiều đường thành nhiều màu khác nhau.
- Hình nhiều đường chuyển màu tô màu một hình nhiều đường bằng cách sử dụng độ dốc của hai màu.
- Hình nhiều đường được đóng dấu tạo kiểu cho hình nhiều đường bằng cách sử dụng bitmap lặp lại.
Để sử dụng Tùy chỉnh nhiều đường, bạn phải sử dụng 18.1.0 trở lên của SDK Maps dành cho Android và sử dụng SDK Maps mới nhất dành cho trình kết xuất đồ hoạ Android.
Tạo hình nhiều màu
Bạn có thể sử dụng span để tô màu từng đoạn của một hình nhiều đường 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 addSpan()
hoặc addSpans()
. Theo mặc định, mỗi mục trong mảng sẽ đặt màu
của đoạn đường tương ứng. Ví dụ sau đây minh hoạ cách thiết lập phân đoạn
các màu để tạo hình nhiều đường có các đoạn màu đỏ và xanh lục:
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)) )
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)));
Tạo hình nhiều đường chuyển màu
Bạn có thể xác định độ dốc bằng cách chỉ định hai alpha-đỏ-xanh-lam (ARGB) 32 bit
số nguyên, để chỉ định màu bắt đầu và màu kết thúc của nét vẽ. Thiết lập
trên đối tượng tuỳ chọn của hình dạng bằng cách gọi PolylineOptions.addSpan()
.
Ví dụ sau đây minh hoạ việc tạo một hình nhiều đường chuyển màu từ đỏ sang vàng từ
Vườn thú Woodland Park đến Kirkland, WA.
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() ) ) )
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())));
Tạo một hình nhiều đường có dấu
Bạn có thể thiết lập giao diện của hình nhiều đường thành hoạ tiết bitmap lặp lại. Việc cần làm
thực hiện thao tác này, hãy tạo một StampStyle
trên TextureStyle
, sau đó đặt thuộc tính này trên
bằng cách gọi PolylineOptions.addSpan()
như minh hoạ dưới đây:
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) )
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));
Sự kiện hình nhiều đường
Theo mặc định, hình nhiều đường không thể nhấp vào được. Bạn có thể bật và tắt
khả năng nhấp bằng cách gọi Polyline.setClickable(boolean)
.
Sử dụng OnPolylineClickListener
để
nghe các sự kiện nhấp chuột trên một hình nhiều đường có thể nhấp. Để thiết lập trình nghe này trên bản đồ,
gọi GoogleMap.setOnPolylineClickListener(OnPolylineClickListener)
.
Khi người dùng nhấp vào hình nhiều đường, bạn sẽ nhận được
Lệnh gọi lại onPolylineClick(Polyline)
.
Đa giác
Các đối tượng Polygon
tương tự với Polyline
trong đó chúng bao gồm một chuỗi các toạ độ theo thứ tự
trình tự. Tuy nhiên, thay vì là dạng mở, đa giác được thiết kế để
xác định các vùng trong một vòng khép kín được lấp đầy phần bên trong.
Bạn có thể thêm Polygon
vào bản đồ theo cách tương tự như bạn thêm
Polyline
. Trước tiên, hãy tạo một đối tượng PolygonOptions
và thêm một vài điểm vào đó. 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ề đối tượng Polygon
.
Đoạn mã sau đây sẽ thêm một hình chữ nhật vào bản đồ.
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)
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);
Để thay đổi hình dạng của đa giác sau khi thêm nó, bạn có thể gọi
Polygon.setPoints()
và cung cấp một danh sách điểm mới cho đề cương
của đa giác.
Bạn có thể tuỳ chỉnh hình thức của đa giác trước khi thêm vào bản đồ và sau khi được thêm vào bản đồ. Xem phần này trên tuỳ 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 toạ độ, nhưng lưu ý rằng toạ độ đầu tiên và toạ độ cuối cùng ở cùng một vị trí, toạ độ này xác định vòng lặp. Tuy nhiên, trong thực tế, vì đa giác xác định diện tích khép kín, nên bạn không cần xác định toạ độ cuối cùng này. Nếu toạ độ cuối khác với toạ độ đầu tiên, API sẽ tự động "đóng" đa giác bằng cách nối toạ độ đầu tiên tại điểm kết thúc của chuỗi toạ độ.
Hai đa giác dưới đây là tương đương và đang gọi
Nếu lượt đánh giá polygon.getPoints()
cho mỗi lượt chuyển đổi, kết quả sẽ trả về là 4 điểm.
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) )
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));
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 các hình dạng phức tạp, chẳng hạn như "vòng tròn lấp lánh" hoặc "bánh vòng" (trong đó hình đa giác
các khu vực xuất hiện bên trong đa giác dưới dạng "ốc đảo"). Hình dạng phức tạp luôn là
cấu trúc gồm nhiều đường dẫn đơn giản hơn.
Phải xác định hai đường dẫn trong cùng một khu vực. Khu vực lớn hơn
xác định khu vực tô màu nền và là một đa giác đơn giản không có tuỳ chọn bổ sung.
Sau đó, truyền đường dẫn thứ hai đến phương thức addHole()
. Khi thứ hai, nhỏ hơn
đường dẫn này được bao quanh toàn bộ 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ị xoá. Nếu lỗ hổng giao cắt với đường viền của đa giác,
thì đa giác sẽ được kết xuất mà không có màu nào.
Đoạn mã dưới đây sẽ tạo một hình chữ nhật duy nhất có một hình chữ nhật nhỏ hơn .
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) )
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));
Đa giác rỗng xuất hiện trên bản đồ như minh hoạ dưới đây:
Sự kiện trong Polygon
Theo mặc định, đa giác không thể nhấp vào được. Bạn có thể bật và tắt
khả năng nhấp bằng cách gọi Polygon.setClickable(boolean)
.
Sử dụng OnPolygonClickListener
để
theo dõi các sự kiện nhấp chuột trên một đa giác có thể nhấp. Để thiết lập trình nghe này trên bản đồ,
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)
.
Vòng tròn
Ngoài lớp Polygon
chung, API Maps cũng bao gồm
cho các đối tượng Circle
để đơn giản hoá cấu trúc của các lớp đó.
Để lập đường tròn, bạn phải chỉ định hai thuộc tính sau:
center
trong vai tròLatLng
.radius
mét.
Khi đó, một đường tròn được định nghĩa là tập hợp tất cả các điểm trên bề mặt Trái Đất
cách center
cho sẵn radius
mét. Vì cách
phép chiếu Mercator được API Maps sử dụng kết xuất hình cầu trên một bề mặt phẳng,
nó 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 được đặt 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) vì
vòng tròn di chuyển ra xa đườ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()
rồi cung cấp các giá trị mới.
Bạn có thể tuỳ chỉnh giao diện của vòng kết nối trước khi thêm vào bản đồ và sau khi được thêm vào bản đồ. Xem phần này trên tuỳ chỉnh giao diện bên dưới để biết thêm chi tiết.
Đoạn mã sau đây thêm một vòng tròn vào bản đồ bằng cách tạo một vòng tròn
Đối tượng CircleOptions
và gọi
GoogleMap.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)
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);
Sự kiện vòng kết nối
Theo mặc định, bạn không thể nhấp vào vòng kết nối. Bạn có thể bật và tắt
khả năng nhấp bằng cách gọi GoogleMap.addCircle()
bằng
CircleOptions.clickable(boolean)
hoặc bằng cách gọi
Circle.setClickable(boolean)
.
Sử dụng OnCircleClickListener
để
nghe các sự kiện nhấp chuột trên vòng tròn có thể nhấp. Để thiết lập trình nghe này trên bản đồ,
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ư trong mã mẫu sau:
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 }
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); } });
Tuỳ chỉnh giao diện
Bạn có thể thay đổi giao diện của hình dạng cả trước khi nó đượ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 là cũng được hiển thị cho tất cả tài sản để bạn có thể dễ dàng truy cập vào trạng thái của hình dạng.
Đoạn mã sau đây thêm một hình nhiều đường màu xanh dương đậm có các đoạn trắc địa từ Melbourne đến Perth. Các phần dưới đây sẽ giải thích những thuộc tính này một cách chi tiết hơn chi tiết hơn.
Kotlin
val polyline = map.addPolyline( PolylineOptions() .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734)) .width(25f) .color(Color.BLUE) .geodesic(true) )
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));
Bản đồ xuất hiện như minh hoạ dưới đây:
Lưu ý: Mặc dù hầu hết các chính sách này đều có thể áp dụng cho bất kỳ hình dạng nào được mô tả, một số thuộc tính có thể không nhận biết một số hình dạng nhất định (ví dụ: Hình nhiều đường không thể có màu vì hình dạng đó không có nội thất).
Màu nét
Màu nét vẽ là số nguyên 32 bit alpha-đỏ-xanh lục-xanh (ARGB) chỉ định
độ mờ và màu sắc của nét vẽ của hình dạng. Đặt thuộc tính này trên
bằng cách gọi *Options.strokeColor()
(hoặc
PolylineOptions.color()
trong trường hợp hình nhiều đường). Nếu bạn không chỉ định,
màu nét vẽ mặc định là đen (Color.BLACK
).
Sau khi hình đã được thêm vào bản đồ, bạn có thể truy cập màu nét vẽ bằng cách
gọi getStrokeColor()
(hoặc getColor()
đối với hình nhiều đường) và có thể thay đổi được
bằng cách gọi setStrokeColor()
(setColor() for a polyline
).
Màu nền
Màu nền chỉ áp dụng cho đa giác và hình tròn. Không áp dụng cho hình nhiều đường vì chúng không xác định phần nội thất. Đối với đa giác, các vùng bên trong các lỗ của nó không phải là một phần của bên trong đa giác và sẽ không nếu đã đặt màu nền.
Màu tô là số nguyên 32 bit alpha-đỏ-xanh lục-lam (ARGB) chỉ định giá trị
độ mờ và màu sắc của nội thất bên trong hình dạng. Đặt thuộc tính này trên
đối tượng tuỳ chọn của hình dạng bằng cách gọi *Options.fillColor()
. Nếu bạn không chỉ định,
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 vào màu nền bằng cách
gọi getFillColor()
và có thể được thay đổi bằng cách gọi setFillColor()
.
Độ rộng nét
Độ rộng của nét vẽ, dưới dạng số thực tính bằng pixel
(pixel). Chiều rộng sẽ không được điều chỉnh theo tỷ lệ khi thu phóng bản đồ (ví dụ: hình sẽ có
cùng chiều rộng nét vẽ ở tất cả mức thu phóng). Đặt thuộc tính này trên
bằng cách gọi *Options.strokeWidth()
(hoặc PolylineOptions.width()
)
cho hình nhiều đường). Nếu không chỉ định, nét vẽ mặc định là 10 pixel.
Sau khi hình được thêm vào bản đồ, chiều rộng nét có thể được truy cập bằng
gọi getStrokeWidth()
(hoặc getWidth()
đối với hình nhiều đường) và có thể thay đổi được
bằng cách gọi setStrokeWidth()
(setWidth() for a polyline
).
Mẫu nét chữ
Mẫu nét vẽ mặc định là đường nét liền cho hình nhiều đường và đường viền của
đa giác và hình tròn. Bạn có thể chỉ định mẫu nét vẽ tuỳ chỉnh của
Đố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 cách.
Mẫu sau đây thiết lập mẫu cho một hình nhiều đường thành lặp lại chuỗi một dấu chấm, theo sau là một khoảng trống có độ dài 20 pixel, một dấu gạch ngang dài 30 pixel và một khoảng cách 20 pixel khác.
Kotlin
val pattern = listOf( Dot(), Gap(20F), Dash(30F), Gap(20F) ) polyline.pattern = pattern
Java
List<PatternItem> pattern = Arrays.asList( new Dot(), new Gap(20), new Dash(30), new Gap(20)); polyline.setPattern(pattern);
Mẫu lặp lại dọc theo dòng, bắt đầu với mục mẫu đầu tiên ở đỉnh đầu tiên được chỉ định cho hình dạng.
Loại khớp
Đối với hình nhiều đường và đường viền đa giác, bạn có thể chỉ định một góc xiên hoặc hình tròn
JointType
để thay thế loại khớp nối cố định mặc định.
Mẫu sau đây áp dụng kiểu khớp tròn cho một hình nhiều đường:
Kotlin
polyline.jointType = JointType.ROUND
Java
polyline.setJointType(JointType.ROUND);
Kiểu khớp ảnh hưởng đến các đường cong bên trong đường thẳng. Nếu đường thẳng có nét vẽ mẫu bao gồm dấu gạch ngang, thì kiểu khớp cũng áp dụng khi thanh ngang doanh nghiệp. Các kiểu khớp không ảnh hưởng đến dấu chấm vì chúng luôn có hình tròn.
Giới hạn dòng
Bạn có thể chỉ định kiểu Cap
cho mỗi đầu của hình nhiều đường. 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.startCap
và
PolylineOptions.endCap
hoặc sử dụng
phương thức getter và setter thích hợp.
Đoạn mã sau đây chỉ định một mũ tròn ở đầu hình nhiều đường.
Kotlin
polyline.startCap = RoundCap()
Java
polyline.setStartCap(new RoundCap());
Đoạn mã sau đây chỉ định một bitmap tuỳ chỉnh cho hình tĩnh:
Kotlin
polyline.endCap = CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16F)
Java
polyline.setEndCap( new CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16));
Khi sử dụng bitmap tuỳ chỉnh, bạn nên chỉ định chiều rộng nét tham chiếu trong điểm ảnh. API điều chỉnh bitmap theo tỷ lệ. Chiều rộng của nét chữ tham chiếu là chiều rộng nét mà bạn đã sử dụng khi thiết kế hình ảnh bitmap cho phần mũ, ở phần kích thước ban đầu của hình ảnh. Chiều rộng mặc định của nét chữ tham chiếu là 10 điểm ảnh. Gợi ý: Để xác định chiều rộng nét tham chiếu, hãy mở hình ảnh bitmap của bạn tại Phóng to 100% trong trình chỉnh sửa hình ảnh và vẽ đồ thị độ rộng mong muốn của nét vẽ so với hình ảnh.
Nếu bạn sử dụng
BitmapDescriptorFactory.fromResource()
để tạo bitmap, hãy đảm bảo bạn sử dụng tài nguyên không phụ thuộc vào mật độ
(nodpi).
Đoạn trắc địa
Chế độ cài đặt trắc địa chỉ áp dụng cho hình nhiều đường và đa giác. Không áp dụng vào vòng kết nối vì chúng không được định nghĩa là tập hợp các phân đoạn.
Cài đặt trắc địa xác định cách các đoạn thẳng giữa các đoạn liên tiếp các đỉnh của hình nhiều đường/đa giác sẽ được vẽ. Đoạn trắc địa là những đoạn đi theo đường ngắn nhất dọc theo bề mặt Trái Đất (hình cầu) và thường hiện ra dưới dạng các đường cong trên bản đồ với phép chiếu Mercator. Phi trắc địa các phân đoạn được vẽ dưới dạng đường thẳng trên bản đồ.
Đặt thuộc tính này trên đối tượng tuỳ chọn của hình dạng bằng cách gọi
*Options.geodesic()
, trong đó true
cho biết các đoạn phải được vẽ dưới dạng
đường trắc địa và false
cho biết các đoạn phải được vẽ dưới dạng đường thẳng.
Nếu bạn không chỉ định, giá trị mặc định sẽ là các đoạn đường không thuộc địa hình (false
).
Sau khi hình dạng đã được thêm vào bản đồ, bạn có thể truy cập vào cài đặt trắc địa
bằng cách gọi isGeodesic()
. Bạn 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 chỉ số khác lớp phủ (các hình dạng khác, lớp phủ trên mặt đất và lớp phủ ô) trên bản đồ. Lớp phủ có chỉ mục z cao sẽ được vẽ bên trên 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ự tuỳ ý.
Lưu ý rằng đ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 tuỳ chọn của hình dạng bằng cách gọi *Options.zIndex()
.
Nếu bạn không chỉ định, chỉ mục z mặc định sẽ là 0
. Sau khi hình dạng được thêm vào
chỉ mục z có thể được truy cập bởi
gọi getZIndex()
và có thể được thay đổi bằng cách gọi setZIndex()
.
Chế độ hiển thị
Chế độ hiển thị chỉ định xem hình dạng có nên được vẽ trên bản đồ hay không, nơi
true
cho biết cần vẽ và false
cho biết không nên vẽ. Nó
cho phép bạn tạm thời không hiển thị một hình dạng trên bản đồ. Đến vĩnh viễn
xoá hình dạng khỏi bản đồ, gọi remove()
trên hình dạng đó.
Đặt thuộc tính này trên đối tượng tuỳ chọn của hình dạng bằng cách gọi
*Options.visible()
. Nếu bạn không chỉ định, chế độ hiển thị mặc định 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ể được thay đổi bằng cách gọi setVisible()
.
Liên kết dữ liệu với một hình dạng
Bạn có thể lưu trữ một đối tượng dữ liệu tuỳ ý dưới dạng hình nhiều đường, đ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 cách sử dụng getTag()
.
Ví dụ: gọi Polyline.setTag()
để lưu trữ dữ liệu
đối tượng có hình nhiều đường và gọi Polyline.getTag()
đến
truy xuất đối tượng dữ liệu.
Đoạn mã dưới đây xác định một thẻ tuỳ ý (A
) cho hình nhiều đường được chỉ định:
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"
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");
Dưới đây là một số ví dụ về các trường hợp hữu ích trong việc lưu trữ và truy xuất dữ liệu có hình dạng:
- Có thể ứng dụng của bạn sẽ phù hợp với nhiều loại hình dạng và bạn cần phải xử lý chúng khác nhau khi người dùng nhấp vào quảng cáo.
- Bạn có thể đang tiếp xúc với một hệ thống có mã nhận dạng bản ghi duy nhất, trong đó các hình đạ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 của bạn.