我想找出两个纬度和经度之间的行车距离。这是我的密码
private String GetDistance(LatLng origin, LatLng dest) { // Origin of route String str_origin = "origin=" + origin.latitude + "," + origin.longitude; // Destination of route String str_dest = "destination=" + dest.latitude + "," + dest.longitude; // Sensor enabled String sensor = "sensor=false"; // Building the parameters to the web service String parameters = str_origin + "&" + str_dest + "&" + sensor; // Output format String output = "json"; // Building the url to the web service String urlString = "https://maps.googleapis.com/maps/api/directions/" + output + "?" + parameters; // get the JSON And parse it to get the directions data. HttpURLConnection urlConnection = null; URL url = null; try { url = new URL(urlString.toString()); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.connect(); InputStream inStream = urlConnection.getInputStream(); BufferedReader bReader = new BufferedReader(new InputStreamReader( inStream)); String temp,response = ""; while ((temp = bReader.readLine()) != null) { // Parse data response += temp; } // Close the reader, stream & connection bReader.close(); inStream.close(); urlConnection.disconnect(); // Sort out JSONresponse // JSONObject object = (JSONObject) new JSONTokener(response) // .nextValue(); JSONObject object = new JSONObject(response); JSONArray array = object.getJSONArray("routes"); // Log.d("JSON","array: "+array.toString()); // Routes is a combination of objects and arrays JSONObject routes = array.getJSONObject(0); // Log.d("JSON","routes: "+routes.toString()); String summary = routes.getString("summary"); Log.d("JSON","summary: "+summary); JSONArray legs = routes.getJSONArray("legs"); // Log.d("JSON","legs: "+legs.toString()); JSONObject steps = legs.getJSONObject(0); // Log.d("JSON","steps: "+steps.toString()); JSONObject distance = steps.getJSONObject("distance"); // Log.d("JSON","distance: "+distance.toString()); sDistance = distance.getString("text"); iDistance = distance.getInt("value"); } catch (Exception e) { // TODO: handle exception return e.toString(); } return sDistance; }
我得到了一个例外
org.json.JSONException:Index 0 out of range [0..0)
这是我的stacktrace
Ljava.lang.StackTraceElement;@41019be8
请帮我解决问题是什么。
首先,不要硬编码从数组中获得的任何位置(如0)。Bcs,数组可能为空。
你的案子就是这样。您的array
或legs
JSONArray中的一个是空的,但您正在尝试获取它们的第0个位置。因此,它正在抛出索引超出范围的异常。
要从数组中获取值,更好地使用for循环。一个示例代码段是:
Log.v("array-length--", ""+array.length());
for(int i=0; i < array.length();i++)
{
// Routes is a combination of objects and arrays
JSONObject routes = array.getJSONObject(i);
// Log.d("JSON","routes: "+routes.toString());
String summary = routes.getString("summary");
Log.d("JSON","summary: "+summary);
JSONArray legs = routes.getJSONArray("legs");
// Log.d("JSON","legs: "+legs.toString());
Log.v("legs-length--", ""+legs.length());
for(int j=0; j < legs.length(); j++)
{
JSONObject steps = legs.getJSONObject(j);
// Log.d("JSON","steps: "+steps.toString());
JSONObject distance = steps.getJSONObject("distance");
// Log.d("JSON","distance: "+distance.toString());
sDistance = distance.getString("text");
iDistance = distance.getInt("value");
}
}
问题内容: 我需要测量以字符串形式提供名称的两个地方之间的物理距离。由于有时名称的书写方式略有不同,因此我一直在寻找一个可以帮助我测量差异的库,然后将其与纬度和经度结合起来以选择正确的匹配项。首选语言:Java或PHP。 有什么建议? 问题答案: 看看Levenshtein距离。这是一种测量两个字符串彼此之间有多不同的方法。 希望我能正确理解你的问题;在与“经度”相同的句子中使用“距离”可能会造成
问题内容: 我需要创建一个类来计算两点之间的距离。我被困住了,我是一个完全的初学者。这是我的课程: 第二课。 我不确定如何在两个定义的点之间获取点对象(中间点)。 我可以创建点对象,但不确定如何通过位于这两个点对象之间的方法返回点对象。 问题答案: 平面上的两个点(x1,y1)和(x2,y2)之间的距离为: 但是,如果您想要的只是两个点的中点,则应将中点函数更改为: 这将返回一个全新的点对象,其点
返回两点之间的欧氏距离。 使用 Math.hypot() 计算两点之间的欧氏距离( Euclidean distance)。 const distance = (x0, y0, x1, y1) => Math.hypot(x1 - x0, y1 - y0); distance(1, 1, 2, 3); // 2.23606797749979
问题内容: 我正在使用Python + Numpy(也可以使用Scipy)并具有三个2D点 我试图获得从P3垂直到P1和P2之间绘制的直线的距离。设,和 用矢量符号表示这很容易,但是我对python / numpy还是相当陌生,无法获得任何有效的方法(甚至是关闭方法)。 任何提示表示赞赏,谢谢! 问题答案: 尝试使用以下 规范 函数
我试图找到树中两个节点之间的最大距离。这是我的程序: 程序似乎正在运行;但是没有为一些测试用例显示正确的输出。我采取的方法是: 求根节点的子节点数(我一直认为根节点为0)。 找到每个子树的最大深度(尽可能多的子树,因为有根节点的子节点)。 将每个子树的最大深度存储在中,对其进行排序并打印最后两个值的总和。 有人能指出我程序中的错误吗?
问题内容: 假设我有x1,y1,还有x2,y2。 我如何找到它们之间的距离?这是一个简单的数学函数,但是此在线代码段吗? 问题答案: dist = sqrt( (x2 - x1)2 + (y2 - y1)2 ) 正如其他人指出的那样,您也可以使用等效的内置函数: