KML

Выберите платформу: Android iOS JavaScript

В этой статье рассказывается, как визуализировать географические данные в формате KML с помощью GMUKMLParser и GMUGeometryRenderer. KML – это популярный формат для отображения географических данных, таких как точки, линии и многоугольники.

На скриншоте ниже показан пример данных KML, отображаемых на карте.

Карта с данными KML

Требования и примечания

GMUKMLParser входит в состав библиотеки утилит Maps SDK для iOS. Если вы ещё не настроили эту библиотеку, выполните рекомендации из руководства по настройке, прежде чем продолжить чтение этой страницы.

Полный пример кода можно найти в примерах приложений на GitHub.

Отрисовка данных KML

Чтобы добавить данные KML на карту, создайте экземпляр класса GMUKMLParser с путем к ресурсу KML (в этом примере – KML_Sample.kml). Затем создайте GMUGeometryRenderer, передав экземпляр GMUKMLParser. Наконец, вызовите GMUGeometryRenderer.render(). В примере кода ниже показано, как отобразить данные KML на карте.

Swift

import GoogleMapsUtils

class KML: NSObject {
  private var mapView: GMSMapView!

  func renderKml() {
    guard let path = Bundle.main.path(forResource: "KML_Sample", ofType: "kml") else {
      print("Invalid path")
      return
    }

    let url = URL(fileURLWithPath: path)

    let kmlParser = GMUKMLParser(url: url)
    kmlParser.parse()

    let renderer = GMUGeometryRenderer(
      map: mapView,
      geometries: kmlParser.placemarks,
      styles: kmlParser.styles
    )

    renderer.render()
  }
}
      

Objective-C

@import GoogleMapsUtils;

@implementation KML {
  GMSMapView *_mapView;
}

- (void)renderKml {
  NSString *path = [[NSBundle mainBundle] pathForResource:@"KML_Sample" ofType:@"kml"];
  NSURL *url = [NSURL fileURLWithPath:path];
  GMUKMLParser *parser = [[GMUKMLParser alloc] initWithURL:url];
  [parser parse];
  GMUGeometryRenderer *renderer = [[GMUGeometryRenderer alloc] initWithMap:_mapView
                                                                geometries:parser.placemarks
                                                                    styles:parser.styles];
  [renderer render];
}

@end