Sử dụng API Google Maps trong ứng dụng của bạn – Xamarin – sử dụng google maps api

Cách triển khai các tính năng API v2 của Google Maps trong ứng dụng Xamarin.Android của bạn.

Bạn đang xem : sử dụng google maps api

Sử dụng API Google Maps trong ứng dụng của bạn

Trong bài viết này

Sử dụng ứng dụng Bản đồ là rất tốt, nhưng đôi khi bạn muốn bao gồm
bản đồ trực tiếp trong ứng dụng của bạn. Ngoài các bản đồ tích hợp sẵn
ứng dụng, Google cũng cung cấp một
API bản đồ gốc dành cho Android .
API Maps phù hợp cho các trường hợp bạn muốn duy trì nhiều hơn
kiểm soát trải nghiệm lập bản đồ. Những điều có thể với
API Maps bao gồm:

  • Thay đổi góc nhìn của bản đồ theo chương trình.
  • Thêm và tùy chỉnh các điểm đánh dấu.
  • Chú thích bản đồ bằng các lớp phủ.

Không giống như Google Maps Android API v1 hiện không được dùng nữa, Google Maps
API Android v2 là một phần của
Dịch vụ của Google Play .
Một ứng dụng Xamarin.Android phải đáp ứng một số điều kiện tiên quyết bắt buộc trước khi
có thể sử dụng API Google Maps dành cho Android.

Điều kiện tiên quyết của API Google Maps

Bạn cần thực hiện một số bước trước khi có thể sử dụng API Maps, bao gồm:

Nhận Khóa API Google Maps

Bước đầu tiên là lấy khóa API Google Maps (lưu ý rằng bạn không thể
sử dụng lại khóa API từ API Google Maps v1 cũ). Để biết thông tin về
cách lấy và sử dụng khóa API với Xamarin.Android, xem
Nhận Khóa API Google Maps .

Cài đặt SDK dịch vụ của Google Play

Dịch vụ của Google Play là công nghệ của Google cho phép Android
ứng dụng để tận dụng các tính năng khác nhau của Google như
Google+, Thanh toán trong ứng dụng và Maps. Các tính năng này có thể truy cập vào
Các thiết bị Android làm dịch vụ nền, được chứa trong
APK Dịch vụ của Google Play .

Các ứng dụng Android tương tác với Dịch vụ của Google Play thông qua
Thư viện ứng dụng Dịch vụ của Google Play. Thư viện này chứa
giao diện và các lớp cho các dịch vụ riêng lẻ như Bản đồ. Các
sơ đồ sau đây cho thấy mối quan hệ giữa một ứng dụng Android
và Dịch vụ của Google Play:

API Android Maps được cung cấp như một phần của Dịch vụ Google Play.
Trước khi ứng dụng Xamarin.Android có thể sử dụng API Maps, Google
SDK dịch vụ Play phải được cài đặt bằng Trình quản lý SDK Android . Sau
ảnh chụp màn hình hiển thị vị trí trong Trình quản lý SDK Android, Google Play
khách hàng có thể tìm thấy dịch vụ:

Lưu ý

APK các dịch vụ của Google Play là một sản phẩm được cấp phép
điều đó có thể không có trên tất cả các thiết bị. Nếu nó chưa được cài đặt, thì
Google Maps sẽ không hoạt động trên thiết bị.

Cài đặt gói Xamarin.GooglePlayServices.Maps từ NuGet

Gói Xamarin.GooglePlayServices.Maps chứa các liên kết Xamarin.Android cho API Bản đồ dịch vụ của Google Play.
Để thêm gói Bản đồ dịch vụ của Google Play, hãy nhấp chuột phải vào
thư mục Tham chiếu của dự án của bạn trong Trình khám phá Giải pháp và
nhấp vào Quản lý các gói NuGet … :

Thao tác này sẽ mở Trình quản lý gói NuGet . Nhấp vào Duyệt qua và nhập
Bản đồ các dịch vụ của Google Play của Xamarin trong trường tìm kiếm. Lựa chọn
Xamarin.GooglePlayServices.Maps và nhấp vào Cài đặt . (Nếu
gói này đã được cài đặt trước đó, nhấp vào Cập nhật .):

Lưu ý rằng các gói phụ thuộc sau cũng được cài đặt:

  • Xamarin.GooglePlayServices.Base
  • Xamarin.GooglePlayServices.Basement
  • Xamarin.GooglePlayServices.Tasks

Chỉ định các quyền cần thiết

Các ứng dụng phải xác định các yêu cầu về phần cứng và quyền để sử dụng API Google Maps. Một số quyền được SDK dịch vụ của Google Play cấp tự động và nhà phát triển không cần phải thêm chúng một cách rõ ràng vào AndroidManfest.XML :

  • Quyền truy cập vào Trạng thái Mạng – API Maps phải có thể kiểm tra
    nếu nó có thể tải xuống các ô bản đồ.

  • Truy cập Internet – Cần truy cập Internet để tải xuống
    các ô bản đồ và giao tiếp với Máy chủ Google Play cho API
    truy cập.

Các quyền và tính năng sau phải được chỉ định trong
AndroidManifest.XML cho Google Maps Android API:

  • OpenGL ES v2 – Ứng dụng phải khai báo yêu cầu đối với
    OpenGL ES v2.

  • Khóa API của Google Maps – Khóa API được sử dụng để xác nhận rằng
    ứng dụng đã được đăng ký và được phép sử dụng Google Play
    Dịch vụ. Nhìn thấy
    Lấy khóa API Google Maps
    để biết thông tin chi tiết về khóa này.

  • Yêu cầu ứng dụng Apache HTTP cũ – Các ứng dụng nhắm mục tiêu Android 9.0 (API cấp 28) trở lên phải chỉ định rằng ứng dụng Apache HTTP cũ là một thư viện tùy chọn để sử dụng.

  • Truy cập vào các Dịch vụ dựa trên Web của Google – Ứng dụng cần
    quyền truy cập các dịch vụ web của Google hỗ trợ Android
    API bản đồ.

  • Quyền đối với Thông báo Dịch vụ của Google Play
    ứng dụng phải được cấp quyền để nhận từ xa
    thông báo từ Dịch vụ của Google Play.

  • Quyền truy cập vào Nhà cung cấp Vị trí – Đây là các quyền tùy chọn.
    Chúng sẽ cho phép lớp GoogleMap hiển thị vị trí của
    thiết bị trên bản đồ.

Ngoài ra, Android 9 đã xóa thư viện máy khách Apache HTTP khỏi bootclasspath và do đó, nó không khả dụng cho các ứng dụng nhắm mục tiêu API 28 trở lên. Dòng sau phải được thêm vào nút application của tệp AndroidManifest.xml của bạn để tiếp tục sử dụng ứng dụng Apache HTTP trong các ứng dụng nhắm mục tiêu API 28 trở lên:

  & lt; ứng dụng ... & gt;
   ...
   & lt; using-library android: name = "org.apache.http.legacy" android: Requi = "false" / & gt;
& lt; / ứng dụng & gt;
 

Lưu ý

Các phiên bản rất cũ của Google Play SDK bắt buộc phải có một ứng dụng để yêu cầu quyền WRITE_EXTERNAL_STORAGE . Yêu cầu này không còn cần thiết với các ràng buộc Xamarin gần đây cho Dịch vụ của Google Play.

Đoạn mã sau là ví dụ về các cài đặt phải được thêm vào AndroidManifest.XML :

  & lt;? xml version = "1.0" encoding = "utf-8"? & gt;
& lt; kê khai xmlns: android = "http://schemas.android.com/apk/res/android" android: versionName = "4.5" package = "com.xamarin.docs.android.mapsandlocationdemo2" android: versionCode = "6 "& gt;
    & lt; using-sdk android: minSdkVersion = "23" android: targetSdkVersion = "28" / & gt;

    & lt;! - Google Maps dành cho Android v2 yêu cầu OpenGL ES v2 - & gt;
    & lt; using-feature android: glEsVersion = "0x00020000" android: required = "true" / & gt;

    & lt;! - Cần thiết cho các ứng dụng nhắm mục tiêu Android 9.0 trở lên - & gt;
    & lt; using-library android: name = "org.apache.http.legacy" android: Requi = "false" / & gt;

    & lt;! - Quyền nhận thông báo từ xa từ Dịch vụ của Google Play - & gt;
    & lt;! - Lưu ý ở đây rằng chúng tôi có tên gói của ứng dụng làm tiền tố cho các quyền. - & gt;
    & lt; using-allow android: name = "& lt; GÓI TÊN & gt; .permission.MAPS_RECEIVE" / & gt;
    & lt; quyền android: name = "& lt; TÊN GÓI & gt; .permission.MAPS_RECEIVE" android: protectionLevel = "signature" / & gt;

    & lt;! - Đây là tùy chọn, nhưng được khuyến nghị. Họ sẽ cho phép Maps sử dụng nhà cung cấp Vị trí của tôi. - & gt;
    & lt; use-allow android: name = "android.permission.ACCESS_COARSE_LOCATION" / & gt;
    & lt; use-allow android: name = "android.permission.ACCESS_FINE_LOCATION" / & gt;

    & lt; ứng dụng android: label = "@ string / app_name" & gt;
        & lt;! - Đặt Khóa API Google Maps V2 của bạn tại đây. - & gt;
        & lt; siêu dữ liệu android: name = "com.google.android.maps.v2.API_KEY" android: value = "YOUR_API_KEY" / & gt;
        & lt; siêu dữ liệu android: name = "com.google.android.gms.version" android: value = "@ integer / google_play_services_version" / & gt;
        & lt;! - Cần thiết cho các ứng dụng nhắm mục tiêu Android 9.0 trở lên - & gt;
        & lt; using-library android: name = "org.apache.http.legacy" android: Requi = "false" / & gt;
    & lt; / ứng dụng & gt;
& lt; / kê khai & gt;
 

Ngoài việc yêu cầu quyền AndroidManifest.XML , ứng dụng cũng phải thực hiện kiểm tra quyền trong thời gian chạy cho các quyền ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION . Xem hướng dẫn Xamarin.Android Permissions để biết thêm thông tin về cách thực hiện kiểm tra quyền trong thời gian chạy.

Tạo Trình mô phỏng với Google APIs

Trong trường hợp thiết bị Android thực có các dịch vụ của Google Play chưa được cài đặt, bạn có thể tạo hình ảnh giả lập để phát triển. Để biết thêm thông tin, hãy xem Trình quản lý thiết bị .

Lớp GoogleMap

Khi các điều kiện tiên quyết được thỏa mãn, đã đến lúc bắt đầu
phát triển ứng dụng và sử dụng Android Maps API. Các
GoogleMap
lớp là API chính mà ứng dụng Xamarin.Android sẽ sử dụng để
hiển thị và tương tác với Google Maps dành cho Android. Lớp học này có
các trách nhiệm sau:

  • Tương tác với các dịch vụ của Google Play để cấp phép ứng dụng
    với dịch vụ web của Google.

  • Tải xuống, lưu vào bộ nhớ đệm và hiển thị các ô bản đồ.

  • Hiển thị các điều khiển giao diện người dùng như xoay và thu phóng cho người dùng.

  • Vẽ các điểm đánh dấu và hình dạng hình học trên bản đồ.

GoogleMap được thêm vào Hoạt động theo một trong hai cách:

  • MapFragment
    MapFragment
    là một Fragment chuyên biệt hoạt động như một máy chủ lưu trữ cho GoogleMap
    sự vật. MapFragment yêu cầu Android API cấp 12 trở lên.
    Các phiên bản Android cũ hơn có thể sử dụng
    SupportMapFragment . Hướng dẫn này sẽ tập trung vào việc sử dụng lớp MapFragment .

  • MapView
    MapView
    là một lớp con Chế độ xem chuyên biệt, có thể hoạt động như một máy chủ lưu trữ
    Đối tượng GoogleMap . Người dùng của lớp này phải chuyển tiếp tất cả
    Các phương thức vòng đời hoạt động cho lớp MapView .

Mỗi vùng chứa này hiển thị thuộc tính Bản đồ trả về
bản sao của GoogleMap . Ưu tiên nên được dành cho
MapFragment
vì nó là một API đơn giản hơn giúp giảm số lượng mã soạn sẵn
mà nhà phát triển phải triển khai theo cách thủ công.

Thêm MapFragment vào một Hoạt động

Ảnh chụp màn hình sau là một ví dụ về MapFragment đơn giản:

Tương tự như các lớp Fragment khác, có hai cách để thêm
MapFragment đến một Hoạt động:

  • Khai báo MapFragment có thể được thêm qua XML
    tệp bố cục cho Hoạt động. Đoạn mã XML sau đây cho thấy một
    ví dụ về cách sử dụng phần tử segment :

      & lt;? xml version = "1.0" encoding = "utf-8"? & gt;
    & lt; phân mảnh xmlns: android = "http://schemas.android.com/apk/res/android"
              android: id = "@ + id / map"
              android: layout_width = "match_parent"
              android: layout_height = "match_parent"
              class = "com.google.android.gms.maps.MapFragment" / & gt;
     
  • Theo chương trình MapFragment có thể được khởi tạo theo chương trình bằng cách sử dụng phương thức MapFragment.NewInstance và sau đó đã thêm vào một Hoạt động. Đoạn mã này cho thấy cách đơn giản nhất để tạo đối tượng MapFragment và thêm vào Hoạt động:

      var mapFrag = MapFragment.NewInstance ();
        activity.FragmentManager.BeginTransaction ()
                                .Add (Resource.Id.map_container, mapFrag, "map_fragment")
                                .Làm();
    
     

    Có thể định cấu hình đối tượng MapFragment bằng cách chuyển đối tượng GoogleMapOptions sang NewInstance . Điều này sẽ được thảo luận trong phần thuộc tính GoogleMap xuất hiện ở phần sau của hướng dẫn này.

Phương thức MapFragment.GetMapAsync được sử dụng để khởi tạo GoogleMap được lưu trữ bởi phân đoạn và lấy tham chiếu đến đối tượng bản đồ được lưu trữ bởi MapFragment . Phương thức này nhận một đối tượng triển khai giao diện IOnMapReadyCallback .

Giao diện này có một phương thức duy nhất, IMapReadyCallback.OnMapReady (bản đồ MapFragment) sẽ được gọi khi ứng dụng có thể tương tác với đối tượng GoogleMap . Đoạn mã sau cho biết cách một Hoạt động Android có thể khởi tạo MapFragment và triển khai giao diện IOnMapReadyCallback :

  lớp công khai MapWithMarkersActivity: AppCompatActivity, IOnMapReadyCallback
{
    ghi đè được bảo vệ void OnCreate (Gói gói)
    {
        base.OnCreate (gói);
        SetContentView (Resource.Layout.MapLayout);

        var mapFragment = (MapFragment) FragmentManager.FindFragmentById (Resource.Id.map);
        mapFragment.GetMapAsync (this);

        // phần còn lại của mã bị bỏ qua
    }

    public void OnMapReady (GoogleMap map)
    {
        // Làm điều gì đó với bản đồ, tức là thêm điểm đánh dấu, di chuyển đến một vị trí cụ thể, v.v.
    }
}
 

Loại bản đồ

Có năm loại bản đồ khác nhau có sẵn từ Google Maps
API:

  • Bình thường – Đây là loại bản đồ mặc định. Nó chỉ ra những con đường và
    các đặc điểm tự nhiên quan trọng cùng với một số điểm nhân tạo của
    sở thích (chẳng hạn như các tòa nhà và cầu).

  • Vệ tinh – Bản đồ này hiển thị ảnh chụp qua vệ tinh.

  • Kết hợp – Bản đồ này hiển thị ảnh vệ tinh và bản đồ đường đi.

  • Địa hình – Phần này chủ yếu hiển thị các đối tượng địa hình với một số
    đường xá.

  • Không có – Bản đồ này không tải bất kỳ ô nào, nó được hiển thị dưới dạng
    lưới trống.

Hình ảnh dưới đây cho thấy ba trong số các loại bản đồ khác nhau, từ
trái sang phải (bình thường, kết hợp, địa hình):

Thuộc tính GoogleMap.MapType được sử dụng để đặt hoặc thay đổi loại
bản đồ được hiển thị. Đoạn mã sau đây cho biết cách hiển thị
bản đồ vệ tinh.

  public void OnMapReady (GoogleMap map)
{
    map.MapType = GoogleMap.MapTypeHybrid;
}
 

Thuộc tính GoogleMap

GoogleMap xác định một số thuộc tính có thể kiểm soát chức năng
và sự xuất hiện của bản đồ. Một cách để cấu hình trạng thái ban đầu
của GoogleMap là để vượt qua
GoogleMapOptions
khi tạo MapFragment . Đoạn mã sau là một
ví dụ về việc sử dụng đối tượng GoogleMapOptions khi tạo MapFragment :

  GoogleMapOptions mapOptions = new GoogleMapOptions ()
    .InvokeMapType (GoogleMap.MapTypeSatellite)
    .InvokeZoomControlsEnabled (false)
    .InvokeCompassEnabled (true);

FragmentTransaction fragTx = FragmentManager.BeginTransaction ();
mapFragment = MapFragment.NewInstance (mapOptions);
fragTx.Add (Resource.Id.map, mapFragment, "bản đồ");
fragTx.Commit ();
 

Cách khác để định cấu hình GoogleMap là bằng cách thao tác các thuộc tính trên
UiSettings
của đối tượng bản đồ. Mẫu mã tiếp theo cho thấy cách định cấu hình
GoogleMap để hiển thị các điều khiển thu phóng và la bàn:

  public void OnMapReady (GoogleMap map)
{
    map.UiSettings.ZoomControlsEnabled = true;
    map.UiSettings.CompassEnabled = true;
}
 

Tương tác với GoogleMap

API Android Maps cung cấp các API cho phép một Hoạt động thay đổi
quan điểm, thêm điểm đánh dấu, đặt lớp phủ tùy chỉnh hoặc vẽ hình học
hình dạng. Phần này sẽ thảo luận về cách hoàn thành một số nhiệm vụ này
trong Xamarin.Android.

Thay đổi quan điểm

Bản đồ được mô phỏng như một mặt phẳng phẳng trên màn hình, dựa trên Mercator
hình chiếu. Chế độ xem bản đồ là chế độ xem của một máy ảnh nhìn thẳng xuống
Chiếc máy bay này. Vị trí của máy ảnh có thể được kiểm soát bằng cách thay đổi
vị trí, thu phóng, độ nghiêng và vị trí. Các
CameraUpdate
lớp được sử dụng để di chuyển vị trí camera. Các đối tượng CameraUpdate không
được khởi tạo trực tiếp, thay vào đó, API Maps cung cấp
CameraUpdateFactory
lớp học.

Khi một đối tượng CameraUpdate đã được tạo, nó được chuyển dưới dạng
tham số cho một trong hai
GoogleMap.MoveCamera
hoặc
GoogleMap.AnimateCamera
các phương pháp. Phương thức MoveCamera cập nhật bản đồ ngay lập tức trong khi
Phương thức AnimateCamera cung cấp quá trình chuyển đổi hoạt ảnh, mượt mà.

Đoạn mã này là một ví dụ đơn giản về cách sử dụng
CameraUpdateFactory để tạo CameraUpdate sẽ tăng dần
mức thu phóng của bản đồ bằng một mức thu phóng:

  MapFragment mapFrag = (MapFragment) FragmentManager.FindFragmentById (Resource.Id.my_mapfragment_container);
mapFrag.GetMapAsync (this);
...

public void OnMapReady (GoogleMap map)
{
    map.MoveCamera (CameraUpdateFactory.ZoomIn ());
}
 

API Maps cung cấp một
Vị trí máy ảnh
cái này sẽ tổng hợp tất cả các giá trị có thể có cho máy ảnh
Chức vụ. Một phiên bản của lớp này có thể được cung cấp cho
CameraUpdateFactory.NewCameraPosition
phương thức này sẽ trả về đối tượng CameraUpdate . API Maps cũng
bao gồm
CameraPosition.Builder
lớp cung cấp một API thông thạo để tạo các đối tượng CameraPosition .
Đoạn mã sau đây cho thấy một ví dụ về cách tạo CameraUpdate
từ CameraPosition và sử dụng điều đó để thay đổi vị trí camera trên
GoogleMap :

 public void OnMapReady (GoogleMap map)
{
    LatLng vị trí = new LatLng (50.897778, 3.013333);

    Trình tạo CameraPosition.Builder = CameraPosition.InvokeBuilder ();
    builder.Target (vị trí);
    thợ xây.Zoom (18);
    người xây dựng.Bear (155);
    thợ xây.Tilt (65);

    CameraPosition cameraPosition = builder.Build ();

    CameraUpdate cameraUpdate = CameraUpdateFactory.NewCameraPosition (vị trí camera);

    map.MoveCamera (cameraUpdate);
}
 

Trong đoạn mã trước, một vị trí cụ thể trên bản đồ là
đại diện bởi
LatLng
lớp. Mức thu phóng được đặt thành 18, đây là thước đo thu phóng tùy ý được Google Maps sử dụng. Vòng bi là la bàn
đo theo chiều kim đồng hồ từ phía Bắc. Thuộc tính Tilt kiểm soát
góc nhìn và chỉ định góc 25 độ từ
theo chiều dọc. Ảnh chụp màn hình sau hiển thị GoogleMap sau khi thực thi
mã trước:

Vẽ trên Bản đồ

API Android Maps cung cấp API để vẽ các mục sau trên bản đồ:

  • Điểm đánh dấu – Đây là những biểu tượng đặc biệt được sử dụng để xác định một vị trí trên bản đồ.

  • Lớp phủ – Đây là hình ảnh có thể được sử dụng để xác định tập hợp các vị trí hoặc khu vực trên bản đồ.

  • Đường, Đa giác và Vòng tròn – Đây là những API cho phép Hoạt động thêm hình dạng vào bản đồ.

Điểm đánh dấu

API Maps cung cấp một
Điểm đánh dấu
lớp đóng gói tất cả dữ liệu về một vị trí duy nhất trên
bản đồ. Theo mặc định, lớp Marker sử dụng một biểu tượng tiêu chuẩn do Google Maps cung cấp. Nó là
có thể tùy chỉnh giao diện của điểm đánh dấu và phản hồi với người dùng
nhấp chuột.

Thêm điểm đánh dấu

Để thêm một điểm đánh dấu vào bản đồ, bạn cần tạo một điểm đánh dấu mới
đối tượng MarkerOptions và sau đó gọi
AddMarker
trên một phiên bản GoogleMap . Phương thức này sẽ trả về một
Điểm đánh dấu
đối tượng.

  public void OnMapReady (GoogleMap map)
{
    MarkerOptions markerOpt1 = new MarkerOptions ();
    markerOpt1.SetPosition (LatLng mới (50.379444, 2.773611));
    markerOpt1.SetTitle ("Vimy Ridge");

    map.AddMarker (markerOpt1);
}
 

Tiêu đề của điểm đánh dấu sẽ được hiển thị trong cửa sổ thông tin khi
người dùng nhấn vào điểm đánh dấu. Ảnh chụp màn hình sau đây cho thấy điều này
điểm đánh dấu trông giống như:

Tùy chỉnh điểm đánh dấu

Có thể tùy chỉnh biểu tượng được điểm đánh dấu sử dụng bằng cách gọi
Phương thức MarkerOptions.InvokeIcon khi thêm điểm đánh dấu vào bản đồ.
Phương pháp này có một
BitmapDescriptor
đối tượng chứa dữ liệu cần thiết để hiển thị biểu tượng. Các
BitmapDescriptorFactory
lớp cung cấp một số phương thức trợ giúp để đơn giản hóa việc tạo
BitmapDescriptor . Danh sách sau đây giới thiệu một số phương pháp sau:

  • DefaultMarker (màu nổi) – Sử dụng Google Maps mặc định
    điểm đánh dấu, nhưng thay đổi màu sắc.

  • FromAsset (string assetName) – Sử dụng biểu tượng tùy chỉnh từ
    tệp được chỉ định trong thư mục Nội dung.

  • FromBitmap (Hình ảnh bitmap) – Sử dụng bitmap được chỉ định làm
    biểu tượng.

  • FromFile (string fileName) – Tạo biểu tượng tùy chỉnh từ
    tệp theo đường dẫn được chỉ định.

  • FromResource (int resourceId) – Tạo một biểu tượng tùy chỉnh từ
    tài nguyên được chỉ định.

Đoạn mã sau đây cho thấy một ví dụ về cách tạo màu lục lam
điểm đánh dấu mặc định:

  public void OnMapReady (GoogleMap map)
{
    MarkerOptions markerOpt1 = new MarkerOptions ();
    markerOpt1.SetPosition (LatLng mới (50.379444, 2.773611));
    markerOpt1.SetTitle ("Vimy Ridge");

    var bmDescriptor = BitmapDescriptorFactory.DefaultMarker (BitmapDescriptorFactory.HueCyan);
    markerOpt1.InvokeIcon (bmDescriptor);

    map.AddMarker (markerOpt1);
}
 

Cửa sổ thông tin

Cửa sổ thông tin là các cửa sổ đặc biệt bật lên để hiển thị thông tin
người dùng khi họ chạm vào một điểm đánh dấu cụ thể. Theo mặc định, cửa sổ thông tin
sẽ hiển thị nội dung của tiêu đề điểm đánh dấu. Nếu tiêu đề không có
được chỉ định, sau đó sẽ không có cửa sổ thông tin nào xuất hiện. Chỉ một cửa sổ thông tin
có thể được hiển thị cùng một lúc.

Có thể tùy chỉnh cửa sổ thông tin bằng cách triển khai
GoogleMap.IInfoWindowAdapter
giao diện. Có hai phương pháp quan trọng trên giao diện này:

  • public View GetInfoWindow (Marker marker) – Phương thức này được gọi là
    để có được một cửa sổ thông tin tùy chỉnh cho một điểm đánh dấu. Nếu nó trả về null ,
    thì kết xuất cửa sổ mặc định sẽ được sử dụng. Nếu phương pháp này
    trả về một Chế độ xem, sau đó Chế độ xem đó sẽ được đặt bên trong cửa sổ thông tin
    khung.

  • public View GetInfoContents (Marker marker) – Phương thức này sẽ
    chỉ được gọi nếu GetInfoWindow trả về null . Phương pháp này có thể
    trả về giá trị null nếu hiển thị mặc định của cửa sổ thông tin
    nội dung sẽ được sử dụng. Nếu không, phương thức này sẽ trả về một Dạng xem
    với nội dung của cửa sổ thông tin.

Cửa sổ thông tin không phải là chế độ xem trực tiếp – thay vào đó, Android sẽ chuyển đổi
Xem một bitmap tĩnh và hiển thị nó trên hình ảnh. Điều này có nghĩa rằng
cửa sổ thông tin không thể phản hồi bất kỳ sự kiện hoặc cử chỉ chạm nào, cũng như
nó tự động cập nhật chính nó. Để cập nhật một cửa sổ thông tin, nó là
cần thiết để gọi
GoogleMap.ShowInfoWindow
phương pháp.

Hình ảnh sau đây cho thấy một số ví dụ về một số thông tin tùy chỉnh
các cửa sổ. Hình ảnh bên trái có nội dung được tùy chỉnh, trong khi
hình ảnh bên phải có cửa sổ và nội dung được tùy chỉnh với các góc tròn:

GroundOverlays

Không giống như các điểm đánh dấu, xác định một vị trí cụ thể trên bản đồ,
GroundOverlay
là một hình ảnh được sử dụng để xác định một tập hợp các vị trí hoặc một khu vực
trên bản đồ.

Thêm lớp phủ mặt đất

Thêm lớp phủ mặt đất vào bản đồ tương tự như thêm điểm đánh dấu vào
Bản đồ. Đầu tiên, một
GroundOverlayOptions
đối tượng được tạo. Đối tượng này sau đó được chuyển như một tham số cho
Phương thức GoogleMap.AddGroundOverlay , sẽ trả về
Đối tượng GroundOverlay . Đoạn mã này là một ví dụ về việc thêm một
lớp phủ mặt đất lên bản đồ:

  BitmapDescriptor image = BitmapDescriptorFactory.FromResource (Resource.Drawable.polarbear);
GroundOverlayOptions groundOverlayOptions = new GroundOverlayOptions ()
    .Position (vị trí, 150, 200)
    .InvokeImage (hình ảnh);
GroundOverlay myOverlay = googleMap.AddGroundOverlay (groundOverlayOptions);
 

Ảnh chụp màn hình sau đây cho thấy lớp phủ này trên bản đồ:

Đường, Vòng tròn và Đa giác

Có ba loại hình hình học đơn giản có thể được thêm vào bản đồ:

  • Polyline – Đây là một loạt các đoạn đường được kết nối với nhau. Nó có thể
    đánh dấu một con đường trên bản đồ hoặc tạo một hình dạng hình học.

  • Vòng tròn – Thao tác này sẽ vẽ một vòng tròn trên bản đồ.

  • Đa giác – Đây là một hình dạng khép kín để đánh dấu các khu vực trên bản đồ.

Polylines

Một Polyline
là danh sách các đối tượng LatLng liên tiếp chỉ định các đỉnh của
từng đoạn thẳng. Polyline được tạo ra bằng cách đầu tiên tạo một
đối tượng PolylineOptions và thêm các điểm vào nó. Các
Đối tượng PolylineOption sau đó được chuyển đến đối tượng GoogleMap bằng cách gọi
phương thức AddPolyline .

  PolylineOption directOptions = new PolylineOption ();
directOptions.Add (LatLng mới (37.35, -122.0));
directOptions.Add (LatLng mới (37,45, -122,0));
directOptions.Add (LatLng mới (37,45, -122,2));
directOptions.Add (LatLng mới (37.35, -122.2));
directOptions.Add (LatLng mới (37.35, -122.0)); // đóng polyline - điều này tạo thành một hình chữ nhật.

googleMap.AddPolyline (directOptions);
 
Vòng kết nối

Vòng kết nối được tạo bằng cách khởi tạo trước tiên
CircleOption
đối tượng sẽ chỉ định tâm và bán kính của hình tròn trong
mét. Vòng tròn được vẽ trên bản đồ bằng cách gọi
GoogleMap.AddCircle .
Đoạn mã sau đây cho biết cách vẽ một vòng tròn:

  CircleOptions circleOptions = new CircleOptions ();
circleOptions.InvokeCenter (LatLng mới (37.4, -122.1));
circleOptions.InvokeRadius (1000);

googleMap.AddCircle (circleOptions);
 
Đa giác

Polygon s tương tự như Polyline s, tuy nhiên chúng không mở
đã kết thúc. Polygon s là một vòng lặp khép kín và có phần bên trong được điền vào.
Polygon s được tạo theo cách giống hệt như một Polyline , ngoại trừ
GoogleMap.AddPolygon
phương thức được gọi.

Không giống như Polyline , Polygon tự đóng. Đa giác sẽ được đóng lại bằng phương pháp AddPolygon bằng cách vẽ một đường nối điểm đầu tiên và điểm cuối cùng. Đoạn mã sau
đoạn mã sẽ tạo ra một hình chữ nhật chắc chắn trên cùng một khu vực với
đoạn mã trước đó trong ví dụ về Polyline .

  PolygonOptions directOptions = new PolygonOptions ();
directOptions.Add (LatLng mới (37.35, -122.0));
directOptions.Add (LatLng mới (37,45, -122,0));
directOptions.Add (LatLng mới (37,45, -122,2));
directOptions.Add (LatLng mới (37.35, -122.2));
// lưu ý rằng chúng ta không cần phải đóng đa giác

googleMap.AddPolygon (directOptions);
 

Phản hồi các sự kiện của người dùng

Có ba loại tương tác mà người dùng có thể có với bản đồ:

  • Nhấp chuột vào điểm đánh dấu – Người dùng nhấp vào điểm đánh dấu.

  • Kéo điểm đánh dấu – Người dùng đã nhấp lâu vào mparger

  • Nhấp vào Cửa sổ Thông tin – Người dùng đã nhấp vào một cửa sổ thông tin.

Mỗi sự kiện này sẽ được thảo luận chi tiết hơn bên dưới.

Sự kiện nhấp chuột vào điểm đánh dấu

Sự kiện MarkerClicked được đưa ra khi người dùng chạm vào một điểm đánh dấu. Sự kiện này chấp nhận đối tượng GoogleMap.MarkerClickEventArgs làm tham số. Lớp này
chứa hai thuộc tính:

  • GoogleMap.MarkerClickEventArgs.Handled – Thuộc tính này phải là
    đặt thành true để cho biết rằng trình xử lý sự kiện đã sử dụng
    biến cố. Nếu điều này được đặt thành false thì hành vi mặc định sẽ
    xảy ra ngoài hành vi tùy chỉnh của trình xử lý sự kiện.

  • Điểm đánh dấu – Thuộc tính này là một tham chiếu đến điểm đánh dấu
    đã làm tăng sự kiện MarkerClick .

Đoạn mã này hiển thị một ví dụ về MarkerClick sẽ thay đổi
vị trí camera đến vị trí mới trên bản đồ:

  void MapOnMarkerClick (object sender, GoogleMap.MarkerClickEventArgs markerClickEventArgs)
{
    markerClickEventArgs.Handled = true;

    var marker = markerClickEventArgs.Marker;
    if (marker.Id.Equals (gotMauiMarkerId))
    {
        LatLng InMaui = LatLng mới (20.72110, -156.44776);

        // Di chuyển camera để nhìn Maui.
        PositionPolarBearGroundOverlay (InMaui);
        googleMap.AnimateCamera (CameraUpdateFactory.NewLatLngZoom (InMaui, 13));
        gotMauiMarkerId = null;
        polarBearMarker.Remove ();
        polarBearMarker = null;
    }
    khác
    {
        Toast.MakeText (this, $ "Bạn đã nhấp vào ID điểm đánh dấu {marker.Id}", ToastLength.Short) .Show ();
    }
}
 

Đánh dấu Kéo sự kiện

Sự kiện này được đưa ra khi người dùng muốn kéo điểm đánh dấu. Qua
mặc định, các điểm đánh dấu không thể kéo được. Một điểm đánh dấu có thể được đặt là có thể kéo bằng
đặt thuộc tính Marker.Draggable thành true hoặc bằng cách gọi
Phương thức MarkerOptions.Draggable với tham số là true .

Để kéo điểm đánh dấu, trước tiên người dùng phải nhấp lâu vào điểm đánh dấu và sau đó ngón tay của họ phải duy trì trên bản đồ. Khi ngón tay của người dùng được kéo xung quanh trên màn hình,
điểm đánh dấu sẽ di chuyển. Khi ngón tay của người dùng nhấc lên khỏi màn hình,
điểm đánh dấu sẽ vẫn ở nguyên vị trí.

Danh sách sau đây mô tả các sự kiện khác nhau sẽ được nêu ra
đối với điểm đánh dấu có thể kéo:

  • GoogleMap.MarkerDragStart (người gửi đối tượng, GoogleMap.MarkerDragStartEventArgs e)
    Sự kiện này được đưa ra khi người dùng kéo điểm đánh dấu lần đầu tiên.

  • GoogleMap.MarkerDrag (người gửi đối tượng, GoogleMap.MarkerDragEventArgs e)
    Sự kiện này được đưa ra khi điểm đánh dấu đang được kéo.

  • GoogleMap.MarkerDragEnd (người gửi đối tượng, GoogleMap.MarkerDragEndEventArgs e)
    Sự kiện này xuất hiện khi người dùng kéo xong điểm đánh dấu.

Mỗi EventArgs chứa một thuộc tính duy nhất được gọi là P0 là một
tham chiếu đến đối tượng Marker đang được kéo.

Sự kiện nhấp vào cửa sổ thông tin

Mỗi lần chỉ có thể hiển thị một cửa sổ thông tin. Khi người dùng nhấp vào
trên cửa sổ thông tin trong bản đồ, đối tượng bản đồ sẽ nâng
Sự kiện InfoWindowClick . Đoạn mã sau đây cho thấy cách đấu dây
hỗ trợ cho sự kiện:

  public void OnMapReady (GoogleMap map)
{
    map.InfoWindowClick + = MapOnInfoWindowClick;
}

private void MapOnInfoWindowClick (object sender, GoogleMap.InfoWindowClickEventArgs e)
{
    Đánh dấu myMarker = e.Marker;
    // Làm điều gì đó với điểm đánh dấu.
}
 

Nhớ lại rằng cửa sổ thông tin là một View tĩnh được hiển thị dưới dạng
hình ảnh trên bản đồ. Mọi tiện ích con như nút, hộp kiểm hoặc văn bản
các chế độ xem được đặt bên trong cửa sổ thông tin sẽ không hoạt động và không thể
phản hồi bất kỳ sự kiện người dùng không thể thiếu của họ.


Xem thêm những thông tin liên quan đến chủ đề sử dụng google maps api

demoT9 Google map API

  • Tác giả: Dao Thang
  • Ngày đăng: 2021-07-06
  • Đánh giá: 4 ⭐ ( 6159 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Sử dụng google map API để hiện bản đồ, tìm địa điểm, tìm đường đi

Chia sẻ một số Google Maps API Key sử dụng cho Website

  • Tác giả: tranhieuit.com
  • Đánh giá: 3 ⭐ ( 6241 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Chia sẻ một số Google Maps API Key sử dụng cho Website. Triển khai Google Map trên các vận dụng website. Tạo Google Maps API trên website wordpress

Cách Sử Dụng Google Map Api Google Maps · Trung Tâm Trợ Giúp Shopify

  • Tác giả: nguyenminhchau.com
  • Đánh giá: 4 ⭐ ( 3260 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Google Mapѕ là ứng dụng nổi bật ᴠà phổ biến ᴄủa Google đượᴄ hầu hết tất ᴄả những người ѕử dụng internet tin dùng, Bởi nó ᴄho phép người dùng ᴄó thể dễ dàng tìm kiếm ᴄáᴄ địa điểm mong muốn haу tìm đường đi một ᴄáᴄh nhanh ᴄhóng

Cách Sử Dụng Google Map Api Từ A, Hướng Dẫn Cách Lấy Google Maps Api Key Chi Tiết

  • Tác giả: topgamedanhbaidoithuong.com
  • Đánh giá: 5 ⭐ ( 4678 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Google Mapѕ là ứng dụng nổi bật ᴠà phổ biến của Google được hầu hết tất cả những người ѕử dụng internet tin dùng, Bởi nó cho phép người dùng có thể dễ dàng tìm kiếm các địa điểm mong muốn haу tìm đường đi một cách nhanh chóng

Sử dụng Google Maps API trong VueJS

  • Tác giả: itzone.com.vn
  • Đánh giá: 5 ⭐ ( 9592 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: The ITZone platform Vietnam is the community for anyone interested in news, training seminars, presentations etc in the IT industry

Google API là gì? Tổng quan về Google Map API

  • Tác giả: seoviet.vn
  • Đánh giá: 4 ⭐ ( 5997 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Google API là gì? Google API hoạt động như thế nào? Tham khảo bài viết tổng quan về Google Map API dưới đâu của chúng tôi nhé.

Cách sử dụng google map api là gì? tổng quan về map api tổng quan về map api

  • Tác giả: jdomain.vn
  • Đánh giá: 5 ⭐ ( 4372 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Google Maps là dịch vụ bản đồ trực tuyến phổ biến nhất hiện nay, được phát hành và hỗ trợ bởi Google, cho phép người dùng có thể tìm đường, tìm địa điểm trên ứng dụng này (website và app), Bên cạnh đó Google Maps API được Google giới thiệu và hướng đến các lập trình sử dụng nền tảng Maps này trên các ứng dụng website và app mobile

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  Xóa một mục khỏi danh sách Python (bật, xóa, xóa, xóa) • datagy - cách xóa mục khỏi danh sách python