How to get the latitude and longitude of location where user taps on the map in android

假如想象 提交于 2019-12-18 09:27:02

问题


In my Android application, I'm using google maps v2 to show map by getting the latitute and longitude of the device's current location And I'm showing pin on that location.

Now when user clicks or taps on any other location on the map, then I have to get that points latitude and longitude and i have to set the pin at that location.

Could you please tell me how get the latitude and longitude of the user taps/clicks location.


回答1:


An example of what i use. Change it accordingly for your needs. I use it with long press.

map.setOnMapLongClickListener(new OnMapLongClickListener() {
            @Override
            public void onMapLongClick(LatLng point) {
                    map.addMarker(new MarkerOptions().position(point).title("Custom location").icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));enter code here
            }
        });

the LatLng point contains the coordinated of the longpress




回答2:


Try to use google-maps v2 built-in method.

map.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
      @Override
      public void onMapClick(LatLng position) {
         Toast.makeText(context,position.latitude+" : "+position.longitude,Toast.LENGTH_SHORT).show();
      }
});



回答3:


Try the following.

Write a class which derives from the Overlay class and override the onTap() method. Then you can add your overlay to the your MapView. A GeoPoint object, which represents the position of you tap, is passed to the onTap() method when you tab somewhere on the map.

OR

The modern answer here, using Android Maps v2, is to use OnMapClickListener, which gives you the LatLng of a tap on the map.




回答4:


// Setting onclick event listener for the map
mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {

    @Override
    public void onMapClick(LatLng point) {

        // Creating MarkerOptions
        MarkerOptions options = new MarkerOptions();

        // Setting the position of the marker
       options.position(point);

        //Get LatLng from touched point

        double touchLat=point.latitude;
        double touchLong=point.longitude;

        ///here is reverse GeoCoding which helps in getting address from latlng

        try {
            Geocoder geo = new Geocoder(MainActivity.this.getApplicationContext(), Locale.getDefault());
            List<Address> addresses = geo.getFromLocation(touchLat,touchLong, 1);
            if (addresses.isEmpty()) {
                Toast.makeText(getApplicationContext(),"Waiting for Location",Toast.LENGTH_SHORT).show();
            }
            else {

                if (addresses.size() > 0) {
                    address =addresses.get(0).getFeatureName()
                            + ", " + addresses.get(0).getLocality()
                            + ", " + addresses.get(0).getAdminArea()
                            + ", " + addresses.get(0).getCountryName();
                    Toast.makeText(getApplicationContext(), "Address:- " +address, Toast.LENGTH_LONG).show();
                }

                // draws the marker at the currently touched location
                drawMarker(point,"Your Touched Position",address+"");

            }
        }
        catch (Exception e) {
            e.printStackTrace(); // getFromLocation() may sometimes fail
        }


来源:https://stackoverflow.com/questions/24302112/how-to-get-the-latitude-and-longitude-of-location-where-user-taps-on-the-map-in

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!