使用 Android 在 Google 地图上设置区域

Setting an Area on Google Map using Android

我只想在 Android Studio 中使用 Google 地图 Activity 显示特定区域,它会告诉用户是否在 bounds/range 之外。

Specific Area的示例, 地图link来自How to highlight an area on Google Maps Without Javascript?

我该怎么做?

您要实现的目标称为 "locked extent"。 在 Android 中,这不能自动或直接完成,但你必须做一些 "tricks"。

你有两个选择: 按整个范围锁定(一个区域必须完全在可见范围内) 按地图中心锁定(地图中心必须在特定范围内)。

为此,您必须使用 googleMap 对象的 "onCameraChangeListener": https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.OnCameraChangeListener

 map.setOnCameraChangeListener(new OnCameraChangeListener() {
                            @Override
                            public void onCameraChange(CameraPosition cameraPosition) {
                                        checkBounds();
                            }
                        });

其中检查边界是检查一个区域或其中的一部分:

public void checkBounds() {
  // allowedbounds must be generated only once, in onCreate, because it will be a fixed area
  LatLng actualCenter = map.getProjection().getVisibleRegion().getCenter();
  if (allowedBounds.contains(actualCenter)){
    return;
  }else{

//如果不遵守边界,返回到允许的边界 map.animateCamera(CameraUpdateFactory.newLatLngBounds(allowedBounds)); } }

如果要检查是否遵守完全绑定,则必须编写自己的检查方法并更改 if 条件。 可以在此处找到该方法的提示: https://github.com/googlemaps/android-maps-utils/blob/master/library/src/com/google/maps/android/geometry/Bounds.java