-2
    public class map2 extends AppCompatActivity implements OnMapReadyCallback, GoogleMap.OnMyLocationChangeListener {

    private static final String TAG =null ;
    private GoogleMap mGoogleMap;
    private Geocoder mGeocoder;


   String Startlongitude,Endlongitude;
    String Startlattitude,Endlattitude;
    double  lon,Eat,Elot;
    double lat;
    LatLng latlon,latlon2;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map);
        SupportMapFragment mSupportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        mSupportMapFragment.getMapAsync(this);

        mGeocoder = new Geocoder(this, Locale.getDefault());
        Bundle b = getIntent().getExtras();
          String  Array=b.getString("ITEM_EXTRA");
        String Tripname = getIntent().getExtras().getString("Trip");
       List<LatLng> routeArray = new ArrayList<>();
        try {
            JSONArray jO=new JSONArray(Array);
            for(int i=0;i<jO.length();i++)
            {
                JSONObject tripObject=jO.getJSONObject(i);
                String Trips=tripObject.getString("TripNO");
                JSONObject msg=tripObject.getJSONObject("Trips");
                if(Trips.equals(Tripname))
                {
                    JSONArray msgObject=msg.getJSONArray("Trip1");
                    for(int j=0;j<msgObject.length();j++)
                   {
                       JSONObject d=msgObject.getJSONObject(j);
                       Startlongitude=d.getString("SfltLogitude");
                       Startlattitude=d.getString("Sfltlattitude");
                       Endlongitude = d.getString("EfltLogitude");
                       Endlattitude = d.getString("Efltlattitude");
                       Eat=Double.parseDouble(Endlattitude.trim());
                       Elot=Double.parseDouble(Endlongitude.trim());

                       lat=Double.parseDouble(Startlattitude.trim());
                      lon=Double.parseDouble(Startlongitude.trim());
                      latlon= new LatLng(lat, lon);
                       latlon2=new LatLng(Eat,Elot);

                       PolylineOptions polyLineOptions = new PolylineOptions();
                       polyLineOptions.addAll(latlon,latlon2);
                       polyLineOptions.width(2);
                       polyLineOptions.color(Color.BLUE);
                       mGoogleMap.addPolyline(polyLineOptions);

                       break;
                   }
                }
                else{
                   String task=tripObject.getString("Trips");
                }
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }






    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.normal:
                mGoogleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
                break;
            case R.id.satellite:
                mGoogleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
                break;
            case R.id.terrain:
                mGoogleMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
                break;
            case R.id.hybrid:
                mGoogleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
                break;
            case R.id.none:
                mGoogleMap.setMapType(GoogleMap.MAP_TYPE_NONE);
                break;
        }

        return true;
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mGoogleMap = googleMap;
        mGoogleMap.getUiSettings().setZoomControlsEnabled(true);
        mGoogleMap.getUiSettings().setMyLocationButtonEnabled(true);
        mGoogleMap.setMyLocationEnabled(true);
        mGoogleMap.setOnMyLocationChangeListener(this);


    }

    @Override
    public void onMyLocationChange(Location location) {

    }
}

here i have fetch LAttitude and Longitude from JsonServer and also converted it into doubles......but iam unable to plot the path in google map??..IT is showing me this ERROR" Polyline com.google.android.gms.maps.GoogleMap.addPolyline(com.google.android.gms.maps.model.PolylineOptions)' on a null object reference"

joe
  • 7
  • 5

1 Answers1

0

You are setting polyline on the map when map is not yet ready. So move you code of setting polyline in onMapReady() method.

Like :

public class map2 extends AppCompatActivity implements OnMapReadyCallback, GoogleMap.OnMyLocationChangeListener {

private static final String TAG =null ;
private GoogleMap mGoogleMap;
private Geocoder mGeocoder;

String Startlongitude,Endlongitude;
String Startlattitude,Endlattitude;
double  lon,Eat,Elot;
double lat;
LatLng latlon,latlon2;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map);
    SupportMapFragment mSupportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
    mSupportMapFragment.getMapAsync(this);


}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.normal:
            mGoogleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
            break;
        case R.id.satellite:
            mGoogleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
            break;
        case R.id.terrain:
            mGoogleMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
            break;
        case R.id.hybrid:
            mGoogleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
            break;
        case R.id.none:
            mGoogleMap.setMapType(GoogleMap.MAP_TYPE_NONE);
            break;
    }

    return true;
}

@Override
public void onMapReady(GoogleMap googleMap) {
    mGoogleMap = googleMap;
    mGoogleMap.getUiSettings().setZoomControlsEnabled(true);
    mGoogleMap.getUiSettings().setMyLocationButtonEnabled(true);
    mGoogleMap.setMyLocationEnabled(true);
    mGoogleMap.setOnMyLocationChangeListener(this);

    mGeocoder = new Geocoder(this, Locale.getDefault());
    Bundle b = getIntent().getExtras();
    String  Array=b.getString("ITEM_EXTRA");
    String Tripname = getIntent().getExtras().getString("Trip");
    List<LatLng> routeArray = new ArrayList<>();
    try {
        JSONArray jO=new JSONArray(Array);
        for (int i = 0; i < jO.length(); i++)
        {
            JSONObject tripObject=jO.getJSONObject(i);
            String Trips = tripObject.getString("TripNO");
            JSONObject msg = tripObject.getJSONObject("Trips");
            if (Trips.equals(Tripname))
            {
                JSONArray msgObject=msg.getJSONArray("Trip1");
                for (int j = 0; j < msgObject.length(); j++)
                {
                    JSONObject d = msgObject.getJSONObject(j);
                    Startlongitude = d.getString("SfltLogitude");
                    Startlattitude = d.getString("Sfltlattitude");
                    Endlongitude = d.getString("EfltLogitude");
                    Endlattitude = d.getString("Efltlattitude");
                    Eat=Double.parseDouble(Endlattitude.trim());
                    Elot=Double.parseDouble(Endlongitude.trim());

                    lat = Double.parseDouble(Startlattitude.trim());
                    lon = Double.parseDouble(Startlongitude.trim());
                    latlon = new LatLng(lat, lon);
                    latlon2 = new LatLng(Eat,Elot);

                    PolylineOptions polyLineOptions = new PolylineOptions();
                    polyLineOptions.addAll(latlon,latlon2);
                    polyLineOptions.width(2);
                    polyLineOptions.color(Color.BLUE);
                    mGoogleMap.addPolyline(polyLineOptions);

                    break;
                }
            }
            else {
                String task = tripObject.getString("Trips");
            }
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

@Override
public void onMyLocationChange(Location location) {

}
}
Akshay Bhat 'AB'
  • 2,690
  • 3
  • 20
  • 32
  • Thankyou....it is not giving the previous error but.... still the path is not drawn ...in debugger i have checked it is not going on "mGoogleMap.addPolyline(polyLinesOptions); "? – joe Aug 03 '16 at 10:06