中心标记图标(Android)

12

我意识到在标记上设置图标时,它会将LatLng中心定位在图标可绘制区域的底部。我像这样设置了标记:

BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.drawable.mi_posicion_marker);
mMarkerMiPosicion = mMap.addMarker(new MarkerOptions().position(new LatLng(location.getLatitude(), location.getLongitude())).title("I am here!").icon(icono));

我该如何将标记位置“居中”在图标可绘制对象的中心?

1个回答

33

您需要使用“Anchor”参数来选择位置:

https://developers.google.com/android/reference/com/google/android/gms/maps/model/MarkerOptions.html#anchor(float, float)

指定锚点在标记图像中的特定位置。

锚点指定图标图像中锚定到地球表面上标记位置的点。

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

在提供的链接中有一个ASCII图像,很好地说明了如何管理它。 对于您的具体问题;

BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(R.drawable.mi_posicion_marker);
mMarkerMiPosicion = mMap.addMarker(
    new MarkerOptions().position(new LatLng(location.getLatitude(), location.getLongitude()))
    .title("I am here!").icon(icono).anchor(0.5f,0.5f));

1
太好了!锚点是关键。非常感谢!!只有一个小修正:anchor(float,float)应该使用双精度浮点数 :) - IIRed-DeathII

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接