使用折线自定义Google地图标记

时间:2014-11-30 12:10:54

标签: android google-maps-markers google-maps-android-api-2 google-polyline

我想在我的Google地图上使用折线连接两个标记。这是我的代码:

mMap.addMarker(new MarkerOptions()
            .position(new LatLng(0, 0))
            .title("Pos")
            .icon(BitmapDescriptorFactory.fromResource(R.drawable.point)));

mMap.addPolyline(new PolylineOptions()
            .add(new LatLng(0,0), new LatLng(20,20))
            .width(5)
            .color(Color.rgb(255, 161, 74)));

折线工作但我的自定义标记在线和标记之间有一个边距。

enter image description here

我想删除此保证金。 我怎么能这样做?

谢谢:)

1 个答案:

答案 0 :(得分:3)

问题是默认情况下,标记的锚点位于图像底部的中心。如果仔细查看自定义标记的位置,您会发现它们不是在您设置的纬度/长度上居中,而是位于您设置的位置上方。

如果你将锚点设置为0.5,0.5,你应该得到所需的效果。

以下是文档中的信息,也可以找到here

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]范围内)