如何在地图上显示地图的纬度和经度(Android Studio)

问题描述:

如何从用户放弃的地图获取纬度和经度?像Google地图一样,我们点击地图上的一个引脚,显示引脚的纬度和经度。任何人都可以帮我吗?非常感谢。如何在地图上显示地图的纬度和经度(Android Studio)

像图片一样,它显示了经度和纬度。

Images

public class YOURACTIVITY extends AppCompatActivity implements OnMapReadyCallback 

private GoogleMap mMap; 
<-- 
OnCreate 
SupportMapFragment map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)); 
     map.getMapAsync(this); 

--> 

    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 
     double mLat = LATITUDE; 
     double mLon = LONTITUDE; 
     LatLng mylocation = new LatLng(mLat, mLon); 
     mMap.addMarker(new MarkerOptions().position(mylocation).snippet("TEXT BELLOW TITLE").title("TITLE")).showInfoWindow(); 
     mMap.setMyLocationEnabled(true); 
     mMap.getUiSettings().setMyLocationButtonEnabled(true); 
     mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(mylocation,15)); 
    } 

UPDATE 尝试做添加这样的事情。创建自定义布局,并添加信息

mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() { 
      @Override 
      public View getInfoWindow(Marker marker) { 
       return null; 
      } 

      @Override 
      public View getInfoContents(Marker marker) { 
       View view = MainActivity.getLayoutInflater().inflate(R.layout.map_custom, null); 


       TextView titleTextView = (TextView) view.findViewById(R.id.map_title); 
       TextView snippetTextView = (TextView) view.findViewById(R.id.map_snippet); 

       titleTextView.setText(marker.getTitle()); 
       snippetTextView.setText(marker.getSnippet()); 

       return view; 
      } 
     }); 
+0

我更新了答案,如果它适合你,请尝试自定义布局 – MKovac

+0

不好意思,什么是getLayoutInflater? –

+0

这是一个从android活动的方法。但是如果你需要的话,你可以从LayoutInflater.from(context)的活动之外拥有一个inflater。 – jeprubio

试试这个高效的解决方案:

public void onMapLongClick(LatLng point) { 
    pin.setText("New marker [email protected]" + point.toString());   
    //Create a marker object 
    Marker myMarker = map.addMarker(new MarkerOptions().position(point).title(point.toString())); 

    //And now you can use it's values 
    myMarker.getPosition().latitude; 
    myMarker.getPosition().longitude; 
} 
+0

对不起,我忘记发布图片例如。我在帖子上添加了一张新照片。请检查一下。谢谢。 –

+0

您似乎在每次点击地图时都会在地图上添加新标记 – jeprubio

可以使用setOnMarkerDragListener方法:

mMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() { 
    @Override 
    public void onMarkerDragStart(Marker marker) { 

    } 

    @Override 
    public void onMarkerDrag(Marker marker) { 

    } 

    @Override 
    public void onMarkerDragEnd(Marker marker) { 
     double latitude = marker.getPosition().latitude; 
     double longitude = marker.getPosition().longitude; 
    } 
}); 
+0

对不起,我忘记发布图片了。我在帖子上添加了一张新照片。请检查一下。谢谢。 –

+0

您可以更新标记并使用'marker.showInfoWindow();'显示信息窗口或者,因为您提供的图像在地图上放置了另一个布局,并在onMarkerDragEnd方法中更新其内容(将地图和此布局放置在FrameLayout中,以便此布局可以与地图重叠),并将此“窗口”始终放置在同一地点,并更新其内容和可见性。此外,使用BottomSheetDialogFragment可能是一个很好的选择,可根据您所需的效果显示信息。 – jeprubio

+0

在你的情况下,我不会使用infoWindow(goo.gl/H559at),而是使用地图和其他ViewGroup(RelativeLayout,LinearLayout ...)替代FrameLayout,并更新onMarkerDragEnd上的内容和可见性你希望这个信息总是放在同一个地方。 – jeprubio

这样做的缺点是使用Marker.getPosition()方法,可能在烤面包:

@Override 
public void onMarkerDragEnd(Marker marker) { 
    LatLng pos = marker.getPosition(); 
    Toast.makeText(MainActivity.this, "Point coordinates: " + pos.latitude 
     + ", " + pos.longitude, Toast.LENGTH_LONG).show(); 
} 
+0

对不起,不是烤面包。文本将与引脚。 –

+0

那是一个例子,当然你必须构建自己的小部件,如果你想让它看起来类似于你在图片中显示的东西 – oldMammuth