Reactアプリで地図をレンダリングするためにGoogle Maps iOS SDKを使用するReact Native UIコンポーネントを構築しています。これは静的なCocoa Touch Frameworkとして構築されており、別のプロジェクトでも使用できます。ReactネイティブカスタムUIコンポーネントでCocoaPodモジュールを使用
これまでのところ、このフレームワークはあまり効果がありません。私はそれを使う前にコンパイルするようにしています。
# 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
ファイルを持っている:私はGoogleマップSDKにロードし、私はpod install
コマンドを実行したPodfile
を持っています。今のところ、彼らは本当に多く行わない。
@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
ファイルを持っています。記載されているいくつかの赤のファイルが(ある - ので、私は私のようにネイティブのXcodeプロジェクトを反応させるために、このライブラリを追加しました
#import "GoogleMapView.h"
#import "GoogleMapViewManager.h"
@implementation GoogleMapViewManager
RCT_EXPORT_MODULE()
- (UIView *)view
{
GoogleMapView *map = [[GoogleMapView alloc] init];
return map;
}
@end
- ここでも、これらは!:今くらい
#import "RCTViewManager.h"
@interface GoogleMapViewManager : RCTViewManager
@end
をしません私は、彼らが何を意味するか、あまりにもわからない):?
は、私はまたにLink Binary With Libraries
リストに私の静的ライブラリから製品を追加しました私はプロジェクトをコンパイルしようとすると、私はビルドがそうのように失敗する原因となっているいくつかのエラーを取得し、しかし
:
メインのセクションでは、プロジェクトに反応します私は、CocoaPodを使ってGoogle Maps SDKをインポートするときに間違ったことをしたことは確かです。静的ライブラリをReactアプリにインポートする際に、おそらく何が問題なのでしょうか、私はドキュメントに従い、.xcworkspace
ファイルを使用することができませんでしたが、実行する方法を理解できませんでした。
更新:
私は.xcworkspace
ファイルを使用してマッププロジェクトが含まれている場合にコンパイルするためのコードを取得することができますが、その後、私はバイナリにアクセスすることはできないんだか、どのISN任意のビルドフェーズに含めます「Tは便利:
誰も私が反応ネイティブアプリでこのようなGoogleマップのiOS SDKを利用することができる方法を知っていますか?
ライブラリプロジェクトでCocoaPodを使用する方法がわかりませんが、オリジナルのReactプロジェクトにGoogle Maps関連のクラスを直接含めることができます(ライブラリを共有する予定がない場合) –
これは私がしなければならなかったことですこれは '#react-native upgrade'コマンドがXCodeプロジェクトを混乱させるので、Reactバージョンを更新する必要がある場合に大きな問題を引き起こします。 – edcs
私はそれを行う最もクリーンな方法は、CocoaPods経由で反応ネイティブをインストールし、依存関係を別のポッドとして追加することだと思います。 – Adamski