8

我需要将 LatLng 类的实例传递给另一个意图。我该怎么做?这是代码。

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);

请帮帮我。

路线类:

 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);     
   }  
}
}

这是我的路线课程。我不知道问题所在。帮帮我。似乎可以很好地发送捆绑包,但在接收时出现错误。

4

3 回答 3

21

使用 putParcelable 方法将 LatLng 对象附加到 Bundle:

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

现在将其附加到您的意图:

i.putExtra("bundle", args);

要在您的新活动中使用它:

Bundle bundle = getIntent().getParcelableExtra("bundle");
LatLng fromPosition = bundle.getParcelable("from_position");
LatLng toPosition = bundle.getParcelable("to_position");
于 2013-04-21T18:34:27.623 回答
2

更简单的方法,因为 LatLng 是可包裹的:

在调用方:

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

在接收方

LatLng position = getIntent().getExtras().getParcelable("Pos");
于 2018-06-29T10:16:13.157 回答
0

我们还有另一种方法可以在活动中使用意图来获取 LatLng

   intent.putExtra(Constants.LOCATION, latLng);

   LatLng latLng = getIntent().getParcelableExtra(Constants.LOCATION);
于 2020-05-29T06:10:25.150 回答