我正在尝试计算我的屏幕内是否有一些针脚。我有这个功能,我总是得到假的回报。任何想法:
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;
}
答案 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()));
看看哪一个出现虚假,然后从那里开始。