scroll and zoom finished with a little bug (if scroll too much, some
part of the map will not show).... sorry for the code style, I will try
to make it easier later