btnCalculate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Location.distanceBetween(lat1,lat2,
lon1,lon2, result);
float[] result = {};
textResult.setText("Ergebnis: " + result);
}
我目前正在尝试使Location.distanceBetween工作。我收到错误消息
java.lang.IllegalArgumentException:结果为null或长度为<1
有什么建议吗?谢谢
答案 0 :(得分:1)
代码顺序错误。
float[] result = new float[1]; //need declare result array firstly
Location.distanceBetween(latLon1.getLatitude(), latLon1.getLongitude(),
latLon2.getLatitude(), latLon2.getLongitude(), result); //then get result
textResult.setText("Ergebnis: " + String.valueOf(result[0]));//use result value
答案 1 :(得分:1)
像这样重构代码-
btnCalculate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
float[] result = {};
Location.distanceBetween(lat1, lat2,
lon1, lon2, result);
textResult.setText("Ergebnis: " + result);
}
}
根据Location.distanceBetween()
的文档,
计算两个位置之间的近似距离(以米为单位),还可以计算两个位置之间最短路径的初始和最终方位。距离和方位是使用WGS84椭球定义的。计算出的距离存储在结果[0]中。如果结果的长度为2或更大,则初始方位将存储在results [1]中。如果结果的长度为3或更大,则最终方位角将存储在results [2]中。
答案 2 :(得分:1)
您需要在Location.distanceBetween(...)之前声明数组结果。并且您还需要给数组一个空格,如下所示:
float[] result = new float[1];
Location.distanceBetween(10,10,5,5, result);
textResult.setText("Ergebnis: " + result[0]);
此代码应该有效。