现在我正在制作Android应用程序,但我无法自行解决。
此应用程序从Web应用程序接收包含位置信息的Json,使用GSON解析它,并检查其经度和纬度。
现在应用程序可以接收Json并解析它,但我不知道如何使用比较结果。
public boolean checkArea(final LatLng latLng) {
EventsClient client = new EventsClient();
EventsClient.RequestObj requestObj = client.getRequestObj(
Constants.SAMPLE_ACCOUNT_EMAIL,
Constants.SAMPLE_ACCOUNT_AUTHENTICATION_TOKEN
);
client.setListener(new BaseClientListener() {
@Override
public void returnValue(int errorCode) {
Log.d(getClass().getSimpleName(), "listener error:" + errorCode);
}
@Override
public boolean returnValue(String result) {
Log.d(getClass().getSimpleName(), "listener result:" + result);
Boolean insideCheck = false;
Gson gson = new Gson();
Type collectionType = new TypeToken<Collection<ResponseObj>>(){}.getType();
List<ResponseObj> eventData = gson.fromJson(result, collectionType);
for(ResponseObj responseObj : eventData){
double eventLng = Double.valueOf(responseObj.getLongitude());
double eventLat = Double.valueOf(responseObj.getLatitude());
double eventLngRangeMax = eventLng + (500 / 30.8184 * 0.000277778);
double eventLngRangeMin = eventLng - (500 / 30.8184 * 0.000277778);
double eventLatRangeMax = eventLat + (500 / 25.2450 * 0.000277778);
double eventLatRangeMin = eventLat - (500 / 25.2450 * 0.000277778);
if (eventLatRangeMin < latLng.latitude && latLng.latitude < eventLatRangeMax && eventLngRangeMin < latLng.longitude && latLng.longitude < eventLngRangeMax) {
Log.d("chkArea", "inside area");
insideCheck = true;
} else {
Log.d("chkArea", "outside area");
insideCheck = false;
}
}
return insideCheck;
}
});
client.getRequest(requestObj);
// I want use "insideCheck" here!! <-----
}
调用checkArea(final LatLng latLng)
的课程:
public void onLocationChanged(Location location) {
if (checkArea(new LatLng(location.getLatitude(), location.getLongitude()))) {
sendInformation(); //
}
}
BaseClientListener
:
public interface BaseClientListener {
abstract public void returnValue(int errorCode);
abstract public boolean returnValue(String result);
}
我是菜鸟,并且不知道使用方式的详细信息&#34; Listener&#34;所以这对我来说太难了。请帮帮我!