SSukha 地图开发者文档

与地图交互

5.1 相机、缩放与范围适配

map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(21.67623, 100.02228), 17));
map.animateCamera(CameraUpdateFactory.zoomTo(18), 300, null);
LatLngBounds bounds = LatLngBounds.builder()
    .include(new LatLng(21.67623, 100.02228))
    .include(new LatLng(21.68, 100.03)).build();
map.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 24, 80, 24, 220));

四边距顺序为左、上、右、下。适配范围前确保控件已布局且可用宽高大于边距总和。动画时长 1–60000 毫秒,回调为 SukhaMap.CancelableCallback 或 null;stopAnimation() 取消动画。

5.2 控件与手势

UiSettings ui = map.getUiSettings();
ui.setCompassEnabled(true);
ui.setZoomControlsEnabled(true);
ui.setScaleControlsEnabled(true);
ui.setMyLocationButtonEnabled(true);
ui.setRotateGesturesEnabled(true);
ui.setTiltGesturesEnabled(false);

setAllGesturesEnabled 控制全部手势,setScrollGesturesEnabled、setZoomGesturesEnabled 可分别控制。显示定位按钮不等于已获得定位权限或真实位置。

5.3 地图与覆盖物事件

map.setOnMapClickListener(point -> report(point));
map.setOnMarkerClickListener(marker -> { report(marker.getId()); return true; });
map.setOnInfoWindowClickListener(marker -> report(marker.getId()));
map.setOnCameraChangeListener(new SukhaMap.OnCameraChangeListener() {
    public void onCameraChange(CameraPosition p) { report(p.target); }
    public void onCameraChangeFinish(CameraPosition p) { report(p.zoom); }
});
map.setOnMapTouchListener(event -> report(event.getActionMasked()));

同种 setter 会替换旧监听,传 null 解绑。Marker 点击返回 true 表示业务已处理。MotionEvent 仅在回调内使用,回调后回收。触摸监听是观察接口,不用于拦截手势。另有地图长按、Marker 拖拽与截图等接口,详见接口索引。