Smart pointers mostly come into play when you have to decide on an ownership model and you have multiple actors involved.
"Who" (i.e. what class) will own the object?
If you have multiple classes that should own the object, you have a shared ownership and thus a shared_ptr might be the way to go - there are often better designs than to use shared_ptr.
If you just have a single owner, then unique_ptr might be the way to go.
Containers can also take on the role of being owners, as such in your example, you won't benefit from using an uinque_ptr, as your std::map is already the owner of all the chunks.
What's important here, is that you either always access the map directly or use a reference/iterator to the stored chunk, as to prevent any unnecessary copies and breaking the ownership of the map.