Проблема с картой Android - PullRequest
       2

Проблема с картой Android

0 голосов
/ 22 ноября 2011

Я пытаюсь подсчитать, есть ли какие-нибудь контакты на моем экране.У меня есть эта функция, и я всегда получаю ложь в качестве возврата.Любые идеи:

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 ]

1 голос
/ 22 ноября 2011

У вас логика для широт неправильная. Верхняя левая широта больше нижней правой. Ваша широта должна быть <= верхняя широта и> = нижняя широта.

0 голосов
/ 22 ноября 2011

Во-первых, просто примечание: вы можете немного упростить свой код:

     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;
          }
      }

Что касается того, почему он всегда возвращает false, то очень трудно понять из предоставленной вами ограниченной информации, но я рекомендую подход «разделяй и властвуй».В вашем if statement есть четыре условия, которые должны быть выполнены, чтобы ваш метод когда-либо возвращал значение true.Попробуйте записать каждое условие, например, так:

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

И посмотрите, какое из них показывает ложное, затем перейдите оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...