【问题标题】:MapView coordinates wrongMapView坐标错误
【发布时间】:2012-11-08 18:04:07
【问题描述】:

当我在我的 Android 2.2 手机上使用 ItemizedOverlay 在 MapView 中放置图钉时,放置是正确的,但是当我在 4.0 和 4.1 手机上这样做时,放置是错误的。该图钉位于地图的下方,但具有相同的 x 坐标。

我发现 4.XX 设备上 MapView 左上角的像素值不是 (0.0),因为它在我的 2.2 设备上。我可以看到区别在于操作栏的高度(就像图像上突出显示的那个),并找到了一些代码来获取它的高度。现在,在放置引脚时,我从 MapView 中的 y 坐标中减去操作栏的高度。我在我的 4.XX 设备上得到了正确的结果,但现在我的 2.2 设备上的位置是错误的。

我的屏幕顶部有一个添加,但它的高度在我的所有设备上几乎相同。

你知道我应该怎么做才能在所有设备上的 MapView 中获得正确的坐标吗?

我使用的代码是:

final WindowManager w = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
final Display d = w.getDefaultDisplay();
final DisplayMetrics m = new DisplayMetrics();
d.getMetrics(m);
int totalHeight =mapView.getLayoutParams().height;
int statusbarHeight = totalHeight - mapView.getMeasuredHeight();

【问题讨论】:

    标签: android google-maps android-mapview mapactivity


    【解决方案1】:

    不完全确定您要在这里做什么,但如果您想在地图上放置大头针,那么您应该使用ItemizedOverlay,它采用纬度/经度坐标作为地图,而不是屏幕坐标。

    有一个用法示例here。该代码显示了如何在地图上获取图钉、如何移动它们以及如何在屏幕像素和地图纬度/经度之间进行转换,所有这些都在大约 200 行内。

    【讨论】:

      【解决方案2】:

      我解决了这个问题,但这不是最漂亮的解决方案。

      我检查操作栏的大小。如果存在,我运行问题中显示的代码。如果size返回null,表示action bar不存在,我就不运行代码了。

      代码是:

      // Check if an action bar exist (Android 4.XX) 
      private void getActionBarHeight() {
          // TODO Auto-generated method stub
          final WindowManager w = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
          final Display d = w.getDefaultDisplay();
          final DisplayMetrics m = new DisplayMetrics();
          d.getMetrics(m);
          actionBarHeight = m.heightPixels;
      
          try { // If the action bar exist
              TypedValue tv = new TypedValue();
              context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true);
              getResources().getDimensionPixelSize(tv.resourceId);
          } catch (Exception e) { // If it doesn't exist
              actionBarHeight = -1;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-09
        • 2020-08-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多