| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- <script>
- import commonMixin from '../base/mixins/common.js'
- import bindEvents from '../base/bindEvent.js'
- import { createPoint } from '../base/factory.js'
- import { deleteEmptyKey } from '../base/util.js'
- export default {
- name: 'bm-polygon',
- render() { },
- mixins: [commonMixin('overlay')],
- props: {
- path: {
- type: Array,
- default() {
- return []
- }
- },
- strokeColor: {
- type: String
- },
- strokeWeight: {
- type: Number
- },
- strokeOpacity: {
- type: Number
- },
- strokeStyle: {
- type: String
- },
- fillColor: {
- type: String
- },
- fillOpacity: {
- type: Number
- },
- massClear: {
- type: Boolean,
- default: true
- },
- clicking: {
- type: Boolean,
- default: true
- },
- editing: {
- type: Boolean,
- default: false
- }
- },
- watch: {
- path: {
- handler(val, oldVal) {
- this.reload()
- },
- deep: true
- },
- strokeColor(val) {
- this.originInstance.setStrokeColor(val)
- },
- strokeOpacity(val) {
- this.originInstance.setStrokeOpacity(val)
- },
- strokeWeight(val) {
- this.originInstance.setStrokeWeight(val)
- },
- strokeStyle(val) {
- this.originInstance.setStrokeStyle(val)
- },
- fillColor(val) {
- this.originInstance.setFillColor(val)
- },
- fillOpacity(val) {
- this.originInstance.setFillOpacity(val)
- },
- editing(val) {
- val ? this.originInstance.enableEditing() : this.originInstance.disableEditing()
- },
- massClear(val) {
- val ? this.originInstance.enableMassClear() : this.originInstance.disableMassClear()
- },
- clicking(val) {
- this.reload()
- }
- },
- methods: {
- load() {
- const { BMap, map, path, strokeColor, strokeWeight, strokeOpacity, strokeStyle, fillColor, fillOpacity, editing, massClear, clicking } = this
- let polygonOption = {
- strokeColor,
- strokeWeight,
- strokeOpacity,
- strokeStyle,
- fillColor,
- fillOpacity,
- // enableEditing: editing,
- enableMassClear: massClear,
- enableClicking: clicking
- };
- deleteEmptyKey(polygonOption);
- const overlay = new BMap.Polygon(path.map(item => createPoint(BMap, { lng: item.lng, lat: item.lat })), polygonOption)
- this.originInstance = overlay
- map.addOverlay(overlay)
- bindEvents.call(this, overlay)
- // 这里有一个诡异的bug,直接给 editing 赋值时会出现未知错误,因为使用下面的方法抹平。
- editing ? overlay.enableEditing() : overlay.disableEditing()
- }
- }
- }
- </script>
|