### 本项目为 SDK 提供了 MAP 组件 API / 位置 API 交互界面


### MAP 组件相关 API
---------
模块引入：
```javascript
import mapModule from '@finclip/ide-sdk-map' 
```

mapModule 暴露以下 API:
1. insertNativeMap
2. removeNativeMap
3. updateNativeMap
4. injectBridgeHelpers

在 MAP 组件挂载，insertNativeMap 被调用之前，需要通过 injectBridgeHelpers 注入一些相关的 helpers function，使用方法如下：
```javascript
/**
 * @param {Function} invokeCallback 
 * function invokeCallback (statue, event, callbackId, params = {}) {
 *  // implement
 * }
 * @param {Function} emitCustomEvent
 * @param {Object} FinChatJSBridge 
mapModule.injectBridgeHelpers(invokeCallback, emitCustomEvent, FinChatJSBridge)
```
#####  调用时需确保 FinChatJSBridge 可获取
### 位置相关 API 交互界面 webApp
----
#### 引入：
- 引入 @finclip/ide-sdk-map/dist'（里面包含 index.html 及相应的静态资源）

#### 通讯：
- SDK 与该 webApp 通过 postMessage 通讯

  ``` javascript
  // 发送数据 
  window.postMessage({
    event: 'chooseLocation' // chooseLocation, openLocation, choosePoi 
    openType: '' //  open, choose, choosePoi
    latitude: xxx, // number 
    longitude: xxx, //number
    scale: xxx, //number
    name: 'jimmy',
    address: 'xxxx',
    locationId: '', // 随机串，用于标记事件唯一，仅 chooseLocation 传递
    choosepoiId: '' // 随机串，用于标记事件唯一，仅 choosePoi 传递
  })

  
  // 接收数据
  window.addEventListener("message", (e) => {
    const data = e.data 
    const { event, ...recieveData } = data  
      // event: chooseLocation, openLocation, choosePoi
      // recieveData 接收到的实际数据
    
  }, false);
  
  
  // SDK 一侧可以通过监听 webApp 的 onLoad 事件的 isMapFrameLoaded ，判断其是否已经加载完成
  
  window.addEventListener("message", (e) => {
    	const data = e.data 
      const { event, ...recieveData } = data choosePoi 
      if(event === 'onLoad') {
        const isMapFrameLoaded = recieveData.isMapFrameLoaded 
      }
    
  }, false);
  ```

