高德地图 JS API的覆盖物—点标记

高德地图 JS API的覆盖物—点标记

点标记是用来标示某个位置点信息的一种地图要素,本章介绍如何在地图图面使用点标记,分别包括:

  1.  点标记 Marker
  2.  灵活点标记 ElasticMarker
  3.  圆形标记 CircleMarker
  4.  文本标记 Text

点标记 Marker

一.  创建一个默认图标的点标记: 

JavaScript
// 创建一个 Marker 实例:
var marker = new AMap.Marker({
    position: new AMap.LngLat(116.39, 39.9),   // 经纬度对象,也可以是经纬度构成的一维数组[116.39, 39.9]
    title: '北京'
});

// 将创建的点标记添加到已有的地图实例:
map.add(marker);

// 移除已创建的 marker
map.remove(marker);

全部属性 Marker类

点标记。

构造函数说明
AMap.Marker(opt:MarkerOptions)构造一个点标记对象,通过MarkerOptions设置点标记对象的属性
MarkerOptions类型说明
mapMap要显示该marker的地图对象
positionLngLat点标记在地图上显示的位置,默认为地图中心点
anchorString设置点标记锚点。
默认值:’top-left’
可选值:’top-left’|’top-center’|’top-right’|’middle-left’|’center’|’middle-right’|’bottom-left’|’bottom-center’|’bottom-right’(自v1.4.13 新增)
offsetPixel点标记显示位置偏移量,默认值为Pixel(-10,-34)。Marker指定position后,默认以marker左上角位置为基准点(若设置了anchor,则以anchor设置位置为基准点),对准所给定的position位置,若需使marker指定位置对准在position处,需根据marker的尺寸设置一定的偏移量。
iconString/Icon需在点标记中显示的图标。可以是一个本地图标地址,或者Icon对象。有合法的content内容时,此属性无效
contentString/Object点标记显示内容,可以是HTML要素字符串或者HTML DOM对象。content有效时,icon属性将被覆盖
topWhenClickBoolean鼠标点击时marker是否置顶,默认false ,不置顶(自v1.3 新增)
bubbleBoolean是否将覆盖物的鼠标或touch等事件冒泡到地图上(自v1.3 新增)
默认值:false
draggableBoolean设置点标记是否可拖拽移动,默认为false
raiseOnDragBoolean设置拖拽点标记时是否开启点标记离开地图的效果
cursorString指定鼠标悬停时的鼠标样式,自定义cursor,IE仅支持cur/ani/ico格式,Opera不支持自定义cursor
visibleBoolean点标记是否可见,默认为true
zIndexNumber点标记的叠加顺序。地图上存在多个点标记叠加时,通过该属性使级别较高的点标记在上层显示
默认zIndex:100
angleNumber点标记的旋转角度,广泛用于改变车辆行驶方向
注:angle属性是使用CSS3来实现的,支持IE9及以上版本
autoRotationBoolean是否自动旋转。点标记在使用moveAlong动画时,路径方向若有变化,点标记是否自动调整角度,默认为false。广泛用于自动调节车辆行驶方向。
IE8以下不支持旋转,autoRotation属性无效
animationString点标记的动画效果,默认值:
“AMAP_ANIMATION_NONE”
可选值:
“AMAP_ANIMATION_NONE”,无动画效果
“AMAP_ANIMATION_DROP”,点标掉落效果
“AMAP_ANIMATION_BOUNCE”,点标弹跳效果
shadowIcon点标记阴影,不设置该属性则点标记无阴影
titleString鼠标滑过点标记时的文字提示,不设置则鼠标滑过点标无文字提示
clickableBoolean点标记是否可点击
shapeMarkerShape设置Marker的可点击区域,在定义的区域内可触发Marker的鼠标点击事件
extDataAny用户自定义属性,支持JavaScript API任意数据类型,如Marker的id等
label{content,offset,direction}添加文本标注。content 为文本标注的内容。direction 为文本标注方位(自 v1.4.14 新增属性),可选值:’top’|’right’|’bottom’|’left’|’center’,默认值:’top’ 。offset 为偏移量(默认基准点为图标左上角),如设置了 direction,以 direction 方位为基准点进行偏移。相关示例
方法返回值说明
markOnAMAP(obj:Object)唤起高德地图客户端标注页
其中Object里面包含有{ name:String,name属性 必要参数
position: LngLat 坐标点
}
getAnchor( )String获取Marker锚点(自v1.4.13 新增)
setAnchor(anchor:String)设置Marker锚点
可选值:’top-left’|’top-center’|’top-right’|’middle-left’|’center’|’middle-right’|’bottom-left’|’bottom-center’|’bottom-right’(自v1.4.13 新增)
getOffset( )Pixel获取Marker偏移量(自v1.3 新增)
setOffset(offset:Pixel)设置Marker偏移量(自v1.3 新增)
setAnimation(animate:String )设置点标记的动画效果,默认值:
“AMAP_ANIMATION_NONE”
可选值:
“AMAP_ANIMATION_NONE”,无动画效果
“AMAP_ANIMATION_DROP”,点标掉落效果
“AMAP_ANIMATION_BOUNCE”,点标弹跳效果
getAnimation( )String获取点标记的动画效果类型
setClickable(clickable:Boolean )设置点标记是支持鼠标单击事件
getClickable( )Boolean获取点标记是否支持鼠标单击事件
getPosition( )LngLat获取点标记的位置
setPosition(lnglat:LngLat)设置点标记位置
setAngle(angle:Number)设置点标记的旋转角度
setLabel(label:Object)设置点标记文本标签内容相关示例
getLabel()Object获取点标记文本标签内容
getAngle()Number获取点标记的旋转角度
setzIndex(index:Number)设置点标记的叠加顺序,默认最先添加的点标记在最底层
getzIndex()Number获取点标记的叠加顺序
setIcon(content:String/Icon)设置点标记的显示图标。
参数image可传入String、Icon两种类型的值。
若为String(图片url),表示点标记以指定图片形式显示;若为Icon,表示点标记以Icon对象形式显示
getIcon( )String /Icon当点标记未自定义图标时,获取Icon内容
setDraggable(draggable:Boolean)设置点标记对象是否可拖拽移动
getDraggable( )Boolean获取点标记对象是否可拖拽移动
hide( )点标记隐藏
show( )点标记显示
setCursor(Cursor)String设置鼠标悬停时的光标。 参数cur可为CSS标注中的光标样式,如:
setCursor(“pointer”)等;或者自定义的光标样式,如:
setCursor(“url(‘https://webapi.amap.com/images/0.png’) ,pointer”)
注:当浏览器不支持css2,url值不起作用,鼠标样式就按pointer来设置
setContent(html:String|htmlDOM)设置点标记显示内容,可以是HTML要素字符串或者HTML DOM对象
getContent( )String获取点标记内容
moveAlong(path:Array,
speed:Number,
f:Function,circlable:Boolean)
以指定的速度,点标记沿指定的路径移动。参数path为轨迹路径的经纬度对象的数组;speed为指定速度,单位:千米/小时,不可为0;
回调函数f为变化曲线函数,缺省为function(k){return k};参数circlable表明是否循环执行动画,默认为false
moveTo(lnglat:LngLat,speed:Number,
f:Function)
以给定速度移动点标记到指定位置。参数lnglat为指定位置,必设;speed为指定速度,单位:千米/小时,不可为0;回调函数f为变化曲线函数,缺省为function(k){return k}。
stopMove( )点标记停止动画
pauseMove()暂定点标记的动画效果
resumeMove()重新开始点标记的动画效果
setMap(map:Map)为Marker指定目标显示地图。当参数值取null时,地图上移除当前Marker:setMap(null)
getMap()Map获取Marker所在地图对象
setTitle(title:String)鼠标滑过点标时的文字提示
getTitle( )String获取点标记的文字提示
setTop(isTop:Boolean)地图上有多个marker时,当isTop为true时,marker将显示在最前面;当为false时,marker取消置顶
getTop( )Boolean
setShadow(icon:Icon)为marker设置阴影效果
getShadow( )Icon获取marker的阴影图标
setShape(shape:MarkerShape)设置marker的可点击区域
getShape( )MarkerShape获取marker的可点击区域
setExtData(ext:Any)设置用户自定义属性,支持JavaScript API任意数据类型,如Marker的id等
getExtData( )Any获取用户自定义属性
事件参数说明
clickMapsEvent鼠标左键单击事件
dblclickMapsEvent鼠标左键双击事件
rightclickMapsEvent鼠标右键单击事件
mousemoveMapsEvent鼠标移动
mouseoverMapsEvent鼠标移近点标记时触发事件
mouseoutMapsEvent鼠标移出点标记时触发事件
mousedownMapsEvent鼠标在点标记上按下时触发事件
mouseupMapsEvent鼠标在点标记上按下后抬起时触发事件
dragstartMapsEvent开始拖拽点标记时触发事件
draggingMapsEvent鼠标拖拽移动点标记时触发事件
dragendMapsEvent点标记拖拽移动结束触发事件
movingObject点标记在执行moveTo,moveAlong动画时触发事件,Object对象的格式是{passedPath:Array.<LngLat>}。其中passedPath为Marker对象在moveAlong或者moveTo过程中已经走过的路径。
moveend点标记执行moveTo动画结束时触发事件,也可以由moveAlong方法触发
movealong点标记执行moveAlong动画一次后触发事件
touchstartMapsEvent触摸开始时触发事件,仅适用移动设备
touchmoveMapsEvent触摸移动进行中时触发事件,仅适用移动设备
touchendMapsEvent触摸结束时触发事件,仅适用移动设备

也可以一次添加多个点标记到地图实例(其它覆盖物均可使用此方式):

JavaScript
// 多个点实例组成的数组
var markerList = [marker1, marker2, marker3];

map.add(markerList);

二. 自定义图标标记

如需要自定义点标记内容,可以在创建 Marker 实例的时候,设置 icon 参数来实现。具体可通过以下两种方式:

1. 为创建的 Marker 指定自定义图标 URL :

JavaScript
var marker = new AMap.Marker({
    position: new AMap.LngLat(116.39,39.9),
    offset: new AMap.Pixel(-10, -10),
    icon: '//vdata.amap.com/icons/b18/1/2.png', // 添加 Icon 图标 URL
    title: '北京'
});

map.add(marker);

2. 为创建的 Marker 指定 Icon 实例。此种方式可以设置图标大小,偏移等属性,比单纯设置 URL 更加灵活。创建方式如下

JavaScript
// 创建 AMap.Icon 实例:
var icon = new AMap.Icon({
    size: new AMap.Size(40, 50),    // 图标尺寸
    image: '//webapi.amap.com/theme/v1.3/images/newpc/way_btn2.png',  // Icon的图像
    imageOffset: new AMap.Pixel(0, -60),  // 图像相对展示区域的偏移量,适于雪碧图等
    imageSize: new AMap.Size(40, 50)   // 根据所设置的大小拉伸或压缩图片
});

// 将 Icon 实例添加到 marker 上:
var marker = new AMap.Marker({
    position: new AMap.LngLat(116.405467, 39.907761),
    offset: new AMap.Pixel(-10, -10),
    icon: icon, // 添加 Icon 实例
    title: '北京',
    zoom: 13
});

map.add(marker);

或者向已创建好的 Marker 添加 Icon:

JavaScript
marker.setIcon(icon);

三. 自定义内容标记

对于更加复杂的 marker 展示,我们可以使用 Marker类 的 content 属性。content 属性取值为用户自定义的 DOM 节点或者 DOM 节点的 HTML 片段。content 属性比 icon 属性更加灵活,设置了 content 以后会覆盖 icon 属性。具体实例如下:

JavaScript
var content = '<div class="marker-route marker-marker-bus-from"></div>';

var marker = new AMap.Marker({
    content: content,  // 自定义点标记覆盖物内容
    position:  [116.397428, 39.90923], // 基点位置
    offset: new AMap.Pixel(-17, -42) // 相对于基点的偏移位置
});

map.add(marker);

四. 自定义点标记的锚点位置

如果用户自定义点标记内容,无论是自定义 Icon 还是 自定义内容,都需要为定义的图片重新设置锚点位置。设置方法如下:

1.设置 anchor (自 v1.4.13 新增属性)

通过 anchor 可以方便的设置锚点方位。anchor 可选值有  ‘top-left’、’top-center’、’top-right’、’middle-left’、’center’、’middle-right’、’bottom-left’、’bottom-center’、’bottom-right’ , 分别代表了点标记锚点的不同方位。

JavaScript
var marker = new AMap.Marker({
    icon: '//a.amap.com/jsapi_demos/static/demo-center/marker/marker-bottom-left.png', // 自定义点标记
    position: [116.418481,39.90833], // 基点位置
    offset: new AMap.Pixel(0,0), // 设置点标记偏移量
    anchor:'bottom-left', // 设置锚点方位
});
map.add(marker);

2.设置 offset

通过设置 offset 来添加偏移量。当偏移量为 (0, 0) 时,自定义内容默认以左上角为基准点(若设置了 anchor,基准点位置则为 anchor 设置的位置)与经纬度坐标对齐;设置 offset 为其他值则对齐位置相应改变。具体偏移规则如下:

灵活点标记 ElasticMarker

灵活点标记是可随地图级别变化而改变图标和大小的点标记。可满足用户在地图缩放到不同级别有不同展示效果的需求。

圆形标记 CircleMarker

构造一个圆形覆盖物,v1.4.3版本新增类。可直接满足创建圆形标注的需要。

AMap.CircleMarker 类与下一章介绍到的 AMap.Circle 类均为在地图上绘制圆形覆盖物的方法。这两类的根本不同在于 AMap.Circle 为矢量图形类,随地图的缩放会改变大小;而 AMap.CircleMarker 类则不会随图面缩放而改变。

文本标记 Text

纯文本标记,v1.4.2版本新增类。文本标记的展示内容为纯文本。继承自 Marker 类,具有 Marker 的大部分属性、方法和事件。

点标记事件

点标记支持 click, mouseover 等多种事件。点标记事件的添加和移除和支持的所有事件类型,可参见 「地图和覆盖物事件」。

0 0 投票数
文章评分
订阅评论
提醒
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x