如何获取用户在android中的地图上点击的位置的经纬度

时间:2014-06-19 08:31:43

标签: android google-maps latitude-longitude

在我的Android应用程序中,我使用谷歌地图v2通过获取设备的当前位置和我在该位置显示引脚的经度和经度来显示地图。

现在,当用户点击或点击地图上的任何其他位置时,我必须得到经度和纬度,我必须在该位置设置针脚。

您能否告诉我如何获取用户点击/点击位置的纬度和经度。

4 个答案:

答案 0 :(得分:3)

我使用的一个例子。根据您的需要进行相应更改。我用它长按。

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

LatLng点包含longpress

的协调

答案 1 :(得分:1)

尝试使用google-maps v2内置方法。

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

答案 2 :(得分:0)

尝试以下方法。

编写一个派生自Overlay类的类并覆盖onTap()方法。然后,您可以将叠加层添加到MapView。当您在地图上的某个位置选项卡时,GeoPoint对象(表示您点击的位置)将传递给onTap()方法。

OR

使用Android Maps v2的现代答案here是使用OnMapClickListener,它可以为您提供地图上点按的LatLng。

答案 3 :(得分:0)

// 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
        }