Appearance
多边形
地图多边形组件,表示地图上的多个多边形,可以自定义每个多边形的样式。
基础示例
vue
<template>
<tlbs-map
ref="mapRef"
api-key="OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77"
:center="center"
:zoom="zoom"
:control="control"
@click="onClick"
@map_inited="onMapInited"
>
<tlbs-multi-polygon
ref="polygonRef"
:geometries="geometries"
:styles="styles"
:options="options"
/>
<div class="control-container">
<button @click.stop="getLayerInstance">
打印多边形实例
</button>
</div>
</tlbs-map>
</template>
<script lang="ts">
import { defineComponent, ref } from 'vue-demi';
const paths = [
{ lat: 40.041117253378246, lng: 116.2722415837743 },
{ lat: 40.03942536171407, lng: 116.2726277820093 },
{ lat: 40.03970460886076, lng: 116.27483769345417 },
{ lat: 40.041404706498625, lng: 116.27443003983899 },
];
export default defineComponent({
name: 'PolygonDemo',
setup() {
const mapRef = ref(null);
const polygonRef = ref(null);
const center = ref({ lat: 40.040452, lng: 116.273486 });
const zoom = ref(16);
const onClick = (e: Event) => {
console.log(e);
};
const onMapInited = () => {
// 地图加载完成后,可以获取地图实例、多边形实例,调用地图实例、多边形实例方法
console.log(mapRef.value.map);
console.log(polygonRef.value.polygon);
};
const getLayerInstance = () => {
// 可以获取多边形实例,调用多边形实例方法
console.log(polygonRef.value.polygon);
};
return {
center,
zoom,
onClick,
control: {
scale: {},
zoom: {
position: 'topRight',
},
},
mapRef,
polygonRef,
geometries: [
{
id: 'polygon', // 多边形图形数据的标志信息
styleId: 'polygon', // 样式id
paths, // 多边形的位置信息
properties: {
// 多边形的属性数据
title: 'polygon',
},
},
],
styles: {
polygon: {
color: '#3777FF', // 面填充色
showBorder: false, // 是否显示拔起面的边线
borderColor: '#00FFFF', // 边线颜色
},
},
options: {
zIndex: 1,
},
onMapInited,
getLayerInstance,
};
},
});
</script>props
| 名称 | 类型 | 说明 |
|---|---|---|
| id | String | 图层 id |
| styles | { [key: string]: TMap.MultiPolygonStyleHash } | 多边形的相关样式 |
| geometries | TMap.PolygonGeometry[] | 多边形数据数组 |
| options | TMap.MultiPolygonOptions | 除了上述属性的其他配置参数,参考TMap.MultiPolygonOptions |
TMap.MultiPolygonOptions
| 属性名称 | 类型 | 说明 |
|---|---|---|
| disableInteractive | Boolean | 图层是否禁止参与交互事件,默认为false |
| isStopPropagation | Boolean | 是否阻止鼠标、触摸事件冒泡,默认为false |
事件
| 名称 | 参数 | 说明 |
|---|---|---|
| click | GeometryOverlayEvent | 点击事件。 |
| dblclick | GeometryOverlayEvent | 双击事件。 |
| mousedown | GeometryOverlayEvent | 鼠标在地图区域中左键按下时触发,只在桌面浏览器中触发。 |
| mouseup | GeometryOverlayEvent | 鼠标在地图区域中左键按下又弹起时触发,只在桌面浏览器中触发。 |
| mousemove | GeometryOverlayEvent | 鼠标在地图上移动时触发,只在桌面浏览器中触发。 |
| hover | GeometryOverlayEvent | 鼠标在图层上悬停对象改变时触发,事件对象中的geometry属性会指向交互位置所在图形的PolygonGeometry,无图形时事件对象为null,只在桌面浏览器中触发。 |
| touchstart | GeometryOverlayEvent | 在地图区域触摸开始时触发,只在移动浏览器中触发。 |
| touchmove | GeometryOverlayEvent | 在地图区域触摸移动时触发,只在移动浏览器中触发。 |
| touchend | GeometryOverlayEvent | 在地图区域触摸结束时触发,只在移动浏览器中触发。 |
组件实例属性
| 名称 | 类型 | 说明 |
|---|---|---|
| polygon | TMap.MultiPolygon | 多边形实例。实例方法TMap.MultiPolygon方法 |
TMap.MultiPolygon方法
| 方法 | 返回值 | 说明 |
|---|---|---|
| setMap(map:Map) | this | 设置地图对象,如果map为null意味着将多边形同时从地图中移除。 |
| setZIndex(zIndex: Number) | this | 设置图层绘制顺序。 |
| setGeometries(geometries: PolygonGeometry[]) | this | 更新多边形数据,如果参数为null或undefined不会做任何处理。 |
| setStyles(styles:MultiPolygonStyleHash) | this | 设置MultiPolygon图层相关样式信息,如果参数为null或undefined不会做任何处理。 |
| setVisible(visible: Boolean) | this | 设置图层是否可见。 |
| getMap() | Map | 获取地图对象,若为空返回null。 |
| getGeometries() | PolygonGeometry[] | 获取多边形数据。 |
| getStyles() | MultiPolygonStyleHash | 获取图层相关样式信息。 |
| getVisible() | visible | 获取可见状态。 |
| getZIndex() | Number | 获取图层绘制顺序。 |
| getGeometryById(id:String) | PolygonGeometry | 根据多边形数据id来获取点数据。 |
| updateGeometries(geometry:PolygonGeometry[]) | this | 更新多边形数据,如果geometry的id存在于集合中,会更新对id的数据,如果之前不存在于集合中,会作为新的多边形添加到集合中;如果参数为null或undefined不会做任何处理。 |
| add(geometries: PolygonGeometry[]) | this | 向图层中添加多边形,如果geometry的id已经存在集合中,则该geometry不会被重复添加,如果geometry没有id或者id不存在于集合中会被添加到集合,没有id的geometry会被赋予一个唯一id;如果要添加到集合中的多边形存在重复id,这些多边形会被重新分配id;如果参数为null或undefined不会做任何处理。 |
| remove(ids: String[]) | this | 移除指定id的多边形,如果参数为null或undefined不会做任何处理。 |
| on(eventName:String, listener:Function) | this | 添加listener到eventName事件的监听器数组中。 |
| off(eventName:String, listener:Function) | this | 从eventName事件的监听器数组中移除指定的listener。 |
| destroy() | 销毁图层对象 |