Buduję komponent Native React Native, który będzie korzystać z zestawu SDK Map Google do iOS do renderowania map w aplikacji React. Jest on tworzony jako statyczna struktura dotykowa Cocoa Touch, dzięki czemu mogę go używać w różnych projektach.Użyj modułu CocoaPods w komponencie Natywny niestandardowy interfejs użytkownika
Póki co ta struktura nie robi wiele, po prostu próbuję ją skompilować, zanim spróbuję zrobić z nią coś użytecznego. Mam Podfile
który ładuje w Google Maps SDK i mam uruchomić komendę 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
mam GoogleMapView.h
i GoogleMapView.m
pliki, które zrobi podnoszenia ciężkich w tym module. Na razie nie naprawdę dużo:
@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
Wtedy mam GoogleMapViewManager.h
i GoogleMapViewManager.m
pliki, które zapewniają most reagować rodzime. Ponownie, to nie rób dużo teraz !:
#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
Dodałem tę bibliotekę do mojego React Native projektu XCode jak tak - istnieją pewne pliki wymienione (czerwone nie jestem zbyt pewien, co mają na myśli):
Dodałem także produkt z mojego statycznej biblioteki do listy Link Binary With Libraries
w Build Phases
odcinek głównej React projektu:
Jednak gdy próbuję skompilować projekt, mam pewne błędy, które powodują kompilacji niepowodzenie tak:
Jestem pewien, że zrobiłem coś nie tak podczas importowania pakietu SDK Google Maps przy użyciu CocoaPods. Nie mogłem postępować zgodnie z dokumentami i używać pliku .xcworkspace
podczas importowania mojej biblioteki statycznej do aplikacji React, która prawdopodobnie jest zła, ale nie mogę wymyślić, jak uruchomić ją!
Aktualizacja:
mogę uzyskać kod do kompilacji, jeśli to projekt mapie przy użyciu pliku .xcworkspace
, ale nie jestem w stanie uzyskać dostęp do plików binarnych lub włączyć je we wszelkich fazach, które ISN kompilacji „t przydatne:
Czy ktoś wie w jaki sposób mogę korzystać z Map Google na iOS SDK jak to w React Native aplikację?
Nie wiem, jak używać CocoaPods w projekcie bibliotecznym, ale możesz uwzględnić te zajęcia związane z Mapami Google bezpośrednio w oryginalnym projekcie React (jeśli nie planujesz udostępnić biblioteki). –
To właśnie musiałem powrócić do działania - powoduje to duży problem, jeśli trzeba zaktualizować wersję React, ponieważ komenda '# react-native upgrade' powoduje bałagan w projekcie XCode. – edcs
Myślę, że najczystszym sposobem na zrobienie tego byłoby zainstalowanie systemu reagowania natywnego za pośrednictwem CocoaPods i dodanie zależności jako kolejnej podpórki. – Adamski