Skip to content

点标记

地图点标记组件,表示地图上的多个标注点,可自定义标注的图标。

基础示例

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-marker
      ref="markerRef"
      :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';

export default defineComponent({
  name: 'MarkerDemo',
  setup() {
    const mapRef = ref(null);
    const markerRef = ref(null);
    const center = ref({ lat: 39.91799, lng: 116.397027 });
    const zoom = ref(10);
    const onClick = (e: Event) => {
      console.log(e);
    };

    const onMapInited = () => {
      // 地图加载完成后,可以获取地图实例、点标记实例,调用地图实例、点标记实例方法
      console.log(mapRef.value.map);
      console.log(markerRef.value.marker);
    };

    const getLayerInstance = () => {
      // 可以获取点标记实例,调用点标记实例方法
      console.log(markerRef.value.marker);
    };

    return {
      center,
      zoom,
      onClick,
      onMapInited,
      getLayerInstance,
      control: {
        scale: {},
        zoom: {
          position: 'topRight',
        },
      },
      mapRef,
      markerRef,
      geometries: [
        { styleId: 'marker',  position: { lat: 39.91799, lng: 116.397027 } },
      ],
      styles: {
        marker: {
          width: 20,
          height: 30,
          anchor: { x: 10, y: 30 },
        },
      },
      options: {
        minZoom: 5,
        maxZoom: 15,
      },
    };
  },
});
</script>

props

名称类型说明
idString图层 id,参考官网文档
styles{ [key: string]: TMap.MarkerStyleOptions }点的相关样式,参考官网文档
geometriesTMap.PointGeometry[]点数据数组,参考官网文档
optionsTMap.MultiMarkerOptions除了上述属性的其他配置参数,参考TMap.MultiMarkerOptions

TMap.MultiMarkerOptions

属性名称类型说明
zIndexNumber图层绘制顺序。
collisionOptionsCollisionOptions图层碰撞配置参数。
minZoomNumber最小缩放层级,当地图缩放层级小于该值时该图层不显示,默认为3
maxZoomNumber最大缩放层级,当地图缩放层级大于该值时该图层不显示,默认为20

CollisionOptions

图层碰撞配置参数。

属性名称类型说明
sameSourceBoolean是否开启同图层内碰撞,如开启,碰撞优先级按rank值进行碰撞,rank值越大,碰撞权重越高,默认为false
crossSourceBoolean是否开启跨图层间碰撞,所有开启跨图层间进行碰撞,优先级按zIndex值进行碰撞,zIndex值越大,碰撞权重越高,默认为false
vectorBaseMapSourceBoolean是否允许碰撞地图元素,开启后图层优先级高于地图元素优先级,默认为false

事件

名称参数说明
clickGeometryOverlayEvent点击事件。
dblclickGeometryOverlayEvent双击事件。
mousedownGeometryOverlayEvent鼠标在地图区域中左键按下时触发,只在桌面浏览器中触发。
mouseupGeometryOverlayEvent鼠标在地图区域中左键按下又弹起时触发,只在桌面浏览器中触发。
mousemoveGeometryOverlayEvent鼠标在地图上移动时触发,只在桌面浏览器中触发。
hoverGeometryOverlayEvent鼠标在图层上悬停对象改变时触发,事件对象中的geometry属性会指向交互位置所在图形的PointGeometry,无图形时事件对象为null,只在桌面浏览器中触发。
touchstartGeometryOverlayEvent在地图区域触摸开始时触发,只在移动浏览器中触发。
touchmoveGeometryOverlayEvent在地图区域触摸移动时触发,只在移动浏览器中触发。
touchendGeometryOverlayEvent在地图区域触摸结束时触发,只在移动浏览器中触发。
movingObject点标记在执行moveAlong动画时触发事件,事件参数为一个key-value形式对象, key代表MultiMarker点数据集合中的PointGeometry的id,value是一个 MarkerMovingEventItem 对象。
move_endednone点标记执行moveAlong动画结束时触发事件。
move_stoppednone点标记执行moveAlong动画被停止时触发事件。
move_pausednone点标记执行moveAlong动画被暂停时触发事件。
move_resumednone点标记执行moveAlong动画由暂停到恢复时触发事件。

组件实例属性

名称类型说明
markerTMap.MultiMarker点标记实例。实例方法参考TMap.MultiMarker方法

TMap.MultiMarker方法

方法返回值说明
setMap(map:Map)this设置地图对象,如果map为null意味着将多个标注点同时从地图中移除。
setGeometries(geometries: PointGeometry[])this更新标注点数据,如果参数为null或undefined不会做任何处理。
setStyles(styles:MultiMarkerStyleHash)this设置MultiMarker图层相关样式信息,如果参数为null或undefined不会做任何处理。
setVisible(visible: Boolean)this设置图层是否可见。
getMap()Map获取地图对象,若为空返回null。
getGeometries()PointGeometry[]获取点数据。
getStyles()MultiMarkerStyleHash获取图层相关样式信息。
getVisible()visible获取可见状态。
getGeometryById(id:String)PointGeometry根据点数据id来获取点数据。
updateGeometries(geometry:PointGeometry[])this更新标注点数据,如果geometry的id存在于多点标注的集合中,会更新对id的数据,如果之前不存在于集合中,会作为新的点标注添加到集合中;如果参数为null或undefined不会做任何处理。
add(geometries: PointGeometry PointGeometry[])this向图层中添加标注点,如果geometry的id已经存在集合中,则该geometry不会被重复添加,如果geometry没有id或者id不存在于集合中会被添加到集合,没有id的geometry会被赋予一个唯一id;如果要添加到集合中的标注存在重复id,这些标注点会被重新分配id;如果参数为null或undefined不会做任何处理。
remove(ids: String[])this移除指定id的标注点,如果参数为null或undefined不会做任何处理。
moveAlong(param: MoveAlongParamSet, options:Object)this指定id的标注点,沿着指定路径移动;每次新调用moveAlong时,尚未完成的动画会被取消,并触发move_stopped事件;options中如果设置autoRotation为true,对于faceTo为’map’的点标记,会根据路径方向自动改变点标记图片的旋转角度。
stopMove()this停止移动,尚未完成的动画会被取消,并触发move_stopped事件;已经完成的动画不会触发move_stopped事件。
pauseMove()this暂停点标记的动画效果,并触发move_paused事件;未在移动状态不会触发move_paused事件。
resumeMove()this重新开始点标记的动画效果,并触发move_resumed事件;未在暂停状态不会触发move_resumed事件。
on(eventName:String, listener:Function)this添加listener到eventName事件的监听器数组中。
off(eventName:String, listener:Function)this从eventName事件的监听器数组中移除指定的listener。