После многих исследований я закончил итерационным решением ( здесь ).
Чтобы уменьшить количество элементов для итерации, я делю основание состояния (на данный момент этого достаточно), возможно, в будущем я могу добавить дополнительные деления.
Если это может быть полезно кому-то еще, мое «решение» подразумевает массив вроде:
places = {
"it":[
"Rome",
"Venice"
],
"fr":[
"Paris",
"Lyon"
],
"es":[
"Madrid",
"Barcelona",
"Girona"
]
}
И геокод Google с координатами маркера пользователя, чтобы получить состояние ('fr', 'it'), где искать места.