如何在地图上显示地图的纬度和经度(Android Studio)
如何从用户放弃的地图获取纬度和经度?像Google地图一样,我们点击地图上的一个引脚,显示引脚的纬度和经度。任何人都可以帮我吗?非常感谢。如何在地图上显示地图的纬度和经度(Android Studio)
像图片一样,它显示了经度和纬度。
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;
}
});
试试这个高效的解决方案:
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;
}
对不起,我忘记发布图片例如。我在帖子上添加了一张新照片。请检查一下。谢谢。 –
您似乎在每次点击地图时都会在地图上添加新标记 – 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;
}
});
对不起,我忘记发布图片了。我在帖子上添加了一张新照片。请检查一下。谢谢。 –
您可以更新标记并使用'marker.showInfoWindow();'显示信息窗口或者,因为您提供的图像在地图上放置了另一个布局,并在onMarkerDragEnd方法中更新其内容(将地图和此布局放置在FrameLayout中,以便此布局可以与地图重叠),并将此“窗口”始终放置在同一地点,并更新其内容和可见性。此外,使用BottomSheetDialogFragment可能是一个很好的选择,可根据您所需的效果显示信息。 – jeprubio
在你的情况下,我不会使用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();
}
对不起,不是烤面包。文本将与引脚。 –
那是一个例子,当然你必须构建自己的小部件,如果你想让它看起来类似于你在图片中显示的东西 – oldMammuth
我更新了答案,如果它适合你,请尝试自定义布局 – MKovac
不好意思,什么是getLayoutInflater? –
这是一个从android活动的方法。但是如果你需要的话,你可以从LayoutInflater.from(context)的活动之外拥有一个inflater。 – jeprubio