### Godot version

4.2 dev2

### System information

windows10

### Issue description

There is a bug in calling get_used_rect() after creating multiple layers in TileMap.

Draw area not covered (0, 0) coordinates, but using get_used_rect () to obtain data for [P: (0, 0), S: (3, 3)], expect is [P (1, 1), S: (2, 2)].

In minimal reproduction project, in the main scene, TileMap1 has only one layer and TileMap2 has two layers, They are in the same position and draw the same content, But calling get_used_rect() gets a different value.
![image](https://github.com/godotengine/godot/assets/63633253/5f9d5e69-c1d3-4d60-97d5-04e124caef8e)

Note: This bug still exists in dev4, but not in dev1.

### Steps to reproduce

In minimal reproduction project, running the main scene, you can see the data from TileMap1 and TileMap2 calling get_used_rect() in the console.

### Minimal reproduction project

[TestTileMap.zip](https://github.com/godotengine/godot/files/12549069/TestTileMap.zip)

HashMap<Vector2i, TileSet::TerrainsPattern> err_value;
	TILEMAP_CALL_FOR_LAYER_V(p_layer, err_value, terrain_fill_connect, p_coords_array, p_terrain_set, p_terrain, p_ignore_empty_terrains);
}
HashMap<Vector2i, TileSet::TerrainsPattern> TileMap::terrain_fill_path(int p_layer, const Vector<Vector2i> &p_coords_array, int p_terrain_set, int p_terrain, bool p_ignore_empty_terrains) {
	HashMap<Vector2i, TileSet::TerrainsPattern> err_value;
	TILEMAP_CALL_FOR_LAYER_V(p_layer, err_value, terrain_fill_path, p_coords_array, p_terrain_set, p_terrain, p_ignore_empty_terrains);
}
HashMap<Vector2i, TileSet::TerrainsPattern> TileMap::terrain_fill_pattern(int p_layer, const Vector<Vector2i> &p_coords_array, int p_terrain_set, TileSet::TerrainsPattern p_terrains_pattern, bool p_ignore_empty_terrains) {
	HashMap<Vector2i, TileSet::TerrainsPattern> err_value;
	TILEMAP_CALL_FOR_LAYER_V(p_layer, err_value, terrain_fill_pattern, p_coords_array, p_terrain_set, p_terrains_pattern, p_ignore_empty_terrains);
}
void TileMap::set_cells_terrain_connect(int p_layer, TypedArray<Vector2i> p_cells, int p_terrain_set, int p_terrain, bool p_ignore_empty_terrains) {
	TILEMAP_CALL_FOR_LAYER(p_layer, set_cells_terrain_connect, p_cells, p_terrain_set, p_terrain, p_ignore_empty_terrains);
}
void TileMap::set_cells_terrain_path(int p_layer, TypedArray<Vector2i> p_path, int p_terrain_set, int p_terrain, bool p_ignore_empty_terrains) {
	TILEMAP_CALL_FOR_LAYER(p_layer, set_cells_terrain_path, p_path, p_terrain_set, p_terrain, p_ignore_empty_terrains);
}
TileMapCell TileMap::get_cell(int p_layer, const Vector2i &p_coords, bool p_use_proxies) const {
	TILEMAP_CALL_FOR_LAYER_V(p_layer, TileMapCell(), get_cell, p_coords, p_use_proxies);
}
Vector2i TileMap::get_coords_for_body_rid(RID p_physics_body) {
	for (const Ref<TileMapLayer> &layer : layers) {
		if (layer->has_body_rid(p_physics_body)) {
			return layer->get_coords_for_body_rid(p_physics_body);
		}
	}
	ERR_FAIL_V_MSG(Vector2i(), vformat("No tiles for the given body RID %d.", p_physics_body.get_id()));
}
int TileMap::get_layer_for_body_rid(RID p_physics_body) {