BaiduMap (baidu map) sdk for react-native
npm install react-native-baidumap --save
- Open your project in XCode, right click on
Librariesand clickAdd Files to "Your Project Name"Look undernode_modules/react-native-baidumapand addRCTBaiduMap.xcodeproj. - Add
libRCTBaiduMap.ato `Build Phases -> Link Binary With Libraries. - Click on
RCTBaiduMap.xcodeprojinLibrariesand go theBuild Settingstab. Double click the text to the right ofHeader Search Pathsand verify that it has$(SRCROOT)/../react-native/React- if they aren't, then add them. This is so XCode is able to find the headers that theRCTBaiduMapsource files are referring to by pointing to the header files installed within thereact-nativenode_modulesdirectory. - Add
node_modules/react-native-baidumap/RCTBaiduMap/RCTBaiduMap/BaiduMap/BaiduMapAPI_*.frameworkandBaiduMapAPI_Map.framework/Resources/mapapi.bundleto your project. - Set your project's framework Search Paths to include
$(PROJECT_DIR)/../node_modules/react-native-baidumap/ios/RCTBaiduMap/RCTBaiduMap/BaiduMap. - Set your project's Header Search paths to include
$(SRCROOT)/../node_modules/react-native-baidumap/ios/RCTBaiduMap/RCTBaiduMap. - Whenever you want to use it within React code now you can:
var MapView = require('react-native-baidumap');
- in
android/settings.gradle
include ':app', ':react-native-baidumap' project(':react-native-baidumap').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-baidumap/android/react-native-baidumap') - in
android/app/build.gradleadd:
dependencies{... compile project(':react-native-baidumap') } in
MainActivity.javaadd Newer versions of React Native... import com.yiyang.reactnativebaidumap.ReactMapPackage; // <--- This! ... public class MainActivity extends ReactActivity{@Override protected String getMainComponentName(){return "sample"} @Override protected boolean getUseDeveloperSupport(){return BuildConfig.DEBUG} @Override protected List<ReactPackage> getPackages(){return Arrays.<ReactPackage>asList( new MainReactPackage() new ReactMapPackage() // <---- and This! )} }Older versions of React Native
... import com.yiyang.reactnativebaidumap.ReactMapPackage; // <--- This! ... @Override protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState); mReactRootView = new ReactRootView(this); mReactInstanceManager = ReactInstanceManager.builder() .setApplication(getApplication()) .setBundleAssetName("index.android.bundle") .setJSMainModuleName("index.android") .addPackage(new MainReactPackage()) .addPackage(new ReactMapPackage()) // <---- and This! .setUseDeveloperSupport(BuildConfig.DEBUG) .setInitialLifecycleState(LifecycleState.RESUMED) .build(); mReactRootView.startReactApplication(mReactInstanceManager, "MyApp", null); setContentView(mReactRootView)}specify your Baidu Maps API Key in your
AndroidManifest.xml:
<applicationandroid:allowBackup="true"android:label="@string/app_name"android:icon="@mipmap/ic_launcher"android:theme="@style/AppTheme"> <!-- You will only need to add this meta-data tag, but make sure it's a child of application --> <meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="{{Your baidu maps API Key Here}}"/> </application>... import MapView from 'react-native-baidumap'; import KKLocation from 'react-native-baidumap/KKLocation'; ... componentDidMount(){this.refs["mapView"].zoomToLocs([[39.918541, 116.4835]]); KKLocation.getCurrentPosition((position) =>{console.log("location get current position: ", position)}, (error) =>{console.log("location get current position error: ", error)}); this.watchID = KKLocation.watchPosition((position) =>{console.log("watch position: ", position)})} render(){<MapView style={{flex: 1, width: 300}} ref="mapView" showsUserLocation={true} userLocationViewParams={{accuracyCircleFillColor: 'red', image: require('./start_icon.png')}} annotations={[{latitude: 39.832136, longitude: 116.34095, title: "start", subtile: "hello", image: require('./amap_start.png')},{latitude: 39.902136, longitude: 116.44095, title: "end", subtile: "hello", image: require('./amap_end.png')}]} overlays={[{coordinates: [{latitude: 39.832136, longitude: 116.34095},{latitude: 39.832136, longitude: 116.42095},{latitude: 39.902136, longitude: 116.42095},{latitude: 39.902136, longitude: 116.44095}], strokeColor: '#666666', lineWidth: 3}]} />}