google-map

Web Scripts

Как подключить google map с отметками?

• 28-06-2018 •

Часто в некоторых проектах, на странице о нас или связаться с нами, просят вставить google map с отметкой по их адресу. А бывает и так, что адресов несколько и соответственно отметок должно быть несколько. А что если отметки должны быть кликабельны и при нажатии должен всплывать текст?

Google map с отметками

See the Pen Code pen with marks by Aleksandrs (@CoolS2) on CodePen.

Первое, что надо сделать, это создать блок, где будет отображаться наша карта


<div id="map"></div> 

Дальше нужно задать высоту блоку, иначе по умолчанию она будет 0 и карта не будет отображена.


#map{
  width: 100%;
  height:100vh;
}

И самое интересное это js. У гугла уже есть хорошо описанная документация, но на английском языке. Там же есть куча примеров, все разжовано до мелочей. Гугл карта достаточно гибкая в настройках, можно менять цвет карты (дороги, реки, улицы и прочее). Можно обводить границы, ставить марки, анимировать. Все это можно почитать в документации.

Что касается нашего примера, то для начало нужно подключить Google Map API


<script src="https://maps.google.com/maps/api/js?key=[APIKEY]"></script>

Чтобы можно было пользоваться google API, нужно зарегистрироваться и в настройках Google developers , подключить к своему акаунту Google Map, и получить API KEY, который нужно вставить ссылку.

Google Map бесплатный для определенного количество посетителей. На данный момент этот предел достаточно большой и подойдет для большинства случаев. Но для больших коммерческих проектов это будет платной услугой. Более подробно вы можете ознакомиться на сайте Google developers.

Далее мы отображаем нашу карту в подготовленном блоке


<script src="https://maps.google.com/maps/api/js?key=[APIKEY]"></script>
google.maps.event.addDomListener(window, 'load', init);
function init() {

        var myOptions = {
            center: new google.maps.LatLng(56.943870, 24.218033), // Координаты, какое место отображать на карте
            zoom: 9, // Уровень риближения карты
            mapTypeId: google.maps.MapTypeId.ROADMAP // Тип карты

        };
        var map = new google.maps.Map(document.getElementById("map"), // В каком блоке будет отображаться карта
            myOptions);
    }

Сейчас, если запустить скрипт, то карта уже будет работать, но пока без отметок, так как мы еще их не написали.

Для начало создадим массив, в котором будет храниться вся информация наших отметок


var locations = [
       ['Rīga', 56.943870, 24.218033, 'Salnas iela 1a'],
       ['Tukums', 56.976461, 23.156618, 'Raudas iela 30a']
];

Далее мы создаем функцию, в которой будем расставлять наши марки по карте.


function setMarkers(map, locations) {

        var marker, i, mark_position;    
        for (i = 0; i < locations.length; i++) { // Проходимся по нашему массиву с марками

			// Тут вроде и так все понятно
            var title = locations[i][0];
            var lat = locations[i][1];
            var long = locations[i][2];
            var text = locations[i][3];

            mark_position = new google.maps.LatLng(lat, long); // Создаем позицию для отметки

             marker = new google.maps.Marker({ // Что будет содержаться в отметке
                 map: map, // К какой карте относиться отметка
                 title: title, // Заголовок отметки
                 position: mark_position, // Позиция отметки
                 animation: google.maps.Animation.DROP, // Анимация
                 icon: '/images/map-marker.png' // Можно поменять иконку, если оставить пустые скобки, то будет оригинальная иконка
            });
			
			// Дальше создаем контент для каждой отметки

            var content = '<div class="info-block"><h3>' + title + '</h3><b>' + "Address: </b>" + text + '</div>';
            var infowindow = new google.maps.InfoWindow();
			
			// При нажатии на марку, будет отображаться контент

            google.maps.event.addListener(marker,'click', (function(marker,content,infowindow){
                return function() {
                    infowindow.setContent(content);
                    infowindow.open(map,marker);
                };
            })(marker,content,infowindow));
        }
    }

Вот и все дела, теперь осталось эту функцию запускать во время инициализации карты


<script src="https://maps.google.com/maps/api/js?key=[APIKEY]"></script>
google.maps.event.addDomListener(window, 'load', init);
function init() {

        var myOptions = {
            center: new google.maps.LatLng(56.943870, 24.218033), // Координаты, какое место отображать на карте
            zoom: 9, // Уровень риближения карты
            mapTypeId: google.maps.MapTypeId.ROADMAP // Тип карты

        };
        var map = new google.maps.Map(document.getElementById("map"), // В каком блоке будет отображаться карта
            myOptions);
			
		setMarkers(map, locations)
    }

Надеюсь статья была вам полезна, если остались вопросы, пишите в комментариях!

Так же есть классная статья, где вы сможете найти полезные и красивые кнопки для вашего сайта

Добавить комментарий