Android Map问题

时间:2011-11-22 14:54:08

标签: android google-maps

我正在尝试计算我的屏幕内是否有一些针脚。我有这个功能,我总是得到假的回报。任何想法:

public static boolean isInMap(final GeoPoint topLeftGeo, final GeoPoint bottmRightGeo, final GeoPoint point)
{
  Log.d(TAG, ""+topLeftGeo.toString());
  Log.d(TAG, ""+point.toString());
  Log.d(TAG, ""+bottmRightGeo.toString());
  
  boolean isIn = false;
  
  if( (point.getLatitudeE6() >= topLeftGeo.getLatitudeE6() 
      && point.getLatitudeE6() <= bottmRightGeo.getLatitudeE6()) 
      && (point.getLongitudeE6() >= topLeftGeo.getLongitudeE6() 
      && point.getLongitudeE6() <= bottmRightGeo.getLongitudeE6()))
  {
    isIn = true;
  }

  return isIn;
}

2 个答案:

答案 0 :(得分:1)

你对纬度的逻辑是错误的。左上角的纬度大于右下角。您的点纬度必须是&lt; =顶部纬度和&gt; =底部纬度。

答案 1 :(得分:0)

首先,请注意:您可以稍微简化一下代码:

     public static boolean isInMap(final GeoPoint topLeftGeo,
     final GeoPoint bottmRightGeo, final GeoPoint point) {
          Log.d(TAG, ""+topLeftGeo.toString());
          Log.d(TAG, ""+point.toString());
          Log.d(TAG, ""+bottmRightGeo.toString());     

          if((point.getLatitudeE6() >= topLeftGeo.getLatitudeE6() && 
point.getLatitudeE6() <=   bottmRightGeo.getLatitudeE6()) 
&&    (point.getLongitudeE6() >= topLeftGeo.getLongitudeE6() && point.getLongitudeE6() <=             bottmRightGeo.getLongitudeE6()))
          {
            return true;
          } else {
            return false;
          }
      }

至于为什么它总是返回错误,很难从你提供的有限信息中分辨出来,但我建议采用分而治之的方法。您的if statement中有四个条件需要满足才能让您的方法返回true。尝试记录每个条件,如下所示:

Log.v("latE6 greater than topLeftGeo", String.valueOf((point.getLatitudeE6() >= topLeftGeo.getLatitudeE6()));

看看哪一个出现虚假,然后从那里开始。