标记

public final 类 Marker扩展 Object

位于地图表面上特定点的图标。标记图标绘制时朝向设备屏幕(而非地图表面)的方向;也就是说,标记图标不一定会因地图旋转、倾斜或缩放而改变方向。

标记具有以下属性:

Alpha 版
设置标记的不透明度。默认值为 1.0。
锚点
图片上将置于标记的 LatLng 位置的点。默认距离图片左侧和底部的距离为 50%。
位置
地图上标记位置的 LatLng 值。如果您想移动标记,可以随时更改此值。
标题
当用户点按标记时显示在信息窗口内的文本字符串。您可以随时更改此值。
代码段
显示在标题下方的附加文字。您可以随时更改此值。
图标
为标记显示的位图。如果未设置该图标,则系统会显示默认图标。您可以使用 defaultMarker(float) 指定默认图标的替代颜色。
拖动状态
如果您想允许用户拖动标记,请将此属性设为 true。您可以随时更改此值。默认值为 false
可见性
默认情况下,标记可见。如需隐藏标记,请将此属性设为 false。您可以随时更改此值。
Flat 或 Billboard
如果标记在地图上是平面的,那么当镜头旋转和倾斜时,标记会始终固定在地图上,但与 GroundOverlay 不同,该标记的大小仍会随着镜头缩放而改变大小。如果标记是广告牌,它将始终朝向镜头绘制,并随镜头旋转和倾斜。默认名称为广告牌 (false)
旋转
标记围绕标记的锚点顺时针旋转的角度(以度为单位)。旋转轴与标记垂直。旋转角度 0 对应于标记的默认位置。当地图上的标记为 Flat 标记时,默认位置为北对齐,而且旋转后该标记在地图上始终保持为扁平状态。当标记是广告牌时,默认位置是朝上,而且旋转时标记始终朝向镜头。默认值为 0。
zIndex
标记的绘制顺序。这些标记按 zIndex 的顺序绘制,最高的 zIndex 标记绘制在顶部。通过为每个标记设置 zIndex 属性,您可以控制用户最有可能点击哪个点按目标。默认值为 0。
标记
与标记关联的 Object。例如,Object 可以包含与标记所代表内容相关的数据。这比存储单独的 Map<Marker, Object> 更简单。再举一例,您可以关联与数据集中的 ID 对应的 String ID。Google Maps SDK for Android 既不会读取也不会写入此属性。

此类中的方法必须在 Android 界面线程上调用。否则,系统会在运行时抛出 IllegalStateException

示例

GoogleMap map = ... // get a map.
 // Add a marker at San Francisco.
 Marker marker = map.addMarker(new MarkerOptions()
     .position(new LatLng(37.7750, 122.4183))
     .title("San Francisco")
     .snippet("Population: 776733"));
 

开发者指南

如需了解详情,请参阅标记开发者指南。

嵌套类摘要

@interface Marker.CollisionBehavior 指明当该标记与其他标记或基本地图标签发生冲突时的处理方式。

公共方法摘要

布尔值
equals(其他对象)
用于测试此 Marker 是否等于另一个。
浮点数
getAlpha()
获取标记的 Alpha 值。
字符串
getId()
获取此标记的 ID。
LatLng
getPosition()
返回标记的位置。
浮点数
getRotation()
获取标记的旋转角度。
字符串
getSnippet()
获取标记的代码段。
对象
getTag()
获取标记的标记。
字符串
getTitle()
获取标记的标题。
浮点数
getZIndex()
返回标记的 zIndex。
整型
void
hideInfoWindow()
如果信息窗口显示在该标记中,则将其隐藏。
布尔值
isDraggable()
获取标记的可拖动性。
布尔值
isFlat()
获取标记的平面设置。
布尔值
isInfoWindowShown()
用于返回信息窗口当前是否显示在此标记上方。
布尔值
isVisible()
获取此标记的可见性设置。
void
remove()
从地图中删除此标记。
void
setAlpha(float alpha)
设置标记的 Alpha 值(不透明度)。
void
setAnchor(float anchorU, float anchorV)
用于设置标记的定位点。
void
setDraggable(布尔值可拖动)
设置标记的可拖动性。
void
setFlat(布尔值平面)
设置此标记是贴于地图 true 的平面,还是朝向相机 false 的广告牌。
void
setIcon(BitmapDescriptor iconDescriptor)
设置标记的图标。
void
setInfoWindowAnchor(float anchorU, float anchorV)
用于指定标记图像中显示信息窗口的锚定点。
void
setPosition(LatLng latlng)
设置标记的位置。
void
setRotation(浮点旋转)
用于设置标记围绕标记的锚点顺时针旋转的角度(以度为单位)。
void
setSnippet(String snippet)
设置标记的代码段。
void
setTag(对象标记)
设置标记的标记。
void
setTitle(String title)
设置标记的标题。
void
setVisible(布尔值 visible)
设置此标记的可见性。
void
setZIndex(float zIndex)
设置标记的 zIndex。
void
showInfoWindow()
在地图上显示此标记的信息窗口(如果该标记为 isVisible())。

继承的方法摘要

公共方法

public boolean 等于 (其他对象)

用于测试此 Marker 是否等于另一个。

参数
其他 一个 Object
返回
  • 如果两个对象是同一个对象,则为“true”(即此值 ==“其他”)。

public float getAlpha ()

获取标记的 Alpha 值。

返回
  • 标记的 Alpha 值,范围为 [0, 1]。

public String getId ()

获取此标记的 ID。此 ID 在地图上的所有标记中都是唯一的。

返回
  • 此标记的 ID。

public LatLng getPosition ()

返回标记的位置。

返回
  • LatLng 对象,用于指定标记的当前位置。

public float getRotation ()

获取标记的旋转角度。

返回
  • 标记与默认位置所呈顺时针旋转角度(以度为单位)。

public String getSnippet ()

获取标记的代码段。

返回
  • 包含标记摘要的字符串。

public Object getTag ()

获取标记的标记。

返回
  • 如果使用 setTag 设置标记,则为标记;如果未设置标记,则为 null

public String getTitle ()

获取标记的标题。

返回
  • 包含标记标题的字符串。

公共 浮点数 getZIndex ()

返回标记的 zIndex。

返回
  • 此标记的 ZIndex。

public int hashCode ()

public void hideInfoWindow ()

如果信息窗口显示在该标记中,则将其隐藏。

如果该标记不可见,则此方法不会产生任何影响。

public boolean isDraggable ()

获取标记的可拖动性。当标记可拖动时,用户可通过长按标记来移动它。

返回
  • 如果标记可拖动,则返回 true;否则返回 false

public boolean isFlat ()

获取标记的平面设置。

返回
  • 如果标记相对于地图是平面的,则为 true;如果标记应朝向镜头,则为 false

public boolean isInfoWindowShown ()

用于返回信息窗口当前是否显示在此标记上方。此值不会考虑信息窗口是否在屏幕上实际可见。

public boolean isVisible ()

获取此标记的可见性设置。请注意,这并不表示标记是否位于屏幕的视口内。用于指示如果标记包含在屏幕的视口中,是否绘制该标记。

返回
  • 是否可见。

public void remove ()

从地图中删除此标记。移除标记后,其所有方法的行为将处于未定义状态。

public void setAlpha (浮动 Alpha 值)

设置标记的 Alpha 值(不透明度)。这是一个介于 0 到 1 之间的值,其中 0 表示标记完全透明,1 表示该标记完全不透明。

参数
Alpha 版

public void setAnchor (float anchorU, float anchorV)

设置标记的定位点。

锚点用于指定图标图片中某个点,该点锚定在地球表面上标记的位置。

锚点在连续空间 [0.0, 1.0] x [0.0, 1.0] 中指定,其中 (0, 0) 表示图片的左上角,(1, 1) 表示右下角。W x H 图像中的定位点是(W + 1) x(H + 1) 网格中最近的离散网格点,通过缩放然后舍入获得。例如,在 4 x 2 的图片中,定位点 (0.7, 0.6) 会解析为位于 (3, 1) 处的网格点。

 *-----+-----+-----+-----*
 |     |     |     |     |
 |     |     |     |     |
 +-----+-----+-----+-----+
 |     |     |   X |     |   (U, V) = (0.7, 0.6)
 |     |     |     |     |
 *-----+-----+-----+-----*
 *-----+-----+-----+-----*
 |     |     |     |     |
 |     |     |     |     |
 +-----+-----+-----X-----+   (X, Y) = (3, 1)
 |     |     |     |     |
 |     |     |     |     |
 *-----+-----+-----+-----*
 

参数
anchorU 锚点的 u 坐标,以图片宽度的比率(在 [0, 1] 范围内)表示。
anchorV 锚点的 v 坐标,以图片高度的比率(介于 [0, 1] 范围内)表示。

public void setDraggable (boolean draggable)

设置标记的可拖动性。当标记可拖动时,用户可通过长按标记来移动它。

参数
可拖动

public void setFlat (布尔值平面)

设置此标记在贴近地图 true 时是平面的,还是朝向相机 false 的广告牌布局。

参数
flat

public void setIcon (BitmapDescriptor iconDescriptor)

设置标记的图标。

参数
iconDescriptor 如果为 null,则使用默认标记。

public void setInfoWindowAnchor (float anchorU, float anchorV)

用于指定标记图像中显示信息窗口的锚定点。此属性使用与锚点相同的坐标系指定。如需了解详情,请参阅 setAnchor(float, float)。默认值为图片的顶部中间位置。

参数
anchorU 信息窗口锚点的 u 坐标,以图片宽度的比率(在 [0, 1] 范围内)表示。
anchorV 信息窗口锚点的 v 坐标,以图片高度的比率(在 [0, 1] 范围内)表示。

public void setPosition (LatLng latlng)

设置标记的位置。

参数
经纬度

public void setRotation (浮点数旋转)

用于设置标记围绕标记的锚点顺时针旋转的角度(以度为单位)。旋转轴与标记垂直。旋转角度为 0 对应于标记的默认位置。

参数
旋转

public void setSnippet (String snippet)

设置标记的代码段。

参数
snippet 如果为 null,系统会清除代码段。

public void setTag (对象标记)

设置标记的标记。

您可以使用此属性将任意 Object 与此标记相关联。例如,Object 可以包含与标记所代表内容相关的数据。这比存储单独的 Map<Marker, Object> 更简单。再举一例,您可以关联与数据集中的 ID 对应的 String ID。Google Maps SDK for Android 既不会读取也不会写入此属性。您有责任在不再需要该标记时调用 setTag(null) 将其清除,以防止应用中出现内存泄漏。

参数
标记 如果为 null,则会清除标记。

public void setTitle (String title)

设置标记的标题。

参数
标题 如果为 null,则清除标题。

public void setVisible (boolean visible)

设置此标记的可见性。如果设为 false,并且此标记当前显示了信息窗口,则会隐藏信息窗口。

参数
visible

public void setZIndex (float zIndex)

设置标记的 zIndex。

参数
zIndex

public void showInfoWindow ()

在地图上显示此标记的信息窗口(如果该标记为 isVisible())。

抛出
IllegalArgumentException 如果 marker 不在此地图上