android自定义地图标记边界
您好,我正在使用此标记()的一个调整大小的版本在android上的google地图中显示标记 问题是我不知道如何使标记点与坐标匹配。 箭头点大约位于宽度坐标的1/5和高度的最大值处 这是我的班级android自定义地图标记边界,android,google-maps,Android,Google Maps,您好,我正在使用此标记()的一个调整大小的版本在android上的google地图中显示标记 问题是我不知道如何使标记点与坐标匹配。 箭头点大约位于宽度坐标的1/5和高度的最大值处 这是我的班级 public class GestionaleItemizedOverlay extends com.google.android.maps.ItemizedOverlay { public GestionaleItemizedOverlay(Drawable defaultMarker, C
public class GestionaleItemizedOverlay extends com.google.android.maps.ItemizedOverlay {
public GestionaleItemizedOverlay(Drawable defaultMarker, Context context) {
//super(boundCenterBottom(defaultMarker));
super(boundCenter(defaultMarker));
this.mContext = context;
}
...
还有这个
this.marker_poi = this.getContext().getResources().getDrawable(R.drawable.marker);
this.marker_poi.setBounds(this.marker_poi.getIntrinsicWidth() / 2, this.marker_poi.getIntrinsicHeight(), this.marker_poi.getIntrinsicWidth() / 2, 0);
new GestionaleItemizedOverlay(this.poi, this.context);
在将标记传递给构造器之前,我是否需要在标记上设置背景?为什么super(defaultMarker)会使所有标记都不显示?是的,您需要设置边界,但可以在构造函数中执行此操作,这是我在构造函数中执行的操作,将其设置为左下角:
public class CustomOverlay extends ItemizedOverlay<CustomOverlayItem> {
public CustomOverlay(Drawable defaultMarker, Context context) {
super(defaultMarker);
defaultMarker.setBounds(0, -defaultMarker.getIntrinsicHeight(), defaultMarker.getIntrinsicWidth(), 0);
}
public类CustomOverlay扩展ItemizedOverlay{
公共CustomOverlay(可绘制的defaultMarker,上下文){
超级(默认标记);
defaultMarker.setBounds(0,-defaultMarker.getIntrinsicHeight(),defaultMarker.getIntrinsicWidth(),0);
}
你需要在边界的左侧额外添加一点,使中心点位于右侧位置。你应该记住,这是在px中设置的,因此需要制作某种DP转换器,以便为不同屏幕大小的不同图像正确设置
关于第二个问题,您需要一个上下文才能知道在哪里添加覆盖。没有上下文,您只需创建覆盖,而不给它任何应该使用的位置的参考(如果您愿意,您可以稍后添加)。前面的答案是对的,您需要使用标记的边界值 我相信你知道边界矩形决定了物体的大小……如果你只是在你的图像的大小上调用一个正常的后退,你地图上的标记将以你的标记的左上角坐标在GPS坐标上进行布局 您需要做的是修改图像上的边界,以便您看到的图像部分位于您想要的地图上的点之上 因此,如果调整大小后的图像是20 x 20,并且实际的箭头尖(假设图像是一个箭头,并且您希望它与地图上的点精确对齐)是x=4和Y=10,则需要相应地修改图像的边界,以便将图像“移动”到您想要的位置
由于0,0会将图像向右放置4个像素,并且在与之关联的贴图上的实际点下方放置10个像素,因此边界不应为0,0,X,Y,而应为-4,-10,X图像大小-4,Y图像大小-10(在本例中,图像的X大小和图像的Y大小均为20,但应使用适合您的情况的值)?!!!哪一个是左侧边界还是右侧边界?这个答案没有解释任何问题