Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.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
Java Android谷歌地图多段线未显示在地图上_Java_Android_Google Maps_Google Roads Api - Fatal编程技术网

Java Android谷歌地图多段线未显示在地图上

Java Android谷歌地图多段线未显示在地图上,java,android,google-maps,google-roads-api,Java,Android,Google Maps,Google Roads Api,我创建了一个类,它有一个方法和一个locaton侦听器。locationListener将每2秒执行一次,获取lat longs并将其传递给异步任务。异步任务类将把lat long传递给Google Road Api以获取快照lat long,并将lat long传递给postExecute() PostExecute()应该绘制多段线,但它不会 请参阅以下代码: MapsActivity.java package com.example.akshay.roadsapi; import and

我创建了一个类,它有一个方法和一个locaton侦听器。locationListener将每2秒执行一次,获取lat longs并将其传递给异步任务。异步任务类将把lat long传递给Google Road Api以获取快照lat long,并将lat long传递给postExecute()

PostExecute()应该绘制多段线,但它不会

请参阅以下代码:

MapsActivity.java

package com.example.akshay.roadsapi;

import android.app.Activity;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;

public class MapsActivity extends FragmentActivity {

    private GoogleMap mMap; // Might be null if Google Play services APK is not available.
    final String URL = "https://roads.googleapis.com/v1/snapToRoads?path=";
    final String KEY = "API KEY HERE";
    int i = 0;
    AsyncTask<Void, Void, LatLng> latLng1 = null;
    Activity activity;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
        final LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 0, new LocationListener() {
            @Override
            public void onLocationChanged(Location location) {

                LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());

                BackgroundTask backgroundTask = new BackgroundTask(MapsActivity.this, latLng, URL, KEY, activity, mMap);

                    backgroundTask.execute();


                /*mMap.addMarker(new MarkerOptions().position(latLng1));*/
            }


            @Override
            public void onStatusChanged(String provider, int status, Bundle extras) {

            }

            @Override
            public void onProviderEnabled(String provider) {

            }

            @Override
            public void onProviderDisabled(String provider) {

            }
        });

    }

}
package com.example.akshay.roadsapi;
导入android.app.Activity;
导入android.location.location;
导入android.location.LocationListener;
导入android.location.LocationManager;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.v4.app.FragmentActivity;
导入com.google.android.gms.maps.GoogleMap;
导入com.google.android.gms.maps.SupportMapFragment;
导入com.google.android.gms.maps.model.LatLng;
公共类映射活动扩展了FragmentActivity{
私有GoogleMap mMap;//如果Google Play services APK不可用,则可能为空。
最终字符串URL=”https://roads.googleapis.com/v1/snapToRoads?path=";
final String KEY=“此处的API键”;
int i=0;
AsyncTask latLng1=null;
活动;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_映射);
mMap=((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
最终位置管理器位置管理器=(位置管理器)getSystemService(位置服务);
locationManager.RequestLocationUpdate(locationManager.GPS_提供程序,2000,0,新LocationListener(){
@凌驾
已更改位置上的公共无效(位置){
LatLng LatLng=新LatLng(location.getLatitude(),location.getLongitude());
BackgroundTask BackgroundTask=新的BackgroundTask(MapsActivity.this,latLng,URL,KEY,activity,mMap);
backgroundTask.execute();
/*mMap.addMarker(新的MarkerOptions().position(latLng1))*/
}
@凌驾
public void onStatusChanged(字符串提供程序、int状态、Bundle extra){
}
@凌驾
公共无效onProviderEnabled(字符串提供程序){
}
@凌驾
公共无效onProviderDisabled(字符串提供程序){
}
});
}
}
BackgroundTask.java

package com.example.akshay.roadsapi;

import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.AsyncTask;
import android.util.Log;

import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.PolylineOptions;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import java.net.URISyntaxException;

/**
 * Created by Akshay on 9/8/2015.
 */
public class BackgroundTask extends AsyncTask<Void, Void, LatLng> {
    Context CONTEXT;
    LatLng LATLNGS;
    String URL;
    String KEY;
    Double LAT = null;
    Double LONG = null;
    GoogleMap map;
    Activity ACTIVITY;
    myInt myInt = null;
    int flag = 0;
    LatLng prev;
    LatLng latlng;

    public BackgroundTask(Context context, LatLng LATLNGS, String URL, String KEY, Activity ACTIVITY, GoogleMap map) {
        this.CONTEXT = context;
        this.LATLNGS = LATLNGS;
        this.URL = URL;
        this.KEY = KEY;
        this.ACTIVITY = ACTIVITY;
        this.map = map;

    }


    @Override
    protected LatLng doInBackground(Void... params) {


        HttpClient client = new DefaultHttpClient();
        HttpGet get = new HttpGet();
        HttpResponse response = null;
        HttpEntity entity = null;
        InputStream inputStreamReader = null;
        BufferedReader bufferedReader = null;
        String line = null;
        StringBuilder strin = new StringBuilder();

        try {

            get.setURI(new URI(URL + LATLNGS.latitude + "," + LATLNGS.longitude + "&interpolate=false&key=" + KEY));
            response = client.execute(get);
            entity = response.getEntity();
            inputStreamReader = entity.getContent();
            bufferedReader = new BufferedReader(new InputStreamReader(inputStreamReader));
            while ((line = bufferedReader.readLine()) != null) {
                strin.append(line + "\n");
            }

            Log.e("============", strin.toString());

            JSONObject ob = new JSONObject(strin.toString());
            JSONArray array = ob.getJSONArray("snappedPoints");
            for (int i = 0; i <= array.length(); i++) {
                JSONObject object = array.getJSONObject(i).getJSONObject("location");
                LAT = object.getDouble("latitude");
                LONG = object.getDouble("longitude");

            }

        } catch (URISyntaxException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }

        latlng= new LatLng(LAT, LONG);
        return latlng;

    }

    @Override
    protected void onPostExecute(LatLng latLng) {
        super.onPostExecute(latLng);
       /* MarkerOptions markerOptions = new MarkerOptions().position(latLng);
        map.addMarker(markerOptions);*/




        if (flag == 0) {
            prev = latLng;
            flag = 1;
        }
        CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(latLng, 18);
       /* Marker marker = map.addMarker(new MarkerOptions().position(latLng));*/


        PolylineOptions polylineOptions = new PolylineOptions();
        polylineOptions.add(prev, latLng).color(Color.BLUE).width(50).visible(true);
        map.addPolyline(polylineOptions);
        map.animateCamera(cameraUpdate);




        prev = latLng;


        latLng = null;

    }
}
package com.example.akshay.roadsapi;
导入android.app.Activity;
导入android.content.Context;
导入android.graphics.Color;
导入android.os.AsyncTask;
导入android.util.Log;
导入com.google.android.gms.maps.CameraUpdate;
导入com.google.android.gms.maps.CameraUpdateFactory;
导入com.google.android.gms.maps.GoogleMap;
导入com.google.android.gms.maps.model.LatLng;
导入com.google.android.gms.maps.model.PolylineOptions;
导入org.apache.http.HttpEntity;
导入org.apache.http.HttpResponse;
导入org.apache.http.client.ClientProtocolException;
导入org.apache.http.client.HttpClient;
导入org.apache.http.client.methods.HttpGet;
导入org.apache.http.impl.client.DefaultHttpClient;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.net.URI;
导入java.net.URISyntaxException;
/**
*由Akshay于2015年9月8日创建。
*/
公共类BackgroundTask扩展了AsyncTask{
语境;
板条板条;
字符串URL;
字符串键;
双LAT=null;
双长=空;
谷歌地图;
活动;
myInt-myInt=null;
int标志=0;
LatLng prev;
LatLng LatLng;
公共背景任务(上下文上下文、LatLng LATLNGS、字符串URL、字符串键、活动活动、谷歌地图){
this.CONTEXT=上下文;
this.LATLNGS=LATLNGS;
this.URL=URL;
this.KEY=KEY;
这个。活动=活动;
this.map=map;
}
@凌驾
受保护的LatLng doInBackground(无效…参数){
HttpClient=new DefaultHttpClient();
HttpGet=新的HttpGet();
HttpResponse响应=null;
HttpEntity=null;
InputStream inputStreamReader=null;
BufferedReader BufferedReader=null;
字符串行=null;
StringBuilder strin=新的StringBuilder();
试一试{
get.setURI(新URI(URL+LATLNGS.latitude+“,+LATLNGS.longitude+”&interpolate=false&key=“+key));
response=client.execute(get);
entity=response.getEntity();
inputStreamReader=entity.getContent();
bufferedReader=新的bufferedReader(新的InputStreamReader(InputStreamReader));
而((line=bufferedReader.readLine())!=null){
strin.append(第+行“\n”);
}
Log.e(“================”,strin.toString());
JSONObject ob=新的JSONObject(strin.toString());
JSONArray数组=ob.getJSONArray(“snapdpoints”);
对于(int i=0;i