12/08/2018, 15:35

Google Maps KML Importing Utility

Giới thiệu KML là một phần mở rộng của định dạng dữ liệu XML và đại diện cho dữ liệu địa lý trên một bản đồ. Sử dụng tiện ích này, bạn có thể chuyển đổi các đối tượng KML thành các hình dạng địa lý và biến chúng thành một lớp trên bản đồ. Để thêm và xóa dữ liệu KML của bạn đến và đi từ bản ...

  • Giới thiệu

    • KML là một phần mở rộng của định dạng dữ liệu XML và đại diện cho dữ liệu địa lý trên một bản đồ. Sử dụng tiện ích này, bạn có thể chuyển đổi các đối tượng KML thành các hình dạng địa lý và biến chúng thành một lớp trên bản đồ. Để thêm và xóa dữ liệu KML của bạn đến và đi từ bản đồ, hãy gọi addLayerToMap() và removeLayerFromMap(). Để truy cập vào các thuộc tính của một đối tượng KML, hãy gọi getProperties() trên bất kỳ placemarks, GroundOverlay, Tài liệu hoặc Thư mục.
    • Chú ý: Tiện ích này hiện đang là phiên bản beta. Để gửi bất kỳ vấn đề hoặc lỗi nào, vui lòng truy cập vào đây.
  • Thêm một KML layer trên map

    • Để thêm một lớp dữ liệu vào bản đồ, trước tiên hãy tạo một instance của lớp KmlLayer. Có hai cách để khởi tạo nhanh chóng một KmlLayer.
      • Để nhập và render một KML dataset từ resource, bạn cần:

        • Một đối tượng GoogleMap nơi mà layer được rendered

        • Một file resource local nơi chứa dữ liệu KML

        • Một đối tượng Context, được yêu cầu để mở một local resource file.

          KmlLayer layer = new KmlLayer(getMap(), R.raw.kmlFile, getApplicationContext());

      • Để nhập và hiển thị tập dữ liệu KML từ luồng địa phương, bạn cần:

        • Một đối tượng GoogleMap nơi mà layer được rendered

        • Một file resource local nơi chứa dữ liệu KML

        • Một đối tượng Context, được yêu cầu để mở một local resources.

          KmlLayer layer = new KmlLayer(getMap(), kmlInputStream, getApplicationContext());

      • Sau khi bạn đã tạo một KmlLayer, gọi addLayerToMap() để thêm nó lên map. layer.addLayerToMap();

  • Clear a KML layer

    • Giả sử KmlLayer này đã được tạo: KmlLayer layer = new KmlLayer(getMap(), kmlInputStream, getApplicationContext());

    • Để gỡ bỏ layer từ map, gọi removeLayerFromMap(): layer.removeLayerFromMap();

  • Truy cập vào KML containers

    • Để truy cập bất kỳ vùng chứa nào đã được thêm vào lớp của bạn, bạn có thể gọi getContainers() trên lớp mà bạn đã tạo. Để kiểm tra xem có chứa container có chứa lồng nhau nào không, bạn có thể gọi hàm hasContainers(). Để truy cập các thùng chứa lồng nhau này, tương tự như những gì bạn có thể làm trong lớp của mình, bạn có thể gọi getContainers()

    • Để truy cập container không được lồng vào một KmlLayer hoặc KmlContainer: for (KmlContainer containers : layer.getContainers()) // Do something to container}

    • Để truy cập các container được lồng vào một KmlLayer hoặc KmlContainer:

      Iterable containers = layer.getContainers(); public void accessContainers(containers) { for (KmlContainer container : containers ) { // Do something to container if (container.hasContainers()) { accessContainers(container.getContainers()); } } }

  • Truy cập vào placemarks KML và lớp phủ nền KML

    • Để truy cập bất kỳ dấu vị trí hoặc lớp phủ mặt đất nào đã được thêm vào lớp, bạn có thể gọi getPlacemarks() hoặc getGroundOverlays() trên lớp hoặc vùng chứa. Gọi hoặc sẽ trả về một iterable của KmlPlacemarks hoặc KmlGroundOverlays tương ứng.
    • Cho ví dụ, để truy cập một đối tượng KmlPlacemark từ một layer: for (KmlPlacemark placemark : layer.getPlacemarks()) { // Do something to Placemark }
  • Truy cập các thuộc tính KML

    • Để truy cập bất kỳ thuộc tính nào trong vùng chứa hoặc dấu vị trí, hãy gọi hàm getProperty () và cho nó một khóa thuộc tính. Bạn cũng có thể gọi hàm hasProperty () để kiểm tra xem nó có tồn tại hay không. Mẫu này cho thấy cách lấy giá trị thuộc tính "name" từ một vùng chứa nếu nó tồn tại. for (KmlContainer container : layer.getContainers()) { if (container.hasProperty("name")) { System.out.println(container.getProperty("name")): } }
  • KML Geometry Click Events

    • Bạn có thể sử dụng KmlLayer.OnFeatureClickListener() để nghe các sự kiện nhấp chuột trên các đối tượng hình học trên bản đồ. Ví dụ sau ghi lại ID của một đối tượng địa lý khi người dùng nhấp vào đối tượng địa lý: // Set a listener for geometry clicked events. mLayer.setOnFeatureClickListener(new KmlLayer.OnFeatureClickListener() { @Override public void onFeatureClick(Feature feature) { Log.i("KmlClick", "Feature clicked: " + feature.getId()); } });
0