UNPKG

jimu-mobile

Version:

积木组件库助力移动端开发

199 lines (170 loc) 9.29 kB
'use strict'; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; 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 _class, _temp; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _reactDom = require('react-dom'); var _reactDom2 = _interopRequireDefault(_reactDom); 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 circleIconPic = require('../../styles/image/map_icon_circle.png'); var onIconPic = require('../../styles/image/icon_start_on.png'); // 组件基于 qq地图 需先引用 //map.qq.com/api/js?v=2.exp var CircleMap = (_temp = _class = function (_Component) { _inherits(CircleMap, _Component); function CircleMap(props) { _classCallCheck(this, CircleMap); var _this = _possibleConstructorReturn(this, (CircleMap.__proto__ || Object.getPrototypeOf(CircleMap)).call(this, props)); _this.appendMap = _this.appendMap.bind(_this); return _this; } _createClass(CircleMap, [{ key: 'loadScript', value: function loadScript(jssrc) { //创建script标签 var script = document.createElement("script"); //设置标签的type属性 script.type = "text/javascript"; //设置标签的链接地址 script.src = jssrc; //添加标签到dom document.body.appendChild(script); } }, { key: 'componentDidMount', value: function componentDidMount() { window.appendMap = this.appendMap; this.loadScript("//map.qq.com/api/js?v=2.exp&callback=appendMap"); } }, { key: 'isArray', value: function isArray(object) { return object && (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && Array == object.constructor; } }, { key: 'appendMap', value: function appendMap() { var mapRefs = this.refs.mapcontainer, _props = this.props, clickable = _props.clickable, cursor = _props.cursor, fillColor = _props.fillColor, radius = _props.radius, strokeDashStyle = _props.strokeDashStyle, strokeColor = _props.strokeColor, strokeWeight = _props.strokeWeight, visible = _props.visible, zIndex = _props.zIndex, markerlat = _props.markerlat, markerlong = _props.markerlong, startlat = _props.startlat, startlong = _props.startlong, zoom = _props.zoom; var fillColorKey = this.isArray(fillColor) ? new qq.maps.Color(fillColor[0], fillColor[1], fillColor[2], fillColor[3]) : fillColor, strokeColorKey = this.isArray(strokeColor) ? new qq.maps.Color(strokeColor[0], strokeColor[1], strokeColor[2], strokeColor[3]) : strokeColor; var center = new qq.maps.LatLng(markerlat, markerlong), map = new qq.maps.Map(mapRefs, { center: center, zoom: zoom, //设置控件的地图类型和位置 mapTypeControlOptions: { //设置控件的地图类型ID,ROADMAP显示普通街道地图,SATELLITE显示卫星图像,HYBRID显示卫星图像上的主要街道透明层 mapTypeIds: [qq.maps.MapTypeId.ROADMAP] } }), circle = new qq.maps.Circle({ //圆形的中心点坐标。 center: center, //圆形是否可点击。 clickable: clickable, //鼠标在圆形内的光标样式。 cursor: cursor, //圆形的填充色,可通过Color对象的alpha属性设置透明度。 //fillColor: "#00f", fillColor: fillColorKey, //要显示圆形的地图。 map: map, //圆形的半径。 radius: radius, //圆形的边框颜色,可通过Color对象的alpha属性设置透明度。 strokeColor: strokeColorKey, //圆形的边框样式。实线是solid,虚线是dash。 strokeDashStyle: strokeDashStyle, //圆形的边框线宽。 strokeWeight: strokeWeight, //圆形是否可见。 visible: visible, //圆形的zIndex值。 zIndex: zIndex }); // 显示开始位置 var centerMarker = new qq.maps.Marker({ //设置Marker的位置坐标 position: new qq.maps.LatLng(markerlat, markerlong), //设置显示Marker的地图 map: map }); var anchor = new qq.maps.Point(11, 34), size = new qq.maps.Size(22, 36), origin = new qq.maps.Point(0, 0), icon = new qq.maps.MarkerImage(circleIconPic, size, origin, anchor); centerMarker.setIcon(icon); // 显示开始位置 var onMarker = new qq.maps.Marker({ //设置Marker的位置坐标 position: new qq.maps.LatLng(startlat, startlong), //设置显示Marker的地图 map: map }); var onanchor = new qq.maps.Point(6, 6), onsize = new qq.maps.Size(12, 12), onorigin = new qq.maps.Point(0, 0), onicon = new qq.maps.MarkerImage(onIconPic, onsize, onorigin, onanchor); onMarker.setIcon(onicon); } }, { key: 'render', value: function render() { return _react2.default.createElement( 'div', { className: 'map-layout' }, _react2.default.createElement('div', { className: 'map-container', ref: 'mapcontainer' }) ); } }]); return CircleMap; }(_react.Component), _class.propTypes = { clickable: _react2.default.PropTypes.bool, //圆形是否可点击。 cursor: _react2.default.PropTypes.string, //鼠标在圆形内的光标样式。 radius: _react2.default.PropTypes.number, //圆形的半径。 fillColor: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.array]), //圆形的边框颜色,可通过Color对象的alpha属性设置透明度。 strokeDashStyle: _react2.default.PropTypes.string, //圆形的边框样式。实线是solid,虚线是dash。 strokeColor: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.array]), //圆形的边框颜色,可通过Color对象的alpha属性设置透明度。 strokeWeight: _react2.default.PropTypes.number, //圆形的边框线宽。 visible: _react2.default.PropTypes.bool, //圆形是否可见。 zIndex: _react2.default.PropTypes.number, //圆形的zIndex值。 markerlat: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.number]), markerlong: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.number]), startlat: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.number]), startlong: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.number]), zoom: _react2.default.PropTypes.number }, _class.defaultProps = { clickable: true, //圆形是否可点击。 cursor: 'pointer', //鼠标在圆形内的光标样式。 fillColor: [0, 15, 255, 0.2], //圆形的填充色,可通过Color对象的alpha属性设置透明度。 radius: 500, //圆形的半径。 strokeDashStyle: "solid", //圆形的边框样式。实线是solid,虚线是dash。 strokeColor: [0, 15, 255, 0.3], //圆形的边框颜色,可通过Color对象的alpha属性设置透明度。 strokeWeight: 1, //圆形的边框线宽。 visible: true, //圆形是否可见。 zIndex: 1000, //圆形的zIndex值。 markerlat: "39.982163", markerlong: "116.806070", startlat: "39.985163", startlong: "116.804070", zoom: 14 }, _temp); module.exports = CircleMap;