使用 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
我只想在 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