android - 这里映射 sdk 来反应原生组件
问题描述
我对 Here map sdk 有疑问。我试图从本机端创建一个组件并从反应本机端调用。但我有这个问题。我无法初始化地图。 截屏
我从模拟器中得到这个错误。
这些是我的代码:
这里MapView.java:
public class HereMapView extends MapViewLite {
private static final String TAG = HereMapView.class.getSimpleName();
private MapViewLite mapView;
public HereMapView(ThemedReactContext reactContext) {
super(reactContext);
loadMapScene();
}
private void loadMapScene() {
// Load a scene from the SDK to render the map with a map style.
mapView.getMapScene().loadScene(MapStyle.NORMAL_DAY, new MapScene.LoadSceneCallback() {
@Override
public void onLoadScene(@Nullable MapScene.ErrorCode errorCode) {
if (errorCode == null) {
mapView.getCamera().setTarget(new GeoCoordinates(52.530932, 13.384915));
mapView.getCamera().setZoomLevel(14);
} else {
Log.d(TAG, "onLoadScene failed: " + errorCode.toString());
}
}
});
}
@Override
public void onPause() {
super.onPause();
this.onPause();
}
@Override
public void onResume() {
super.onResume();
this.onResume();
}
@Override
public void onDestroy() {
super.onDestroy();
this.onDestroy();
}
}
这里MapManager.java:
public class HereMapManager extends ViewGroupManager<HereMapView> {
private static final String TAG = HereMapManager.class.getSimpleName();
static final String REACT_CLASS = "HereMapView";
public Activity activity;
public HereMapManager(Activity activity){
this.activity = activity;
}
@Override
public String getName() {
return REACT_CLASS;
}
@Override
protected HereMapView createViewInstance(ThemedReactContext reactContext) {
return new HereMapView(reactContext);
}
}
这里MapModule.java:
public class HereMapModule extends ReactContextBaseJavaModule {
private static final String TAG = HereMapModule.class.getSimpleName();
HereMapModule(ReactApplicationContext reactContext) {
super(reactContext);
}
@Override
public String getName() {
return "HereMapView";
}
public Activity getActivity() {
return getCurrentActivity();
}
public static void closeQuietly(Closeable closeable) {
if (closeable == null) return;
try {
closeable.close();
} catch (IOException ignored) {
}
}
}
这里地图包:
public class HereMapPackage implements ReactPackage {
protected Activity activity;
public HereMapPackage() {
}
public HereMapPackage(Activity activity) {
this.activity = activity;
} // backwards compatibility
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
return Arrays.<NativeModule>asList(new HereMapModule(reactContext));
}
public List<Class<? extends JavaScriptModule>> createJSModules() {
return Collections.emptyList();
}
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
//HereMapManager mapManager = new HereMapManager(reactContext);
HereMapManager mapManager = new HereMapManager(this.activity);
return Arrays.<ViewManager>asList(mapManager);
}
}
然后我将包添加到: MainAplication.java :
@Override
protected List<ReactPackage> getPackages() {
@SuppressWarnings("UnnecessaryLocalVariable")
List<ReactPackage> packages = new PackageList(this).getPackages();
packages.add(new HereMapPackage());
return packages;
}
有了这个功能。
然后我用这段代码从本机端调用:
应用程序.js:
const HereMapView = requireNativeComponent('HereMapView');
const App: () => React$Node = () => {
return (
<SafeAreaView style={styles.screen}>
<View style={styles.screen}>
<HereMapView style={{flex : 1}} />
</View>
</SafeAreaView>
);
};
你能帮我吗?我在这停留了超过 2 周。
解决方案
推荐阅读
- google-sheets - 如何使用谷歌表格中最后填充的值自动填充列的空白单元格?
- authentication - 如何使用 django rest 框架对应用程序而不是用户进行身份验证?
- arrays - 如何将表转换为 Json 数组?
- javascript - 错误:无法在 Tizen TV 上开始调试
- python - 将字母转换为数字和符号
- c# - 来自 TcpClient 的 TcpState
- php - 为什么有时mysql会更新两次
- angular - angular 6 获取拦截器内的响应标头
- python - 如何在 Django 中创建订阅按钮
- kendo-ui-angular2 - 角剑道网格单元测试,不能绑定到“数据”,因为它不是一个已知的属性