Sto costruendo un componente dell'interfaccia utente React Native che utilizzerà l'SDK iOS di Google Maps per eseguire il rendering delle mappe in un'applicazione React. Si sta costruendo come un Cocoa Touch Framework statico per poterlo utilizzare in diversi progetti.Utilizza il modulo CocoaPods in Componente utente UI personalizzato React
Finora questo framework non fa molto, sto solo cercando di farlo compilare prima di provare a fare qualcosa di utile con esso. Ho un Podfile
che carica in Google Maps SDK e ho eseguire il comando 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
ho GoogleMapView.h
e GoogleMapView.m
file che fare il lavoro pesante in questo modulo. Per ora in realtà non fare molto:
@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
allora ho GoogleMapViewManager.h
e GoogleMapViewManager.m
file che forniscono il ponte di reagire nativa. Ancora una volta, questi non fanno molto in questo momento !:
#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
ho aggiunto questa libreria alla mia Reagire progetto XCode Native in questo modo - ci sono alcuni file rosse quotate (io non sono troppo sicuro che cosa significano):?
ho anche aggiunto prodotto dalla mia libreria statica alla lista Link Binary With Libraries
nel 01.235.049,382 milasezione del progetto principale React:
Tuttavia, quando provo a compilare il progetto, ottengo alcuni errori che stanno causando l'accumulo di fallire in questo modo:
Sono sicuro di aver sbagliato qualcosa durante l'importazione dell'SDK di Google Maps utilizzando CocoaPods. Non ero in grado di seguire i documenti e utilizzare il file .xcworkspace
quando si importa la mia libreria statica nell'app React che è probabilmente ciò che è sbagliato, ma non riesco a capire come farlo funzionare!
Aggiornamento:
posso ottenere il codice per compilare se includo il progetto mappa utilizzando il file .xcworkspace
, ma poi non sono in grado di accedere ai file binari o inserire in eventuali fasi di creazione che isn 't utile:
qualcuno sa come potrei fare uso della Google Maps per iOS SDK come questo in un Reagire app nativa?
Non so come usare CocoaPods in un progetto di libreria, ma potresti includere le classi correlate a Google Maps direttamente nel tuo progetto React originale (se non hai intenzione di condividere la libreria) –
Questo è quello che ho dovuto tornare a fare - questo causa un grosso problema se è necessario aggiornare la versione di React poiché il comando '# react-native upgrade' fa un casino del progetto XCode. – edcs
Penso che il modo più semplice per farlo sarebbe installare react-native tramite CocoaPods e aggiungere la tua dipendenza come un altro Pod. – Adamski