请帮帮我, 我想通过onclick按钮将此活动的纬度和经度坐标发送到另一个活动。
此活动如何将Lat和Long发送到另一个活动,另一个活动接收Lat和Long。
对不起,我是新手。 :(
这是我的班级。
public class Maps extends FragmentActivity {
GoogleMap googleMap;
MarkerOptions markerOptions;
Marker gpin = null;
LatLng latLng;
String lat = "", lng = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.maps_layout);
SupportMapFragment supportMapFragment = (SupportMapFragment)
getSupportFragmentManager().findFragmentById(R.id.map);
// Getting a reference to the map
googleMap = supportMapFragment.getMap();
// Getting reference to btn_find of the layout activity_main
Button btn_find = (Button) findViewById(R.id.btn_find);
// Defining button click event listener for the find button
OnClickListener findClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
// Getting reference to EditText to get the user input location
EditText etLocation = (EditText) findViewById(R.id.et_location);
// Getting user input location
String location = etLocation.getText().toString();
if(location!=null && !location.equals("")){
new GeocoderTask().execute(location);
}
}
};
// Setting button click event listener for the find button
btn_find.setOnClickListener(findClickListener);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_menu, menu);
return true;
}
// An AsyncTask class for accessing the GeoCoding Web Service
private class GeocoderTask extends AsyncTask<String, Void, List<Address>>{
@Override
protected List<Address> doInBackground(String... locationName) {
// Creating an instance of Geocoder class
Geocoder geocoder = new Geocoder(getBaseContext());
List<Address> addresses = null;
try {
// Getting a maximum of 3 Address that matches the input text
addresses = geocoder.getFromLocationName(locationName[0], 3);
} catch (IOException e) {
e.printStackTrace();
}
return addresses;
}
@Override
protected void onPostExecute(List<Address> addresses) {
if(addresses==null || addresses.size()==0){
Toast.makeText(getBaseContext(), "No Location found", Toast.LENGTH_SHORT).show();
}
// Clears all the existing markers on the map
googleMap.clear();
// Adding Markers on Google Map for each matching address
for(int i=0;i<addresses.size();i++){
Address address = (Address) addresses.get(i);
// Creating an instance of GeoPoint, to display in Google Map
latLng = new LatLng(address.getLatitude(), address.getLongitude());
String addressText = String.format("%s, %s",
address.getMaxAddressLineIndex() > 0 ? address.getAddressLine(0) : "",
address.getCountryName());
markerOptions = new MarkerOptions();
markerOptions.position(latLng);
markerOptions.title(addressText);
googleMap.addMarker(markerOptions);
// Locate the first location
if(i==0)
googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
public void onMapClick(LatLng point) {
// // TODO Auto-generated method stub
if (gpin != null) {
gpin.remove();
}
gpin = googleMap.addMarker(new MarkerOptions().position(
new LatLng(point.latitude, point.longitude)).icon(
BitmapDescriptorFactory
.fromResource(R.drawable.ic_pin)));
lat = point.latitude + "";
lng = point.longitude + "";
}
});
}
}
}
}
答案 0 :(得分:1)
Intent intent = new Intent(getBaseContext(), SignoutActivity.class);
intent.putExtra("LATITUDE_ID", latitude);
intent.putExtra("LONGITUDE_ID", longitude);
startActivity(intent);
上述方法用于发送数据。
然后在您要使用这些值的活动中
Bundle extras = getIntent().getExtras();
if (extras != null) {
double value = extras.getDouble("LATITUDE_ID");
//The key argument here must match that used in the other activity
}
答案 1 :(得分:1)
为了发送字符串或int值你可以使用putExtra()但是如果你想发送LatLng我们需要使用bundle:
Bundle args = new Bundle();
args.putParcelable("customerLatLng", customerLatLng);
Intent intent=new Intent(OldActivity.this,NewActivity.class);
intent.putExtras(args);
startActivity(intent);
你的NewActivity.class中的:
Intent i = getIntent();
final Bundle extras = getIntent().getExtras();
LatLng customerLatLng = i.getParcelableExtra("customerLatLng");
答案 2 :(得分:0)
我希望将纬度和经度分成不同的东西,因为发送坐标的活动就是这样做的代码。
public void run() {
// TODO Auto-generated method stub
String handleInserUrl = getResources().getString(
R.string.estate_json_url)
+ "estates";
try {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(handleInserUrl);
MultipartEntity reqEntity = new MultipartEntity();
String titleText = title.getText().toString();
String priceText = price.getText().toString();
String contentText = content.getText().toString();
String bathroomText = bathroom.getText().toString();
String bedroomText = bedroom.getText().toString();
String areaText = area.getText().toString();
String lantaiText = lantai.getText().toString();
String luasbangunanText = luasbangunan.getText().toString();
String addressText = address.getText().toString();
reqEntity.addPart("address", new StringBody(
addressText));
reqEntity.addPart("user_id",
new StringBody(user.getId() + ""));
reqEntity.addPart("title",
new StringBody(titleText));
reqEntity.addPart("price",
new StringBody(priceText));
reqEntity.addPart("content", new StringBody(
contentText));
reqEntity.addPart("cities", new StringBody(
city_selected + ""));
reqEntity.addPart("types", new StringBody(
type_selected + ""));
reqEntity.addPart("county", new StringBody(
county_selected + ""));
reqEntity.addPart("purpose", new StringBody(
purpose_selected + ""));
reqEntity.addPart("statusproperti", new StringBody(
statusselected + ""));
reqEntity.addPart("area", new StringBody(areaText));
reqEntity.addPart("lantai", new StringBody(lantaiText));
reqEntity.addPart("luasbangunan", new StringBody(luasbangunanText));
reqEntity.addPart("bathrooms", new StringBody(
bathroomText));
reqEntity.addPart("bedrooms", new StringBody(
bedroomText));
reqEntity.addPart("time_rate", new StringBody(
time_rate_selected + ""));
reqEntity.addPart("marker", new StringBody(
marker_selected + ""));
reqEntity.addPart("lat", new StringBody(lat));
reqEntity.addPart("lng", new StringBody(lng));