Во-первых, просто примечание: вы можете немного упростить свой код:
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()));
И посмотрите, какое из них показывает ложное, затем перейдите оттуда.