Верстка блока контактов с картой

Верстка блока контактов с картой

Пример, как вывести Яндекс карту на всю ширину сайта + плавающий блок с контактной информацией.

Комментарии по коду:

  • Блок с текстом расположен абсолютно и не выходит за границы сайта благодаря <div> с классом wrp, у которого задана максимальная ширина 900px.
  • В качестве метки используется внешняя картинка.
  • Метка на карте выводится через геокодирование по адресу.
  • Центр карты немного сдвинут.
<div class="map">	
	<div class="wrp">
		<div class="map-box">
			<h2>Наши контакты</h2>
			<p>г. Москва, Тверская 7</p>
			<p><a href="tel:+7 (495) 123-45-67">+7 (495) 123-45-67</a></p>
			<p><a href="mailto:info@site.com">info@site.com</a></p>
		</div>
	</div>
	<div id="map"></div>
</div>

<script src="//api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU"></script>
<script>
ymaps.ready(init); 
function init(){
	var myMap = new ymaps.Map("map",{center: [55.85,37.45],zoom: 13});
	
	// Элементы управления картой
	//myMap.controls.add("zoomControl").add("typeSelector").add("mapTools");
	
	ymaps.geocode("г. Москва, Тверская 7").then(function (res) {
		var coord = res.geoObjects.get(0).geometry.getCoordinates();
		var myPlacemark = new ymaps.Placemark(coord, {}, {
			iconImageHref: "/img/map.png",
			iconImageSize: [54, 74],
			iconImageOffset: [-27, -74]
		});
		myMap.geoObjects.add(myPlacemark);
		myMap.setCenter(coord);	
			
		// Сдвиг центра карты вправо
		var newcoord = myMap.getGlobalPixelCenter();
		newcoord[0] -= 150;
		myMap.setGlobalPixelCenter(newcoord);				
	});
}
</script>
HTML
.wrp {
	max-width: 900px;
	margin: 0 auto;
	position: relative;
}
.map-box { 
	position: absolute;
	top: 70px;
	left: 20px; 
	padding: 20px;
	background: #fff;
	border: 1px solid #ddd;
	z-index: 100;
	width: 250px;
	box-shadow: -1px -1px 24px 0px rgba(50, 50, 50, 0.5);
}
.map-box p {
	font-size: 18px;
}
#map {
	width: 100%; 
	height: 350px;
}
CSS

Изменяются только положение у блока .map-box и смещение центра карты влево.

<div class="map">	
	<div class="wrp">
		<div class="map-box">
			<h2>Наши контакты</h2>
			<p>г. Москва, Тверская 7</p>
			<p><a href="tel:+7 (495) 123-45-67">+7 (495) 123-45-67</a></p>
			<p><a href="mailto:info@site.com">info@site.com</a></p>
		</div>
	</div>
	<div id="map"></div>
</div>

<script src="//api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU"></script>
<script>
ymaps.ready(init); 
function init(){
	var myMap = new ymaps.Map("map",{center: [55.85,37.45],zoom: 13});
	
	// Элементы управления картой
	//myMap.controls.add("zoomControl").add("typeSelector").add("mapTools");
	
	ymaps.geocode("г. Москва, Тверская 7").then(function (res) {
		var coord = res.geoObjects.get(0).geometry.getCoordinates();
		var myPlacemark = new ymaps.Placemark(coord, {}, {
			iconImageHref: "/img/map.png",
			iconImageSize: [54, 74],
			iconImageOffset: [-27, -74]
		});
		myMap.geoObjects.add(myPlacemark);
		myMap.setCenter(coord);	
			
		// Сдвиг центра карты влево
		var newcoord = myMap.getGlobalPixelCenter();
		newcoord[0] += 150;
		myMap.setGlobalPixelCenter(newcoord);				
	});
}
</script>
HTML
.wrp {
	max-width: 900px;
	margin: 0 auto;
	position: relative;
}
.map-box { 
	position: absolute;
	top: 70px;
	right: 20px; 
	padding: 20px;
	background: #fff;
	border: 1px solid #ddd;
	z-index: 100;
	width: 250px;
	box-shadow: -1px -1px 24px 0px rgba(50, 50, 50, 0.5);
}
.map-box p {
	font-size: 18px;
}
#map {
	width: 100%; 
	height: 350px;
}
CSS
12.01.2019, обновлено 25.11.2021
20151

Комментарии 2

Максим Борисенко Максим Борисенко
18 августа 2020 в 22:26
Огромное спасибо! Искал долго
Moogwai Moogwai
24 ноября 2021 в 16:37
Карта отобразилась, а метка не ставиться (
Можете актуализировать код?

, чтобы добавить комментарий.

Другие публикации

Ускорение загрузки Яндекс Карт
Несколько рекомендаций как увеличить скорость загрузки API Яндекс.Карт 2.0.
27382
+12
Яндекс карты не прямоугольной формы
Пример, как сделать Яндекс карту не прямоугольной формы т.е. наложить изображение (маску) по верх карты со сохранением...
7104
-2
Поиск ближайших объектов в БД по координатам
Рассмотрим пример как найти в базе данных соседние объекты по координатам и вывести их на карте Яндекс.
10208
+1
Как вывести метки на Яндекс.Картах из MySQL+PHP
В статье рассмотрены примеры как вывести метку на карту из БД и вывод других объектов, которые находятся рядом.
21661
+11
Яндекс.Доставка работа с API в PHP
Примеры работы с API Яндекс.Доставки (для заказа перевозки грузов корпоративным клиентам).
8686
+5
База городов, регионов и федеральных округов РФ в MySQL
База состоит из трех связанных таблиц, версия от 2016 года.
35815
+5