Marker.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.Marker = undefined;
  6. var _react = require('react');
  7. var _react2 = babelHelpers.interopRequireDefault(_react);
  8. var _propTypes = require('prop-types');
  9. var _propTypes2 = babelHelpers.interopRequireDefault(_propTypes);
  10. var _api = require('./api');
  11. var __com__ = 'Marker';
  12. //const debug = console.log;
  13. var debug = function debug() {};
  14. var Marker = exports.Marker = function (_Component) {
  15. babelHelpers.inherits(Marker, _Component);
  16. function Marker() {
  17. babelHelpers.classCallCheck(this, Marker);
  18. var _this = babelHelpers.possibleConstructorReturn(this, (Marker.__proto__ || Object.getPrototypeOf(Marker)).call(this));
  19. _this.refElement = null;
  20. _this._entity = null;
  21. debug(__com__, 'constructor', _this._entity);
  22. return _this;
  23. }
  24. babelHelpers.createClass(Marker, [{
  25. key: 'componentWillMount',
  26. value: function componentWillMount() {
  27. debug(__com__, 'componentWillMount', this.props.children, this._entity);
  28. }
  29. }, {
  30. key: 'componentDidMount',
  31. value: function componentDidMount() {
  32. debug(__com__, 'componentDidMount', this.props.children, this._entity);
  33. var _props = this.props,
  34. AMap = _props.AMap,
  35. __map__ = _props.__map__,
  36. options = _props.options,
  37. events = _props.events,
  38. children = _props.children;
  39. //let opts = { ...(options || {}), map: __map__, content: children };
  40. var opts = babelHelpers.extends({}, options || {}, { map: __map__ });
  41. this._entity = (0, _api.createMarker)(AMap, opts, events);
  42. if (this._entity) {
  43. if (this.props.refer) this.props.refer(this._entity);
  44. }
  45. }
  46. }, {
  47. key: 'componentWillReceiveProps',
  48. value: function componentWillReceiveProps(nextProps) {
  49. debug(__com__, 'componentWillReceiveProps', this.props.children, this._entity);
  50. }
  51. }, {
  52. key: 'componentWillUpdate',
  53. value: function componentWillUpdate() {
  54. debug(__com__, 'componentWillUpdate', this.props.children, this._entity);
  55. }
  56. }, {
  57. key: 'componentDidUpdate',
  58. value: function componentDidUpdate(prevProps) {
  59. debug(__com__, 'componentDidUpdate', this.props.children, this._entity);
  60. var _props2 = this.props,
  61. AMap = _props2.AMap,
  62. __map__ = _props2.__map__,
  63. options = _props2.options,
  64. events = _props2.events,
  65. children = _props2.children;
  66. //let opts = { ...(options || {}), map: __map__, content: children };
  67. var opts = babelHelpers.extends({}, options || {}, { map: __map__ });
  68. if (!this._entity) {
  69. this._entity = (0, _api.createMarker)(AMap, opts, events);
  70. if (this._entity) {
  71. if (this.props.refer) this.props.refer(this._entity);
  72. }
  73. return;
  74. }
  75. // need check props changes, then update.
  76. var oldOpts = babelHelpers.extends({}, prevProps.options || {}, {
  77. map: prevProps.__map__,
  78. content: prevProps.children
  79. });
  80. (0, _api.updateMarker)(this._entity, opts, events, oldOpts, prevProps.events);
  81. }
  82. }, {
  83. key: 'componentWillUnmount',
  84. value: function componentWillUnmount() {
  85. debug(__com__, 'componentWillUnmount', this.props.children, this._entity);
  86. if (this._entity) {
  87. // this._entity.clearMap();
  88. this._entity.stopMove();
  89. this._entity.setMap(null);
  90. delete this._entity;
  91. // delete this._entity;
  92. this._entity = null;
  93. if (this.props.refer) this.props.refer(this._entity);
  94. }
  95. }
  96. // shouldComponentUpdate(nextProps, nextState) {
  97. // debug(__com__, 'shouldComponentUpdate', this._entity);
  98. // let { AMap: oldAMap, refer: oldRefer, options: oldOptions, events: oldEvents } = this.props;
  99. // let { AMap: newAMap, refer: newRefer, options: newOptions, events: newEvents } = nextProps;
  100. // if (oldAMap === newAMap && oldRefer === newRefer && oldOptions === newOptions && oldEvents === newEvents) {
  101. // debug(__com__, 'shouldComponentUpdate', false);
  102. // return false;
  103. // }
  104. // debug(__com__, 'shouldComponentUpdate', true);
  105. // return true;
  106. // }
  107. }, {
  108. key: 'render',
  109. value: function render() {
  110. debug(__com__, 'render', this.props.children, this._entity);
  111. var _props3 = this.props,
  112. AMap = _props3.AMap,
  113. options = _props3.options,
  114. events = _props3.events,
  115. match = _props3.match,
  116. location = _props3.location,
  117. history = _props3.history,
  118. staticContext = _props3.staticContext,
  119. rest = babelHelpers.objectWithoutProperties(_props3, ['AMap', 'options', 'events', 'match', 'location', 'history', 'staticContext']);
  120. return null;
  121. // return (
  122. // <React.Fragment>
  123. // </React.Fragment>
  124. // )
  125. }
  126. }]);
  127. return Marker;
  128. }(_react.Component);
  129. Marker.propTypes = {
  130. AMap: _propTypes2.default.object,
  131. __map__: _propTypes2.default.object,
  132. options: _propTypes2.default.object,
  133. events: _propTypes2.default.object
  134. // zoom: PropTypes.number, // 10, //设置地图显示的缩放级别
  135. // center: PropTypes.array, // [116.397428, 39.90923],//设置地图中心点坐标
  136. // layers: PropTypes.array, // [new AMap.TileLayer.Satellite()], //设置图层,可设置成包含一个或多个图层的数组
  137. // mapStyle: PropTypes.string, // 'amap://styles/whitesmoke', //设置地图的显示样式
  138. // viewMode: PropTypes.string, // '2D', //设置地图模式
  139. // lang: PropTypes.string, // 'zh_cn', //设置地图语言类型
  140. // events: PropTypes.object, // {'click': function}, // 事件map
  141. };
  142. exports.default = Marker;