将纬度和经度发送到另一个活动

时间:2016-07-20 11:11:57

标签: android

请帮帮我, 我想通过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 + "";
                            }
                        });
                }           
            }
        }
}

3 个答案:

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