You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
2.6 KiB
100 lines
2.6 KiB
<script>
|
|
import commonMixin from '../base/mixins/common.js'
|
|
import bindEvents from '../base/bindEvent.js'
|
|
import {createPoint, createSize} from '../base/factory.js'
|
|
|
|
export default {
|
|
name: 'bm-label',
|
|
render () {},
|
|
mixins: [commonMixin('overlay')],
|
|
props: {
|
|
content: {
|
|
type: String
|
|
},
|
|
title: {
|
|
type: String
|
|
},
|
|
offset: {},
|
|
position: {},
|
|
labelStyle: {},
|
|
zIndex: {
|
|
type: Number,
|
|
default: 0
|
|
},
|
|
massClear: {
|
|
type: Boolean,
|
|
default: true
|
|
}
|
|
},
|
|
watch: {
|
|
content (val) {
|
|
this.originInstance.setContent(val)
|
|
},
|
|
title (val) {
|
|
this.originInstance.setTitle(val)
|
|
},
|
|
'offset.width' (val, oldVal) {
|
|
const {BMap} = this
|
|
if (val.toString() !== oldVal.toString()) {
|
|
this.originInstance.setOffset(createSize(BMap, {width: val, height: this.offset.height}))
|
|
}
|
|
},
|
|
'offset.height' (val, oldVal) {
|
|
const {BMap} = this
|
|
if (val.toString() !== oldVal.toString()) {
|
|
this.originInstance.setOffset(createSize(BMap, {
|
|
width: this.offset.width,
|
|
height: val
|
|
}))
|
|
}
|
|
},
|
|
'position.lng' (val, oldVal) {
|
|
const {BMap} = this
|
|
const lng = val
|
|
if (val.toString() !== oldVal.toString() && lng >= -180 && lng <= 180) {
|
|
this.originInstance.setCenter(createPoint(BMap, {lng, lat: this.center.lat}))
|
|
}
|
|
},
|
|
'position.lat' (val, oldVal) {
|
|
const {BMap} = this
|
|
const lat = val
|
|
if (val.toString() !== oldVal.toString() && lat >= -74 && lat <= 74) {
|
|
this.originInstance.setCenter(createPoint(BMap, {lng: this.center.lng, lat}))
|
|
}
|
|
},
|
|
labelStyle: {
|
|
handler (val) {
|
|
this.originInstance.setStyle(val)
|
|
},
|
|
deep: true
|
|
},
|
|
zIndex (val) {
|
|
this.originInstance.setZIndex(val)
|
|
},
|
|
massClear (val) {
|
|
val ? this.originInstance.enableMassClear() : this.originInstance.disableMassClear()
|
|
}
|
|
},
|
|
methods: {
|
|
load () {
|
|
const {BMap, map, content, title, offset, position, labelStyle, zIndex, massClear, $parent} = this
|
|
const overlay = new BMap.Label(content, {
|
|
offset: createSize(BMap, offset),
|
|
position: createPoint(BMap, position),
|
|
enableMassClear: massClear
|
|
})
|
|
this.originInstance = overlay
|
|
try {
|
|
$parent.originInstance.setLabel(overlay)
|
|
} catch (e) {
|
|
map.addOverlay(overlay)
|
|
}
|
|
title && overlay.setTitle(title)
|
|
labelStyle && overlay.setStyle(labelStyle)
|
|
zIndex && overlay.setZIndex(zIndex)
|
|
bindEvents.call(this, overlay)
|
|
}
|
|
}
|
|
}
|
|
</script>
|