# Unbounded Horizontal Scrolling

Since v8 & v8.2, flutter\_map supports unbounded horizontal (longitudinally) scrolling for the default map projection. This means users can keep scrolling left and right (when North is up) and never hit an edge! Feature layers, such as the `PolygonLayer`, can also take advantage of this functionality.

<div data-full-width="true"><figure><img src="/files/HVaWxuaTXSOEar3PQfuE" alt=""><figcaption></figcaption></figure></div>

## Enabling/disabling unbounded horizontal scrolling

Within the codebase, unbounded horizontal scrolling is referred to as `replicatesWorldLongitude`, and is set on the CRS/projection level.

The default projection, `Epsg3857`, enables the functionality by default.

<details>

<summary>Disabling unbounded horizontal scrolling</summary>

To disable the functionality, change the projection. If you want to keep using `Epsg3857`, create the following class, and pass it to `MapOptions.crs`:

```dart
class Epsg3857NoRepeat extends Epsg3857 {
  const Epsg3857NoRepeat();

  @override
  bool get replicatesWorldLongitude => false;
}
```

</details>

## Constraining the camera vertically/latitudinally

It's now possible to remove the grey edges that appear at the top and bottom of the map when zoomed far out.

To do this, set the `MapOptions.cameraConstraint` parameter:

```dart
FlutterMap(
    options: MapOptions(
      cameraConstraint: const CameraConstraint.containLatitude(),
    ),
    children: [],
),
```

## Feature layers & multi-worlds

Each square of map that is repeated longitudinally is referred to as a "world". By default, the feature layers (for example, `PolygonLayer`, `PolylineLayer`, `CircleLayer`, and `MarkerLayer`) will repeat their features across the layers, so that each world looks identical.

In the `PolylineLayer` & `PolygonLayer`, this can be disabled by setting the `drawInSingleWorld` property.

<div data-full-width="true"><figure><img src="/files/JNJhMGjpK1raaap2xcQm" alt=""><figcaption><p><code>drawInSingleWorld: false</code> (default)</p></figcaption></figure> <figure><img src="/files/THZX5nn5cQE87xZODH6b" alt=""><figcaption><p><code>drawInSingleWorld: true</code></p></figcaption></figure></div>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fleaflet.dev/usage/basics/unbounded-horizontal-scrolling.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
