UNPKG

rc-bmap

Version:

<p align="center"> <img src="https://bmap.jser-club.com/home.png" width="200px"> </p> <p align="center">基于 React 的百度地图组件</p>

48 lines (39 loc) 1.43 kB
import Util from '../utils'; import BMapUtil from '../utils/map'; import OPTIONS from '../options/infoWindow'; import BaseOverlay from './BaseOverlay'; const getInfoWindowOptions = config => ({ width: config.width, height: config.height, maxWidth: config.maxWidth, offset: config.offset, title: config.title, enableAutoPan: config.autoPan, enableCloseOnClick: config.closeOnClick, enableMessage: config.displayMessage, message: config.message, }); class InfoWindow extends BaseOverlay { outOfRangeOpts = ['maxWidth', 'offset', 'displayMessage', 'message', 'point'] init(config = {}) { const options = getInfoWindowOptions(config); const point = Util.convert2BPoint(config.point); this.instance = BMapUtil.BInfoWindow(config.content, options); this.processVisible(config.visible, point); } processOptions(config) { const point = config.point || this.config.point; config.point = Util.convert2BPoint(point); Util.processSetOptions(this.instance, OPTIONS.SET, config); Util.processBooleanOptions(this.instance, OPTIONS.BOOLEAN, config); this.processVisible(config.visible, config.point); } processVisible(visible = true, point) { if (this.instance.isOpen() && !visible) { this.map.closeInfoWindow(); } else if (!this.instance.isOpen() && visible) { this.map.openInfoWindow(this.instance, point); } } } export default InfoWindow;