【问题标题】:android custom map marker boundsandroid自定义地图标记范围
【发布时间】:2012-04-13 20:26:53
【问题描述】:

您好,我正在使用此标记的调整大小版本 (http://www.clker.com/clipart-orange-pin-4.html) 在 android 上的谷歌地图中显示标记。

问题是我不知道如何使标记点与坐标匹配。 箭头点在宽度坐标的 1/5 和高度的 MAX 处。

这是我的课

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) 使所有标记都不显示?

【问题讨论】:

    标签: android google-maps


    【解决方案1】:

    前面的答案是对的,你需要使用标记的BOUNDS值。

    我确信您知道边界矩形决定了对象的大小...如果您只是调用法线,地图上的标记将在 GPS 坐标处以标记的左上角坐标进行布置设置图像大小的界限。

    您需要做的是修改图像的边界,以便您想要的图像部分位于您想要的地图上的点上方。

    因此,如果您调整大小的图像是 20 x 20,而您的实际箭头提示(假设图像是一个箭头,并且您希望它与地图上的点完全对齐)就是 X=4 和 Y= 10,您需要相应地修改图像的边界以将图像“移动”到您想要的位置。

    由于 0,0 会将图像放在右侧 4 像素,并且在您与之关联的地图上的实际点下方 10 像素,因此您的边界不应为 0,0,X,Y,而应为 -4, -10,图像 4 的 X 大小,图像 10 的 Y 大小(在本例中,图像的 xsize 和图像的 ysize 均为 20,但应使用适合您情况的值。)

    【讨论】:

      【解决方案2】:

      是的,您需要设置边界,但您可以在构造函数中进行设置,这就是我在构造函数中将其设置为左下角的操作:

      public class CustomOverlay extends ItemizedOverlay<CustomOverlayItem> {
          public CustomOverlay(Drawable defaultMarker, Context context) {
              super(defaultMarker);
              defaultMarker.setBounds(0, -defaultMarker.getIntrinsicHeight(), defaultMarker.getIntrinsicWidth(), 0);
          }
      

      您需要在边界的左侧添加一些额外的内容,以使中心点位于正确的位置。您应该记住这是以 px 为单位设置的,因此请制作某种 DP 转换器,以便为每个屏幕尺寸的不同图像正确设置。

      关于第二个问题,您需要一个上下文才能知道在哪里添加叠加层。如果没有上下文,您只需创建叠加层,而不给它任何应使用位置的参考(如果您愿意,可以稍后添加)。

      【讨论】:

      • ?!!!哪个是左侧边界或右侧位置?这个答案没有任何解释
      猜你喜欢
      • 1970-01-01
      • 2018-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 2015-06-06
      • 1970-01-01
      相关资源
      最近更新 更多