Usually with countries, cities, districts, and other geopolitical regions and territories, we use "in":
"The hotel is in England","...in London", "...in the Northern part of London", "...in a rough section of town", etc.
This makes sense to me because I picture these kinds of (human-designated) locations as pieces of a 2-dimensional surface (like a map). The usual rule for "in" vs. "on" [in" when the object is surrounded by the location, and "on" when it is touching the location, but not engulfed by it] will then require "in" because the hotel is surrounded by England, London, etc. That is, it is surrounded in a 2-dimensional sense (not necessary that it be embedded in the soil of the 3-dimensional geology underneath England/London,...)
When you are describing something not surrounded by the location but merely touching it, you would use "on":
"The hotel is on the Scottish border","...on the Northern edge of town", "...on the Arctic Circle", "...on the Thames" etc.
Considering more concrete, nature-made, geological features like peninsulas, islands (both named and un-named), continents, lakes, these seem more 3-dimensional to me, and we generally use "on" with them (unless the object in question is actually surrounded/immersed in the location):
"The resort was on Mount Blanc."
"The hotel is on the island."
"The hotel is on Key West."
"The hotel is on Lake Como."
"Since they built the dam, that house is now in the reservoir".
Like anything, I'm sure there must be plenty of exceptions, idioms, and other counterexamples, but I think the general rule for "in" vs. "on" with map features is basically the same general idea we use for other cases of "in"/"on":
In if surrounded by, and "on" if merely touching [tangent but not embedded].