# cx_maps

> 车晓地图模块，封装百度和谷歌地图公用方法

Latest version **1.0.18** (published 2023-10-16) · ISC license · 0 weekly downloads

## Install

```sh
npm install cx_maps
pnpm add cx_maps
yarn add cx_maps
bun add cx_maps
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: esm support; no vulnerabilities.

Warnings: low downloads; no types.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.18 |
| Published | 2023-10-16 |
| First published | 2023-10-16 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Dependencies | 2 |
| Unpacked size | 42.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | jiangfulai |
| Maintainers | jiangfulai |
| Keywords | cx_map, 车晓地图, 地图组件, 谷歌地图, 百度地图 |

## Links

- npm: https://www.npmjs.com/package/cx_maps
- npm.io page: https://npm.io/package/cx_maps

## Dependencies (2)

- [bmaplib.distancetool](https://npm.io/package/bmaplib.distancetool.md) ^1.0.2
- [@googlemaps/js-api-loader](https://npm.io/package/@googlemaps/js-api-loader.md) ^1.16.2

## Recent versions

- 1.0.18 (latest) — 2023-10-16

## README

<p align='center'>
  车晓地图插件
</p>

## 简介
该插件针对 `Vue2` 版本开发，通过mixins混入使用，封装百度地图、谷歌地图公用方法，暴露方法统一接口，利于后期项目内复用

基于百度地图V2.0版本，谷歌地图V3.5.x版本开发

##  开发文档

[百度地图官方文档](https://lbsyun.baidu.com/index.php?title=jspopular3.0)

[谷歌地图官方文档](https://developers.google.com/maps/documentation/javascript?hl=zh-cn)

## 相关依赖包

|百度||
|--|--|
|bmaplib.distancetool|百度测距插件|

|谷歌||
|--|--|
|@googlemaps/js-api-loader|加载谷歌地图npm包|

## 安装
* 切换npm源

车晓内部私有源地址：http://npm.chexiao.co/

```javascript
  npm config set registry http://npm.chexiao.co/
  // 切换后查看一下当前源地址
  npm config get registry
  // 登录账号，具体账号密码，请查看群内容
  npm login
```

建议：
1. `安装nrm工具管理npm源`，
2. `Node版本10以上，最新版本最佳`

* 安装cx_maps包

```javascript
  npm i cx_maps -S
```

## 使用

### 注意事项
* 模板文件`index.html`需要先引入以下脚本

```html
<script src="https://api.map.baidu.com/getscript?v=2.0&ak=6aeglsKLZQiDkeL8H1SlEiXT5hrSjNoF&s=1"></script>
<script type="text/javascript" src="https://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js"></script>
<script type="text/javascript" src="https://api.map.baidu.com/library/LuShu/1.2/src/LuShu_min.js"></script>
```
* 谷歌地图需要配合翻墙软件进行开发

* 经纬度区分

```javascript
  // 百度地图经纬度
  const position = {
    lng: data.lng,
    lat: data.lat
  }
  // 谷歌地图经纬度
  const position = {
    lng: data.gps84Lon,
    lat: data.gps84Lat
  }
```

### 组件内使用

* 引入包

```javascript
  import mapMixin from 'cx_maps'
```

* 通过mixins混入组件

```javascript
  ...
  mixins: [ mapMixin ],
  ...

```
* 添加地图挂载点，并进行地图初始化

```html
  <!-- 挂载点必须设置id属性 allMap ref属性 map -->
  <div id="allMap" ref="map"></div>
```

```javascript
  mounted() {
    this.mapInitFn()
  }
```

## 示例

### 初始化地图

传出初始化配置项，返回Promise，可以添加地图加载完毕事件回调

```javascript
this.mapInitFn({
  mapType: 'baidu', // 地图类型 String 'google' 'baidu'
  mapContainer: 'allMap', // 地图挂载点 id 属性 String
  mapTypeControlPosition: 'right', // 地图控件位置 String 'left' 'right'
  lng: 116.404, // 初始化地图经度，国内项目定位到首都，必填项
  lat: 39.915,  // 初始化地图纬度，国内项目定位到首都，必填项
}).then()
```

### 切换地图类型

手动切换地图类型

```javascript
  this.changeMapFn(type) // type 地图类型 String 'google' 'baidu'
```
### 调整地图视角

根据当前marker，自动调整地图视角

```javascript
  this.setViewPort(this.markerArr) // markerArr 数组
```
### 显示信息弹窗

通常配合marker点标记，显示信息弹窗

```javascript
  // 必填参数 信息对象
  // 自定义dom元素挂载点，默认 this.$refs.win.$el
  this.openInfoWindow(information)
```

### 添加label弹窗

```javascript
  /**
   * @description: 添加label弹窗
   * @return {*}
   * @param {*} marker 点标记
   * @param {*} point 经纬度
   * @param {*} dom 弹窗dom元素 默认为ref=msgLabel的元素
   */   
  this.addLabelLayer(marker, point, this.$refs.msgLabel.innerHTML)
```

## 相关方法

|方法名|说明|参数|参数是否必填|默认值|
|--|--|--|--|--|
|mapInitFn|地图初始化方法，返回Promise，传递地图类型，挂载点，地图控件位置，缩放控件位置参数|{ mapType, mapContainer, mapTypeControlPosition, zoomControlPosition,lng,lat }|否（`国内项目`使用百度地图，定位到首都，必填项mapType，lng，lat，`海外项目`非必填）|{mapType: 'google', mapContainer: 'allmap', mapTypeControlPosition: 'left', zoomControlPosition: 'right'}|
|changeMapFn|切换地图类型|'google'、'baidu'|是|无|
|setViewPort|地图根据当前marker显示最佳视角|marker数组|是|无|
|openInfoWindow|显示信息弹窗|data 弹窗信息，container自定义弹窗DOM元素|是|container：this.$refs.win.$el|
|addMarker|添加marker|data：marker信息对象，customIcon：自定义icon（有默认值），markerFn：是否拥有点击事件|是|customIcon: markerIconArr[data.deviceState - 1]，markerFn: true|
|removeMarker|移除marker|delMarker|是|无|
|clearOver|清除 marker、测距、弹出层、多段线等图层|无|否|无|
|addLabelLayer|添加label弹窗|marker，point，dom|是|否|
|removeLabelLayer|移除label弹窗|无|否|无|
|clearDistance|清除多段线绘制|无|否|无|
|clearInfoWindow|清除信息弹窗|无|否|无|
|resetCenter|重置地图中心点并设置地图缩放|positionObj，zoom|是|zoom: 15|
|resetMap|重置地图，清除地图上所有marker、覆盖层，重置地图|无|否|无|
|setAnimation|为当前指定marker添加动画|marker数据对象|是|否|
|setPolyline|添加多段线|arrPois：多段线数据数组|是|否|

---
_Source: https://npm.io/package/cx_maps · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
