UNPKG

rc-tile-map

Version:
198 lines (162 loc) 8.3 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports['default'] = undefined; var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; var _class, _temp2; var _lodash = require('lodash'); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _MapComponent2 = require('./MapComponent'); var _MapComponent3 = _interopRequireDefault(_MapComponent2); var _children = require('./propTypes/children'); var _children2 = _interopRequireDefault(_children); var _point = require('./propTypes/point'); var _point2 = _interopRequireDefault(_point); var _layerContainer = require('./propTypes/layerContainer'); var _layerContainer2 = _interopRequireDefault(_layerContainer); var _map = require('./propTypes/map'); var _map2 = _interopRequireDefault(_map); var _viewport = require('./propTypes/viewport'); var _viewport2 = _interopRequireDefault(_viewport); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var MapOptions = ['minZoom', 'maxZoom', 'mapType', 'enableHighResolution', 'enableAutoResize', 'enableMapClick']; var Map = (_temp2 = _class = function (_MapComponent) { _inherits(Map, _MapComponent); function Map() { var _ref; var _temp, _this, _ret; _classCallCheck(this, Map); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Map.__proto__ || Object.getPrototypeOf(Map)).call.apply(_ref, [this].concat(args))), _this), _this._updating = false, _this.bindContainer = function (container) { _this.container = container; }, _temp), _possibleConstructorReturn(_this, _ret); } _createClass(Map, [{ key: 'getChildContext', value: function getChildContext() { return { layerContainer: this.componentInstance, map: this.componentInstance }; } }, { key: 'createComponentInstance', value: function createComponentInstance(props) { var center = props.center, zoom = props.zoom, disableScrollWheelZoom = props.disableScrollWheelZoom, disableDoubleClickZoom = props.disableDoubleClickZoom; var mapNow = new window.BMap.Map(this.container, (0, _lodash.pick)(props, MapOptions)); mapNow.centerAndZoom(center, zoom); if (disableScrollWheelZoom) { mapNow.disableScrollWheelZoom(); } else { mapNow.enableScrollWheelZoom(true); } if (disableDoubleClickZoom) { mapNow.disableDoubleClickZoom(); } else { mapNow.enableDoubleClickZoom(true); } return mapNow; } }, { key: 'updateComponentInstance', value: function updateComponentInstance(fromProps, toProps) { this._updating = true; var center = toProps.center, viewport = toProps.viewport, maxZoom = toProps.maxZoom, minZoom = toProps.minZoom, zoom = toProps.zoom; var centerChange = center && !(0, _lodash.isEqual)(center, fromProps.center); var zoomChange = typeof zoom === 'number' && zoom !== fromProps.zoom; if (viewport && !(0, _lodash.isEqual)(viewport, fromProps.viewport)) { this.componentInstance.setViewport(viewport); } else if (centerChange && zoomChange) { this.componentInstance.centerAndZoom(center, zoom); } else if (centerChange && !zoomChange) { this.componentInstance.setCenter(center); } else if (zoomChange && !centerChange) { this.componentInstance.setZoom(zoom); } if (typeof maxZoom === 'number' && maxZoom !== fromProps.maxZoom) { this.componentInstance.setMaxZoom(maxZoom); } if (typeof minZoom === 'number' && minZoom !== fromProps.minZoom) { this.componentInstance.setMinZoom(minZoom); } this._updating = false; } }, { key: 'componentDidMount', value: function componentDidMount() { this.componentInstance = this.createComponentInstance(this.props); if (this.props.setComponentInstance) { this.props.setComponentInstance(this.componentInstance); } _get(Map.prototype.__proto__ || Object.getPrototypeOf(Map.prototype), 'componentDidMount', this).call(this); this.forceUpdate(); // Re-render now that componentInstance is created } }, { key: 'componentDidUpdate', value: function componentDidUpdate(prevProps) { this.updateComponentInstance(prevProps, this.props); } }, { key: 'componentWillUnmount', value: function componentWillUnmount() { _get(Map.prototype.__proto__ || Object.getPrototypeOf(Map.prototype), 'componentWillUnmount', this).call(this); } }, { key: 'render', value: function render() { var map = this.componentInstance; var children = map ? this.props.children : null; return _react2['default'].createElement( 'div', { className: this.props.className, id: this.props.id, ref: this.bindContainer, style: this.props.style }, children ); } }]); return Map; }(_MapComponent3['default']), _class.defaultProps = { mapType: window.BMAP_NORMAL_MAP, enableAutoResize: true, enableMapClick: true, disableDoubleClickZoom: false, disableScrollWheelZoom: false, center: window.BMap && new window.BMap.Point(116.404, 39.915), zoom: 11 }, _class.propTypes = { minZoom: _propTypes2['default'].number, maxZoom: _propTypes2['default'].number, mapType: _propTypes2['default'].object, enableAutoResize: _propTypes2['default'].bool, enableMapClick: _propTypes2['default'].bool, disableScrollWheelZoom: _propTypes2['default'].bool, disableDoubleClickZoom: _propTypes2['default'].bool, children: _children2['default'], className: _propTypes2['default'].string, id: _propTypes2['default'].string, style: _propTypes2['default'].object, viewport: _viewport2['default'], center: _propTypes2['default'].oneOfType([_propTypes2['default'].string, _point2['default']]), zoom: _propTypes2['default'].number }, _class.childContextTypes = { layerContainer: _layerContainer2['default'], map: _map2['default'] }, _temp2); exports['default'] = Map; module.exports = exports['default'];