@mapmost/mapmost-webgl-transformControls
A customized plug-in for Mapmost SDK for WebGL that provides support for 3D model translation, rotation and scaling operations.
Depends on Mapmost SDK for WebGL, version correspondence is as follows:
| transformControls version | SDK version |
|---|---|
| v 1.0.0 | v 2.10.0+ |
| v 2.0.0 | v 3.2.0+ |
| v 3.0.0 | v 9.1.0+ |
| v 3.1.0 | v 9.11.1-beta+ |
Install
npm install @mapmost/mapmost-webgl-transformControls@3.1.0
Usage
Using modules
import mapmost from '@mapmost/mapmost-webgl';
import MapmostTransformControls from '@mapmost/mapmost-webgl-transformControls';
import '@mapmost/mapmost-webgl-transformControls/dist/mapmost-webgl-transformControls.css'
Use CDN
<script src ='https://delivery.mapmost.com/cdn/sdk/webgl/v9.16.0/mapmost-webgl-min.js'></script>
<script src='https://delivery.mapmost.com/cdn/sdk/plugins/mapmost-webgl-transformControls/v3.1.0/mapmost-webgl-transformControls.js'></script>
<link rel='stylesheet' href='https://delivery.mapmost.com/cdn/sdk/plugins/mapmost-webgl-transformControls/v3.1.0/mapmost-webgl-transformControls.css' type='text/css' />
Usage
new MapmostTransformControls(model, layer, options);
model: Obejct3D (required) model object.layer: ModelLayer (required) 3D layer instance.options: Object (optional) optional parametersisShowTool: Boolean (optional) Whether to display the operation control, the default istrue.isShowAllAxis: Boolean (optional) Whether to display all axes, the default isfalse, only the XYZ three axes are displayed.
Usage example
let models_obj = ["./data/Olympic.glb"].map(item => ({
type: 'glb',
url: item
}));
let options = {
id: 'model_id',
type: 'model',
models: models_obj,
center: [120.74603465203592, 31.30605899929158, 0.0],
callback: function (group, layer) {
let model = group.children[0]
new MapmostTransformControls(model, layer);
}
};
map.addLayer(options);
Refer to Example.
method
getStateInfo
Get model status information.
-The return value is in the following form:
```js
{
"center": [ // The origin of model placement
120.74610481430044,
31.30605392875909,
68.19268619625325
],
"rotate": { // rotation value
"x": 0,
"y": 0,
"z": 0
},
"scale": { // scale value
"x": 1,
"y": 1,
"z": 1
}
}
```
Case
let trans=new MapmostTransformControls(model, layer);
trans.control.addEventListener('mouseUp', function (e) {
console.log(trans.getStateInfo()) // Output model status information
})
quit
Exit operating mode.
Case
let control=new MapmostTransformControls(model, layer, {isShowTool:false});
control.quit()
setMode
Set the operating mode.
Parameters
| Name | Type | Description |
|---|---|---|
| mode | String | RequiredTranslation, rotation, and scaling are "translate", "rotate", and "scale" respectively. |
Case
let control=new MapmostTransformControls(model, layer, {isShowTool:false});
control.setMode('translate') //Set translation mode
reset
Reset model objects.
Case
let control=new MapmostTransformControls(model, layer, {isShowTool:false});
control.reset() // Reset