Anda sudah siap!

Untuk mulai mengembangkan, masuklah ke dokumentasi developer kami.

Aktifkan Google Maps SDK for iOS

Untuk membantu Anda memulai, kami akan memandu Anda melalui Google Developers Console untuk melakukan beberapa hal terlebih dahulu:

  1. Buat atau pilih sebuah proyek
  2. Aktifkan Google Maps SDK for iOS
  3. Buat kunci yang sesuai
Lanjutkan

Quadtree

Laman ini menjelaskan utilitas quadtree yang tersedia di pustaka utilitas untuk Google Maps SDK for iOS.

Quadtree adalah struktur data yang berguna untuk menemukan titik di dekat titik tunggal, dengan menelusuri di dalam area yang mengelilingi titik menarik.

Menggunakan quadtree, Anda bisa menelusuri titik di dalam rentang 2D secara efisien, yang mana titik tersebut didefinisikan sebagai koordinat lintang/bujur atau sebagai koordinat kartesius (x, y). Quadtree menyimpan wadah koordinat dalam simpul, dan mengindeksnya berdasarkan region (kotak pembatas). Untuk menemukan pasangan koordinat tertentu, Anda harus melintasi simpul quadtree.

Prasyarat dan catatan

Utilitas quadtree adalah bagian dari Pustaka Utilitas Google Maps SDK for iOS. Jika Anda belum menyiapkan pustaka tersebut, ikuti panduan persiapan sebelum membaca bagian selebihnya dari laman ini.

Menambahkan quadtree dan menelusuri titik di area tertentu

Kode berikut ini membuat quadtree, lalu menelusuri semua titik di dalam area tertentu:

Swift

// Assume that <Google-Maps-iOS-Utils/GQTPointQuadTree.h> is in the bridging-header file.

class QuadTreeItem : NSObject, GQTPointQuadTreeItem {
  let gqtPoint : GQTPoint

  init(point : GQTPoint) {
    self.gqtPoint = point
  }

  func point() -> GQTPoint {
    return gqtPoint
  }
}

// Create a quadtree with bounds of [-2, -2] to [2, 2].
let bounds = GQTBounds(minX: -2, minY: -2, maxX: 2, maxY: 2)
let tree = GQTPointQuadTree(bounds: bounds)

// Add 4 points to the tree.
tree.add(QuadTreeItem(point: GQTPoint(x: -1, y: -1)))
tree.add(QuadTreeItem(point: GQTPoint(x: -1, y: 1)))
tree.add(QuadTreeItem(point: GQTPoint(x: 1, y: 1)))
tree.add(QuadTreeItem(point: GQTPoint(x: 1, y: -1)))

// Search for items within the rectangle with lower corner of (-1.5, -1.5)
// and upper corner of (1.5, 1.5).
let searchBounds = GQTBounds(minX: -1.5, minY: -1.5, maxX: 1.5, maxY: 1.5)
for item in tree.searchWithBounds(searchBounds) as! [QuadTreeItem] {
  NSLog("(\(item.point().x), \(item.point().y))");
}

Objective-C

#import <Google-Maps-iOS-Utils/GQTPointQuadTree.h>

@interface QuadTreeItem : NSObject<GQTPointQuadTreeItem>
- (instancetype)initWithPoint:(GQTPoint)point;
@end

@implementation QuadTreeItem {
  GQTPoint _point;
}

- (instancetype)initWithPoint:(GQTPoint)point {
  if ((self = [super init])) {
    _point = point;
  }
  return self;
}

- (GQTPoint)point {
  return _point;
}

@end

int main(int argc, char* argv[]) {
  // Create a quadtree with bounds of [-2, -2] to [2, 2].
  GQTBounds bounds = {-2, -2, 2, 2};
  GQTPointQuadTree *tree = [[GQTPointQuadTree alloc] initWithBounds:bounds];

  // Add 4 points to the tree.
  [tree add:[[QuadTreeItem alloc] initWithPoint:(GQTPoint){-1, -1}]];
  [tree add:[[QuadTreeItem alloc] initWithPoint:(GQTPoint){-1, 1}]];
  [tree add:[[QuadTreeItem alloc] initWithPoint:(GQTPoint){1, 1}]];
  [tree add:[[QuadTreeItem alloc] initWithPoint:(GQTPoint){1, -1}]];

  // Search for items within the rectangle with lower corner of (-1.5, -1.5)
  // and upper corner of (1.5, 1.5).
  NSArray *foundItems = [tree searchWithBounds:(GQTBounds){-1.5, -1.5, 1.5, 1.5}];

  for (QuadTreeItem *item in foundItems) {
    NSLog(@"(%lf, %lf)", item.point.x, item.point.y);
  }
  return 0;
}

Kirim masukan tentang...

Google Maps SDK for iOS
Google Maps SDK for iOS
Butuh bantuan? Kunjungi halaman dukungan kami.