Я создаю компонент React Native UI, который будет использовать SDK Google Maps iOS для отображения карт в приложении React. Это создается как статическая Cocoa Touch Framework, поэтому я могу использовать ее в разных проектах.
Пока эта структура не делает многого, я просто пытаюсь ее собрать, прежде чем я попытаюсь сделать что-нибудь полезное с ней. У меня есть Podfile
, который загружается в SDK Google Maps, и я запустил команду pod install
:
# Uncomment this line to define a global platform for your project
platform :ios, '8.1'
# Uncomment this line if you're using Swift
# use_frameworks!
target 'GoogleMapView' do
source 'https://github.com/CocoaPods/Specs.git'
pod 'GoogleMaps'
end
У меня есть файлы GoogleMapView.h
и GoogleMapView.m
, которые будут выполнять тяжелый подъем в этом модуле. Пока что они не очень много делают:
@import GoogleMaps;
@interface GoogleMapView: GMSMapView
@end
-
#import "GoogleMapView.h"
@implementation GoogleMapView {
GMSMapView *mapView_;
}
- (void)viewDidLoad {
// Create a GMSCameraPosition that tells the map to display the
// coordinate -33.86,151.20 at zoom level 6.
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86
longitude:151.20
zoom:6];
mapView_ = [GMSMapView mapWithFrame:CGRectZero camera:camera];
mapView_.myLocationEnabled = YES;
self.view = mapView_;
// Creates a marker in the center of the map.
GMSMarker *marker = [[GMSMarker alloc] init];
marker.position = CLLocationCoordinate2DMake(-33.86, 151.20);
marker.title = @"Sydney";
marker.snippet = @"Australia";
marker.map = mapView_;
}
@end
Затем у меня есть файлы GoogleMapViewManager.h
и GoogleMapViewManager.m
, которые предоставляют мост для React Native. Опять же, это не так много сейчас!:
#import "RCTViewManager.h"
@interface GoogleMapViewManager : RCTViewManager
@end
-
#import "GoogleMapView.h"
#import "GoogleMapViewManager.h"
@implementation GoogleMapViewManager
RCT_EXPORT_MODULE()
- (UIView *)view
{
GoogleMapView *map = [[GoogleMapView alloc] init];
return map;
}
@end
Я добавил эту библиотеку в свой проект React Native XCode так: есть некоторые красные файлы (я не слишком уверен, что они означают?):
Я также добавил продукт из своей статической библиотеки в список Link Binary With Libraries
в разделе Build Phases
основного проекта React:
Однако, когда я пытаюсь скомпилировать проект, я получаю некоторые ошибки, которые приводят к сбою сборки так:
Я уверен, что я сделал что-то неправильно при импорте SDK Google Maps с помощью CocoaPods. Я не смог следить за документами и использовать файл .xcworkspace
при импорте моей статической библиотеки в приложение React, которое, возможно, не так, но я не могу понять, как его запустить!
Update:
Я могу получить код для компиляции, если я включаю проект карты с использованием файла .xcworkspace
, но тогда я не могу получить доступ к двоичным файлам или включать их в любые фазы сборки, что не полезно:
Кто-нибудь знает, как я могу использовать SDK Google Maps iOS, как это, в приложении React Native?