Модуль местоположения GMap - это тот, который наиболее точно соответствует требованиям.
«Предоставляет карту всех узлов сайта и карту всех пользователей сайта».
Если вы хотите создать его самостоятельно:
Предложил бы создать 2 таблицы - с метками и центральными точками - чтобы заполнить эти каскадные выпадающие списки.
Последнее поле ввода должно геокодировать введенный текст - через Google GeoCoder API.
Конечно, любая центральная точка может быть геокодирована - но у вас есть ограничение в 2500 запросов API в сутки на PHP API,
если вы не являетесь главным клиентом (к тому же местные результаты просто быстрее). Вот почему рекомендуется хранить центральные точки для каждого элемента в раскрывающихся списках в таблице и использовать только JS API (вместо PHP API) для последнего шага.
Приведенный вами пример перезагружает всю страницу при изменении раскрывающихся списков, чего следует избегать.