Для добавления интерактивной карты в раздел контакты, нужно поместить в страницу или шаблон сгенерированный код Yandex карты, Google Map, или 2GIS.
На данной странице я собрал популярные решения по добавлению карт через iframe, чтобы сравнить их внешний вид.
Яндекс карты
Ссылка на редактор Yandex Карты
Как подключить Яндекс карту через Api, читать здесь.
Как сделать отложенную загрузку карты с Яндекс Api.
Отложенная загрузка карты Яндекс из Конструктора карт
<style>
.map.container-fluid {
height: 340px;
padding: 0;
background-image: url(/uploads/common/ymap0.png);
background-position: center center;
}
</style>
<div id="map_container" class="map container-fluid">
<script id="ymap_lazy" data-skip-moving="true" async=""
data-src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A1ad4887964fc2e0a6f07c6246ffe638b138f8baacc8983f9a6a0f401a02e833a&width=1280&height=400&lang=ru_RU&scroll=true"></script>
</div>
Скрипт подгрузки
<script>
let map_container = document.getElementById('map_container');
let options_map = {
once: true,//once start, thereafter destroy listener
passive: true,
capture: true
};
map_container.addEventListener('click', start_lazy_map, options_map);
map_container.addEventListener('mouseover', start_lazy_map, options_map);
map_container.addEventListener('touchstart', start_lazy_map, options_map);
map_container.addEventListener('touchmove', start_lazy_map, options_map);
let map_loaded = false;
function start_lazy_map() {
if (!map_loaded) {
let map_block = document.getElementById('ymap_lazy');
map_loaded = true;
map_block.setAttribute('src', map_block.getAttribute('data-src'));
map_block.removeAttribute('data_src');
console.log('YMAP LOADED');
}
}
</script>
Google карты
Читать том как подключить функционал Google Map Api.
Карты 2GIS
Посмотреть на карте Ростова-на-Дону