Гугл карта для сайта - Google Maps API
Как самостоятельно без дополнительных расширений внедрить на сайте гугл-карту с меткой маркером и описанием в сплывающей подсказке, появляющейся при клике по маркеру.
Работа с API гугл карт.
Карта гугл на сайт
Вставить гугл карту на сайт по сложности так же как и вставить счётчик для сайта.
Для этого нужно:
- Включить API с названием Google Maps JavaScript API
- Взять готовый шаблон кода и вставить в него свои координаты и ключ API
- Вставить код в нужном месте на сайте.
Да, Google Maps работают на языке JavaScript. Но чтобы вставить простую карту на сайт не нужно знать JavaScript, но нужно хоть немного понимать разметку HTML.
Я не буду ставить куски простых примеров кода для вставки карты. Вы их можете найти в документации Google Maps, где есть множество решений и примеров простейшего кода с объяснениями.
Документация - https://developers.google.com/maps/documentation
Вот хочу поставить обучающее видео по работе с API гугл карт.
В видео очень хорошо показано как работать с API гугл карт и реализован пример как создать гугл-карту для группы адресов (меток).
Я надеюсь что вы поймёте и оцените видео.
Ссылки на сервисы и документацию из видео:
Консоль разработчика Google API - https://console.developers.google.com/apis/dashboard
Документация Google Maps JavaScript API - developers.google.com/maps/documentation/javascript/tutorial
Код:
<style>
#map {width:100%; height:600px;}
</style>
<div id="map"></div>
<script>
function initMap() {
var element = document.getElementById('map');
var options = {
zoom: 5,
center: {lat: 55.7558, lng: 37.6173},
};
var myMap = new google.maps.Map(element, options);
var markers = [
{
coordinates: {lat: 55.751956, lng: 37.622634},
info: '<h3>Москва</h3><br><img src="https://placehold.it/200x150"><br><p>Описание</p>'
},
{
coordinates: {lat: 59.940208, lng: 30.328092},
info: '<h3>Санкт-Петербург</h3><br> <img src="https://placehold.it/200x150"><br><p>Описание</p>'
},
{
coordinates: {lat: 50.449973, lng: 30.524911},
info: '<h3>Киев</h3><br><img src="https://placehold.it/200x150"><br><p>Описание</p>'
}
];
for(var i = 0; i < markers.length; i++) {
addMarker(markers[i]);
}
function addMarker(properties) {
var marker = new google.maps.Marker({
position: properties.coordinates,
map: myMap
});
if(properties.image) {
marker.setIcon(properties.image);
}
if(properties.info) {
var InfoWindow = new google.maps.InfoWindow({
content: properties.info
});
marker.addListener('click', function(){
InfoWindow.open(myMap, marker);
});
}
}
}
</script>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"></script>
Данный код - это готовый рабочий исходник для карты с несколькими метками. Остаётся только включить API, заменить для markers координаты и содержимое всплывающей инфо-подсказки, если нужно - по шаблону добавить новых, а так же прописать свой ключ в самом низу кода вместо YOUR_API_KEY
Параметры в картах
Масштаб для zoom:
- 1 - мир
- 5 - континент
- 10 - Город
- 15 - Улицы
- 20 - Здания
Панорама улицы
Так же мы можем использовать панораму улицы, при условии что она есть для местоположения.
Панорама создаётся для карты с одной координатой. Для панорам нужно включить API с названием - Google Street View Image API
Ссылки:
Панорама улицы: https://developers.google.com/maps/documentation/javascript/examples/streetview-embed?hl=ru
Демо и код панорамы можно увидеть чуть ниже в "гибридной" карте.
Соединяем карту и панораму - гибрид
Мой любимый приём - это гибридная карта состоящая из трёх слоёв:
- карта с меткой;
- панорама;
- кнопка переключения между картой и панорамой.
Подходит он только для одинарной метки. Конечно это только если для координат есть панорама.
Смысл гибрида в том, что всё это всунуто в один див и через CSS свойство z-index
распределено по слоям. Кнопка переключатель через JavaScript переключает с карты на панораму и обратно.
Внешне выглядит это так:
Для удобства код я разделил на составные части.
HTML
<div id="company-map">
<div class="btnMap">
<button id="btnPanel">Показать панораму улицы</button>
</div>
<div id="map"></div>
<div id="pano"></div>
</div>
CSS
#company-map {
position: relative;
border: solid 1px #ccc;
width: 100%;
height: 450px;
overflow: hidden;
}
#map {
position: absolute;
width: 100%;
height:600px;
border:solid 1px #ccc;
z-index: 1;
}
#pano {
position: absolute;
width: 100%;
height: 600px;
z-index: 0;
}
.btnMap {
position: absolute;
margin-top: 10px;
left: 50%;
margin-left: -75px;
background-color: rgba(0, 0, 0, 0.5);
border: 1px solid #999;
text-align: center;
line-height: 25px;
padding: 5px;
z-index: 5;
cursor: pointer;
}
#btnPanel {
width:150px;
}
JavaScript - части кода отмечены комментариями
<script>
//Кнопка переключение на панораму
document.getElementById('btnPanel').onclick = function() {
var map = document.getElementById('map'),
zInd = getComputedStyle(map).zIndex;
if(zInd == 1) {
map.style.zIndex = -1;
this.innerHTML = 'Показать карту';
} else {
map.style.zIndex = 1;
this.innerHTML = 'Показать панораму улицы';
}
}
//Конец кнопки переключения
function initMap() {
var element = document.getElementById('map');
var options = {
zoom: 12,
center: {lat: 55.7566599, lng: 37.6148147},
};
var myMap = new google.maps.Map(element, options);
var marker = new google.maps.Marker({
position: {lat: 55.7566599, lng: 37.6148147},
map: myMap
});
var InfoWindow = new google.maps.InfoWindow({
content: '<h3>Москва</h3><img src="img/moskow.jpg"><p>Москва - столица Российской Федерации</p>'
});
marker.addListener('click', function(){
InfoWindow.open(myMap, marker);
});
// Панорама
var panorama = new google.maps.StreetViewPanorama(
document.getElementById('pano'), {
position: {lat: 55.7566599, lng: 37.6148147},
pov: {heading: 34, pitch: 10}
});
map.setStreetView(panorama);
// Конец панорамы
}
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
</script>
Статическое изображение карты
Чтобы использовать статические изображения карты, нужно включить API с названием Google Static Maps API
Чтобы вставить карту в формате статического изображения, нужно в HTML вставить как обычно вставить тег img, в котором прописать путь с атрибутами для карты:
<img src="https://maps.googleapis.com/maps/api/staticmap?center=Великий+Новгород&zoom=13&size=600x300&maptype=roadmap%20&markers=color:red%7Clabel:C%7C40.718217,-73.998284%20&key=YOUR_API_KEY" />
В коде нужно вставить API-ключ и заменить название и координаты.
Так же можно установить размеры изображения и цвет маркера.
Обратите внимание, что в названиях городов состоящих из двух и более слов вместо пробелов используется знак +
Документация - https://developers.google.com/maps/documentation/static-maps/intro
MySQL и PHP
О том как использовать гугл карты для работы с базой данных и php читайте в соответствующей документации - https://developers.google.com/maps/documentation/javascript/mysql-to-maps
Гео-кодирование
Руководство для разработчика: https://developers.google.com/maps/documentation/geocoding/intro
*** Войдите чтобы писать комментарии.