Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to send a LatLng instance to new intent

Tags:

android

maps

I need to pass an instance of the LatLng class to another intent. How should I do it? Here's the code.

LatLng fromPosition = new LatLng(23.4555453556, 11.145315551);
LatLng toPosition = new LatLng(12.1115145311, 99.333455333);

Intent i= new Intent(Maps.this, Routes.class);
        startActivity(i);

Please help me out here.

Route class:

 public class Routes extends FragmentActivity {
GoogleMap mMap;
 GMapV2Direction md;
 private String provider;
 double lati;
 double longi;
 String name;
 Location location;

Document doc;
PolylineOptions rectLine;

Bundle bundle = getIntent().getParcelableExtra("bundle");
LatLng fromPosition = bundle.getParcelable("from_position");
LatLng toPosition = bundle.getParcelable("to_position");

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.maps2);

    md = new GMapV2Direction();
    mMap = ((SupportMapFragment)getSupportFragmentManager()
                    .findFragmentById(R.id.map)).getMap();

    LatLng coordinates = fromPosition;      
    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(coordinates, 16));

    mMap.addMarker(new MarkerOptions().position(fromPosition).title("Start"));
    mMap.addMarker(new MarkerOptions().position(toPosition).title("End"));

    new ParseXML().execute();
}

private class ParseXML extends AsyncTask<Void, Void, Document> {         
  @Override
  protected Document doInBackground(Void... params) {
    doc = md.getDocument(fromPosition, toPosition,
    GMapV2Direction.MODE_DRIVING);
    ArrayList<LatLng> directionPoint = md.getDirection(doc);
    rectLine = new PolylineOptions().width(3).color(Color.RED);

    for (int i = 0; i < directionPoint.size(); i++) {
        rectLine.add(directionPoint.get(i));
    }
    return null;    
  }

   @Override
   protected void onPostExecute(Document result) {
            // TODO Auto-generated method stub
       mMap.addPolyline(rectLine);     
   }  
}
}

This is my route class. I don't know the problem. Help me out here. It seems to send the bundle fine but there's an error while receiving it.

like image 349
Mohammad Sohaib Avatar asked Apr 21 '13 18:04

Mohammad Sohaib


2 Answers

use the putParcelable method to attached LatLng Object to a Bundle:

Bundle args = new Bundle();
args.putParcelable("from_position", fromPosition);
args.putParcelable("to_position", toPosition);

Now attach it to your intent:

i.putExtra("bundle", args);

To get it in your new activity:

Bundle bundle = getIntent().getParcelableExtra("bundle");
LatLng fromPosition = bundle.getParcelable("from_position");
LatLng toPosition = bundle.getParcelable("to_position");
like image 159
wangyif2 Avatar answered Oct 08 '22 19:10

wangyif2


Much easier way, since LatLng is parcelable:

on caller side:

LatLng position = new LatLng(16.099108, -22.812924); // Boa Vista
intent.putExtra("Pos", position);

On receiver side

LatLng position = getIntent().getExtras().getParcelable("Pos");
like image 25
j3App Avatar answered Oct 08 '22 19:10

j3App