KML

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
اختَر النظام الأساسي: Android iOS JavaScript

توضّح هذه الصفحة كيفية عرض البيانات الجغرافية بتنسيق KML، باستخدام GMUKMLParser بالتزامن مع GMUGeometryRenderer. تنسيق KML هو تنسيق شائع لعرض البيانات الجغرافية، مثل النقاط والخطوط والمضلعات.

تعرض لقطة الشاشة التالية بعض الأمثلة على بيانات KML المعروضة على الخريطة:

خريطة تحتوي على بيانات KML

المتطلبات الأساسية والملاحظات

GMUKMLParser هو جزء من Maps SDK for iOS Utility Library. إذا لم يتم إعداد المكتبة بعد، اتّبِع دليل الإعداد قبل قراءة بقية هذه الصفحة.

للاطّلاع على نموذج الرمز الكامل، يمكنك الاطّلاع على نماذج التطبيقات على 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