imobile_for_javascript
Version:
iMobile for JavaScript,是SuperMap iMobile推出的一款基于React-Native框架的移动应用开发工具。基于该开发工具,用户可以使用JavaScript开发语言,开发出在Android和IOS操作系统下运行的原生移动GIS应用,入门门槛低,一次开发,处处运行。
123 lines (94 loc) • 3.35 kB
Markdown
# imobile_for_javascript
## Getting started
`$ npm install imobile_for_javascript --save`
### Mostly automatic installation
`$ react-native link imobile_for_javascript`
### Manual installation
#### iOS
Supermap SDK base on RN for IOS is coming soon...
1. In XCode, in the project navigator, right click `Libraries` ➜ `Add Files to [your project's name]`
2. Go to `node_modules` ➜ `imobile_for_javascript` and add `Supermap.xcodeproj`
3. In XCode, in the project navigator, select your project. Add `libSupermap.a` to your project's `Build Phases` ➜ `Link Binary With Libraries`
4. Run your project (`Cmd+R`)<
#### Android
1. Open up `android/app/src/main/java/[...]/MainActivity.java`
- Add `import com.supermap.rnsupermap.SupermapPackage;` to the imports at the top of the file
- Add `new SupermapPackage()` to the list returned by the `getPackages()` method
2. Append the following lines to `android/settings.gradle`:
```
include ':supermap'
project(':supermap').projectDir = new File(rootProject.projectDir, '../node_modules/supermap/android')
```
3. Insert the following lines inside the dependencies block in `android/app/build.gradle`:
```
compile project(':supermap')
```
## Usage
For this Example.After install the pack we offered, You will easily make a project of map inflating the whole screen by following the steps below.
1. Setup the liscense file into the path "./Supermap/licsence".
2. Setup the Sample Data into a specified path that will be refer as a
argument in the function setServer() of WorkspaceConnection object in the next step;
3. type the follow codes in an initiated React Native Project
```javascript
...
import {
Workspace,
SMMapView,
} from 'imobile_for_javascript';
class XXX extends Component {
//Required funtion for obtaining the MapView object.
_onGetInstance = (mapView) => {
this.mapView = mapView;
this._addMap();
}
/**
* 初始化地图 Function for initiating the Map
* @private
*/
_addMap = () => {
try {
//创建workspace模块对象
//Create workspace object
var workspaceModule = new Workspace();
//加载工作空间等一系列打开地图的操作
//Operations for loading workspace and opening map
(async function () {
try {
this.workspace = await workspaceModule.createObj();
await this.workspace.open("/SampleData/City/Changchun.smwu");
this.mapControl = await this.mapView.getMapControl();
this.map = await this.mapControl.getMap();
await this.map.setWorkspace(this.workspace);
var mapName = await this.workspace.getMapName(0);
await this.map.open(mapName);
await this.map.refresh();
} catch (e) {
console.error(e);
}
}).bind(this)();
} catch (e) {
console.error(e);
}
}
render() {
return (
<View style={styles.container}>
<SMMapView ref="mapView" style={styles.map} onGetInstance={this._onGetInstance}/>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
map: {
flex: 1,
alignSelf: 'stretch',
},
});
AppRegistry.registerComponent('XXX', () => XXX);
```