Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中绘制获取路径时出现NullPointerException_Android_Google Maps_Path_Nullpointerexception - Fatal编程技术网

在android中绘制获取路径时出现NullPointerException

在android中绘制获取路径时出现NullPointerException,android,google-maps,path,nullpointerexception,Android,Google Maps,Path,Nullpointerexception,我想让谷歌在两个地理点之间画一条路径。但我有nullpointerexception 在这里,我调用生成peticion的方法: LatLng start = new LatLng(13.6871, 100.5352); LatLng end = new LatLng(13.6836, 100.5390); StringBuilder SBdoc = null; try { SBdoc = getDocument(start, end, MODE

我想让谷歌在两个地理点之间画一条路径。但我有nullpointerexception

在这里,我调用生成peticion的方法:

    LatLng start = new LatLng(13.6871, 100.5352);
    LatLng end = new LatLng(13.6836, 100.5390);

    StringBuilder SBdoc = null;
    try {
        SBdoc = getDocument(start, end, MODE_DRIVING);
        if (SBdoc != null){
            String doc = SBdoc.toString();
        }else {Log.e("The route of the line is null","");}
    } catch (IOException e) {
        e.printStackTrace();
    }
这就是方法:

public StringBuilder getDocument(LatLng start, LatLng end, String mode) throws IOException {
    String url = "http://maps.googleapis.com/maps/api/directions/json?" 
            + "origin=" + start.latitude + "," + start.longitude  
            + "&destination=" + end.latitude + "," + end.longitude 
            + "&sensor=false&units=metric&mode=driving";

    StringBuilder builder = null;

    URL categoriesWSUrl = new URL(url);
    URLConnection connection = categoriesWSUrl.openConnection();

    String line;
    builder = new StringBuilder();

    InputStream response = connection.getInputStream();
    InputStreamReader isr = new InputStreamReader( response );
    BufferedReader reader = new BufferedReader(isr);
    while((line = reader.readLine()) != null){
        builder.append(line + "\n");
    }
    return builder;
}
logcat的结构:

05-04 14:29:43.550: E/AndroidRuntime(11689): FATAL EXCEPTION: main
05-04 14:29:43.550: E/AndroidRuntime(11689): java.lang.RuntimeException: Unable to start activity ComponentInfo{package/package.Map}: android.os.NetworkOnMainThreadException
05-04 14:29:43.550: E/AndroidRuntime(11689):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at android.app.ActivityThread.access$600(ActivityThread.java:141)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at android.os.Looper.loop(Looper.java:137)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at android.app.ActivityThread.main(ActivityThread.java:5041)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at java.lang.reflect.Method.invokeNative(Native Method)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at java.lang.reflect.Method.invoke(Method.java:511)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at dalvik.system.NativeStart.main(Native Method)
05-04 14:29:43.550: E/AndroidRuntime(11689): Caused by: android.os.NetworkOnMainThreadException
05-04 14:29:43.550: E/AndroidRuntime(11689):    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at java.net.InetAddress.getAllByName(InetAddress.java:214)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at libcore.net.http.HttpEngine.connect(HttpEngine.java:311)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:282)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at package.Map.getDocument(Map.java:110)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at package.Map.onCreate(Map.java:84)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at android.app.Activity.performCreate(Activity.java:5104)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
05-04 14:29:43.550: E/AndroidRuntime(11689):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
05-04 14:29:43.550:E/AndroidRuntime(11689):致命异常:main
05-04 14:29:43.550:E/AndroidRuntime(11689):java.lang.RuntimeException:无法启动活动组件信息{package/package.Map}:android.os.NetworkOnMainThreadException
05-04 14:29:43.550:E/AndroidRuntime(11689):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
05-04 14:29:43.550:E/AndroidRuntime(11689):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
05-04 14:29:43.550:E/AndroidRuntime(11689):在android.app.ActivityThread.access$600(ActivityThread.java:141)
05-04 14:29:43.550:E/AndroidRuntime(11689):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
05-04 14:29:43.550:E/AndroidRuntime(11689):在android.os.Handler.dispatchMessage(Handler.java:99)上
05-04 14:29:43.550:E/AndroidRuntime(11689):在android.os.Looper.loop(Looper.java:137)
05-04 14:29:43.550:E/AndroidRuntime(11689):位于android.app.ActivityThread.main(ActivityThread.java:5041)
05-04 14:29:43.550:E/AndroidRuntime(11689):位于java.lang.reflect.Method.Invokenactive(本机方法)
05-04 14:29:43.550:E/AndroidRuntime(11689):在java.lang.reflect.Method.invoke(Method.java:511)
05-04 14:29:43.550:E/AndroidRuntime(11689):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-04 14:29:43.550:E/AndroidRuntime(11689):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-04 14:29:43.550:E/AndroidRuntime(11689):在dalvik.system.NativeStart.main(本机方法)
05-04 14:29:43.550:E/AndroidRuntime(11689):由以下原因引起:android.os.NetworkOnMainThreadException
05-04 14:29:43.550:E/AndroidRuntime(11689):在android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
05-04 14:29:43.550:E/AndroidRuntime(11689):位于java.net.InetAddress.lookupHostByName(InetAddress.java:385)
05-04 14:29:43.550:E/AndroidRuntime(11689):位于java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
05-04 14:29:43.550:E/AndroidRuntime(11689):位于java.net.InetAddress.getAllByName(InetAddress.java:214)
05-04 14:29:43.550:E/AndroidRuntime(11689):在libcore.net.http.HttpConnection.(HttpConnection.java:70)
05-04 14:29:43.550:E/AndroidRuntime(11689):位于libcore.net.http.HttpConnection.(HttpConnection.java:50)
05-04 14:29:43.550:E/AndroidRuntime(11689):在libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
05-04 14:29:43.550:E/AndroidRuntime(11689):位于libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
05-04 14:29:43.550:E/AndroidRuntime(11689):在libcore.net.http.HttpConnection.connect(HttpConnection.java:128)上
05-04 14:29:43.550:E/AndroidRuntime(11689):位于libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)
05-04 14:29:43.550:E/AndroidRuntime(11689):位于libcore.net.http.HttpEngine.connect(HttpEngine.java:311)
05-04 14:29:43.550:E/AndroidRuntime(11689):位于libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
05-04 14:29:43.550:E/AndroidRuntime(11689):位于libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
05-04 14:29:43.550:E/AndroidRuntime(11689):在libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:282)
05-04 14:29:43.550:E/AndroidRuntime(11689):在libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177)
05-04 14:29:43.550:E/AndroidRuntime(11689):at package.Map.getDocument(Map.java:110)
05-04 14:29:43.550:E/AndroidRuntime(11689):在package.Map.onCreate(Map.java:84)中
05-04 14:29:43.550:E/AndroidRuntime(11689):在android.app.Activity.performCreate(Activity.java:5104)上
05-04 14:29:43.550:E/AndroidRuntime(11689):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)上
05-04 14:29:43.550:E/AndroidRuntime(11689):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)

对于该方法“getDocument”,您还应该使用AsyncTask,请参阅


示例:

对于该方法“getDocument”,您还应该使用AsyncTask,请参阅


示例:

NetworkMainThreadException
此错误是因为您必须在后台线程中运行一些与网络相关的操作。使用
asynctask
并在
doInBackground()
中编写代码

NetworkOnMainThreadException
此错误是因为您必须在后台线程中运行一些与网络相关的操作。使用
asynctask
并在
doInBackground()
中编写代码

您应该使用异步任务。如果在主UI线程上运行与网络相关的操作,您将获得NetworkOnMainThreadException。这适用于蜂窝和更高版本。所以使用异步任务

有关异步任务,请查看下面的链接

在doInBackground()中调用getDocument(params)

注意:不要从doInbackground()更新ui


别忘了在标题“4个步骤”下浏览主题。

您应该使用异步任务。如果在主UI线程上运行与网络相关的操作,您将获得NetworkOnMainThreadException。这适用于蜂窝和更高版本。所以使用异步任务

有关异步任务,请查看下面的链接

在doInBackground()中调用getDocument(params)

注意:不要从doInbackground()更新ui


别忘了在标题“4个步骤”下通读主题。

stacktrace from logcat please?使用AsyncTask应解决您的问题。stacktrace from logcat please?使用AsyncTask应解决您的问题。