react-native-baidu-map@0.6.0 Xcode10.2 配置方法
当前环境
react-native 0.59.8
react-native-baidu-map 0.6.0
安装百度地图0.6.0
npm install react-native-baidu-map@0.6.0 --save
react-native link react-native-baidu-map
Xcode10.2配置libstdc++.6.0.9.tbd(百度地图0.6.0版本依赖此库,而Xcode10.2已经废弃)
首先下载版本9.4.1的xcode(这里我是用的9.4.1,网上说9.x以上版本都可以)
拷贝需要的文件
运行在设备上
将xcode9.4.1以下文件(libstdc++.6.0.9.tbd、libstdc++.6.tbd)复制到xcode10.2版本的当前文件中,以下是两者文件夹的路径
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/
运行在模拟器上
将xcode9.4.1以下文件(libstdc++.dylib、libstdc++.6.dylib、libstdc++.6.0.9.dylib)复制到xcode10.2版本的当前文件中,以下是两者文件夹的路径
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/
将xcode9.4.1以下文件(libstdc++.6.0.9.tbd、libstdc++.6.tbd)复制到xcode10.2版本的当前文件中,以下是两者文件夹的路径
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/
至此xcode配置完毕
配置百度地图
首先对百度地图内部node_modules进行的修改配置
修改此文件下的代码,改变RCTBridgeModyle.h的引入方式为以下图示1所示
修改RCTViewManager.h/RCTConvert+CoreLocation.h的引入方式,如下图2所示
由于PropTypes的引入方式改变,注意安装组件prop-types,从此组件中引用PropTypes,注意找到百度地图组件关联的地方进行修改
其次对xcode进行配置
Build Settings->Search Paths, Framework search paths 添加 $(PROJECT_DIR)/…/node_modules/react-native-baidu-map/ios/lib
Header search paths 添加 $(SRCROOT)/…/node_modules/react-native-baidu-map/ios/RCTBaiduMap
添加依赖, react-native-baidu-map/ios/lib 下的全部 framwordk(位置如下图所示)
然后继续添加:CoreLocation.framework和QuartzCore.framework、OpenGLES.framework、SystemConfiguration.framework、CoreGraphics.framework、Security.framework、libsqlite3.0.tbd(xcode7以前为 libsqlite3.0.dylib)、CoreTelephony.framework 、libstdc++.6.0.9.tbd(xcode7以前为libstdc++.6.0.9.dylib)
接下来添加 BaiduMapAPI_Map.framework/Resources/mapapi.bundle,注意选择上Copy items if needed选项
AppDelegate.m init 初始化
#import “RCTBaiduMapViewManager.h”
[RCTBaiduMapViewManager initSDK:@“百度地图申请的ios的Key”];
代码中的书写方法
import { MapView } from ‘react-native-baidu-map’
<MapView
style={{width:‘100%’,height:300}}
zoom={15}
trafficEnaled={false}
baiduHeatMapEnabled={false}
setEsriLogoVisible={false}
mapType={1}
center={
{
longitude: 115.25,
latitude: 39.26
}
}>