ユーザーがGoogleマップの特定のエリアの外に移動できないようにしようとしています。ただし、これを行う簡単な方法はないようです。ここで質問するのは初めてなので、ご容赦ください。
ユーザーがスクロールするときにポーリングするために以下を試しましたが、問題は OnCameraChange が十分に頻繁に起動しないため、ぎくしゃくして不正確に動作することです。シンプルで不可欠な機能のように見えるので、これを行う方法があるに違いないことはわかっています。
private static final LatLng NEBOUND = new LatLng(47.670606, -117.393344);
private static final LatLng SWBOUND = new LatLng(47.661283, -117.411052);
private static final LatLngBounds MAPBOUNDARY = new LatLngBounds(SWBOUND, NEBOUND);
private LatLng lastCenter = new LatLng(47.667454, -117.402309);
private final OnCameraChangeListener mOnCameraChangeListener =
new OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
LatLngBounds visibleBounds = guMap.getProjection().getVisibleRegion().latLngBounds;
if(!MAPBOUNDARY.contains(visibleBounds.northeast) || !MAPBOUNDARY.contains(visibleBounds.southwest)){
guMap.moveCamera(CameraUpdateFactory.newLatLng(lastCenter));
}
else
lastCenter = guMap.getCameraPosition().target;
centerLoc.setText(lastCenter.toString());
}
};