【发布时间】:2015-08-02 06:05:41
【问题描述】:
我想在 Android Studio 中使用 Google Maps Activity 仅显示特定区域,它会告诉用户是否超出范围/范围。
Specific Area 的示例, 地图链接来自How to highlight an area on Google Maps Without Javascript?
我该怎么做?
【问题讨论】:
标签: android google-maps android-maps-v2
我想在 Android Studio 中使用 Google Maps Activity 仅显示特定区域,它会告诉用户是否超出范围/范围。
Specific Area 的示例, 地图链接来自How to highlight an area on Google Maps Without Javascript?
我该怎么做?
【问题讨论】:
标签: android google-maps android-maps-v2
您要达到的目标称为“锁定范围”。 在 Android 中,这不能自动或直接完成,但您必须做一些“技巧”。
您有两个选择: 按整个范围锁定(区域必须完全在可见范围内) 按地图中心锁定(地图中心必须在特定范围内)。
为此,您必须使用 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();
}
});
其中 check bounds 是对某个区域或其一部分的检查:
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
【讨论】: