Tôi đang xây dựng thành phần Giao diện người dùng phản ứng gốc sẽ sử dụng SDK Google Maps iOS để hiển thị bản đồ trong ứng dụng React. Điều này đang được xây dựng như là một khung Cocoa Touch tĩnh để tôi có thể sử dụng nó trong các dự án khác nhau.Sử dụng Module CocoaPods trong Thành phần giao diện người dùng tùy chỉnh phản ứng gốc
Cho đến nay khung này không làm được gì nhiều, tôi chỉ đang cố gắng làm cho nó biên dịch trước khi tôi thử và làm bất cứ điều gì hữu ích với nó. Tôi có một Podfile
mà tải trong Maps SDK của Google và tôi đã chạy lệnh 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
Tôi có GoogleMapView.h
và GoogleMapView.m
file mà sẽ làm việc nặng nhọc trong module này. Còn bây giờ họ không thực sự làm được gì nhiều:
@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
Sau đó, tôi có GoogleMapViewManager.h
và GoogleMapViewManager.m
file đó cung cấp các cây cầu để Phản ứng Native. Một lần nữa, những không làm được gì nhiều ngay bây giờ !:
#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
Tôi đã thêm thư viện này vào dự án XCode Native Phản ứng của tôi như vậy - có một số file đỏ niêm yết (tôi không quá chắc chắn những gì họ có ý nghĩa):
tôi cũng đã thêm các sản phẩm từ thư viện tĩnh của tôi vào danh sách Link Binary With Libraries
trong Build Phases
phần của dự án Phản ứng chính:
Tuy nhiên, khi tôi cố gắng để lập dự án, tôi nhận được một số lỗi mà đang gây ra xây dựng để thất bại như vậy:
Tôi chắc chắn rằng tôi đã làm điều gì đó sai khi nhập SDK Google Maps bằng cách sử dụng CocoaPods. Tôi không thể theo dõi tài liệu và sử dụng tệp .xcworkspace
khi nhập thư viện tĩnh của tôi vào ứng dụng React, điều này có thể là sai, nhưng tôi không thể tìm ra cách để chạy nó!
Cập nhật:
Tôi có thể lấy mã để biên dịch nếu tôi bao gồm các dự án bản đồ bằng cách sử dụng tập tin .xcworkspace
, nhưng sau đó tôi không thể truy cập vào mã nhị phân hoặc bao gồm chúng trong bất kỳ giai đoạn xây dựng mà isn 't hữu ích:
có ai biết làm thế nào tôi có thể tận dụng Google Maps iOS SDK như thế này trong một Phản ứng ứng dụng Native?
Không chắc chắn cách sử dụng CocoaPod trong dự án thư viện, nhưng bạn có thể đưa các lớp liên quan đến Google Maps đó trực tiếp vào dự án React ban đầu của bạn (nếu bạn không có kế hoạch chia sẻ thư viện) –
trở lại làm - điều này gây ra một vấn đề lớn nếu bạn cần cập nhật phiên bản React vì lệnh '# reac-native upgrade' tạo ra một mớ hỗn độn của dự án XCode. – edcs
Tôi nghĩ rằng cách sạch nhất để làm điều đó sẽ là cài đặt phản ứng bản địa thông qua CocoaPods và thêm sự phụ thuộc của bạn như một Pod khác. – Adamski