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

前端 未结 4 774
后悔当初
后悔当初 2020-12-22 03:41

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 locatio

相关标签:
4条回答
  • 2020-12-22 04:18

    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

    0 讨论(0)
  • 2020-12-22 04:22

    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();
          }
    });
    
    0 讨论(0)
  • 2020-12-22 04:33
    // 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
            }
    
    0 讨论(0)
  • 2020-12-22 04:43

    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.

    0 讨论(0)
提交回复
热议问题