地图中获取路线时出错

时间:2015-04-21 01:22:06

标签: android google-maps google-maps-markers google-maps-android-api-2

我尝试获取3个本地人之间的路线,但总是返回错误,这个错误:

 java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
             at  $ParserTask.onPostExecute(Mapa.java:195)
             at $ParserTask.onPostExecute(Mapa.java:169)
             at android.os.AsyncTask.finish(AsyncTask.java:632)
             at android.os.AsyncTask.access$600(AsyncTask.java:177)
             at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
             at android.os.Handler.dispatchMessage(Handler.java:102)
             at android.os.Looper.loop(Looper.java:145)
             at android.app.ActivityThread.main(ActivityThread.java:5832)
             at java.lang.reflect.Method.invoke(Native Method)
             at java.lang.reflect.Method.invoke(Method.java:372)
             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

这是我遇到错误的代码:

private class ParserTask extends
    AsyncTask<String, Integer, List<List<HashMap<String, String>>>> {

    @Override
    protected List<List<HashMap<String, String>>> doInBackground(
            String... jsonData) {

        JSONObject jObject;
        List<List<HashMap<String, String>>> routes = null;

        try {
            jObject = new JSONObject(jsonData[0]);
            PathJSONParser parser = new PathJSONParser();
            routes = parser.parse(jObject);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return routes;
    }

    @Override
    protected void onPostExecute(List<List<HashMap<String, String>>> routes) {
        ArrayList<LatLng> points = null;
        PolylineOptions polyLineOptions = null;

        // traversing through routes
        for (int i = 0; i < routes.size(); i++) {
            points = new ArrayList<LatLng>();
            polyLineOptions = new PolylineOptions();
            List<HashMap<String, String>> path = routes.get(i);

            for (int j = 0; j < path.size(); j++) {
                HashMap<String, String> point = path.get(j);

                double lat = Double.parseDouble(point.get("lat"));
                double lng = Double.parseDouble(point.get("lng"));
                LatLng position = new LatLng(lat, lng);

                points.add(position);
            }

            polyLineOptions.addAll(points);
            polyLineOptions.width(2);
            polyLineOptions.color(Color.BLUE);
        }

        googleMap.addPolyline(polyLineOptions);
    }
}

我还有2个类要解析为JSON

1 个答案:

答案 0 :(得分:0)

为什么你在Back方法中初始化为null和in do?

List<List<HashMap<String, String>>> routes = null;

您可以尝试删除null声明并将其放在类声明中,而不是放在Asynctask

有关详细信息,请查看此tutorial