Яндекс карта с управлением для сайта

23 мая 2020 JavaScript
Создать карту в конструкторе Яндекс карт наверное самый простой и быстрый способ, когда надо добавить местоположение на сайте. Но если нужно сделать карту с внешними элементами управления, то конструктора здесь окажется мало. Самый распространенный пример, когда есть несколько офисов компании, и при нажатии ссылки «Показать на карте», карта автоматически перестраивается и показывает адрес нужного офиса. В этой статье мы рассмотрим готовый пример реализации этого функционала. Итак, давайте приступим!
Подключение скриптов

Для начала необходимо подключить скрипт API Яндекс карт и наш скрипт для работы с картой (код скрипта main-map.js будет рассмотрен далее):
<script src="//api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script> <script src="js/main-map.js" type="text/javascript"></script>
HTML-код
Добавляем для примера 3 ссылки «Показать на карте». Это будут ссылки на различные точки на карте. Далее контейнер для карты <div id=»map»></map>. Еще я добавил стиль для этого блока, чтобы он растянулся по ширине.
Одним из важнейших инструментов в работе программиста и системного администратора является SSH. SSH, или Secure Shell, — это протокол, используемый для безопасного входа на удаленные системы. Это самый распространенный способ получения доступа к удаленным серверам Linux. Если не знаете как подключиться по SSH из Windows, то читайте в этой статье подключение по ssh
<a href="#address1" class="map-control">Показать на карте</a>
<a href="#address2" class="map-control">Показать на карте</a>
<a href="#address3" class="map-control">Показать на карте</a>
<style>
#map {
width: 100%; height: 400px; padding: 0; margin: 0;
}
</style>
<div id="map"></div>JavaScript-код
ymaps.ready(init);
function init () {
var myMap = new ymaps.Map("map", {
center: [55.742932093456126,37.62389544445802],
zoom: 16,
controls: []
}),
myGeoObject = new ymaps.GeoObject({
});
var address1 = new ymaps.Placemark([55.742932093456126,37.62389544445802], {
balloonContent: 'Точка 1',
}, {
preset: 'islands#dotIcon',
iconColor: '#D13F22'
});
var address2 = new ymaps.Placemark([55.791055862396824,37.52825102327829], {
balloonContent: 'Точка 2',
}, {
preset: 'islands#dotIcon',
iconColor: '#D13F22'
});
var address3 = new ymaps.Placemark([55.82726918688044,37.637157631026405], {
balloonContent: 'Точка 3',
}, {
preset: 'islands#dotIcon',
iconColor: '#D13F22'
});
myMap.geoObjects
.add(myGeoObject)
.add(address1)
.add(address2)
.add(address3);
var mapControls = $('.map-control');
var destinations = {
'#address1': address1,
'#address2': address2,
'#address3': address3
};
mapControls.each(function(item, i) {
// Прокрутка к блоку с картой и переход к точке
$(this).bind('click', function() {
var position = $('#map').offset().top;
window.scrollTo(0, position);
var destination = destinations[$(this).attr('href')];
myMap.panTo(destination.geometry.getCoordinates(), {
flying: true,
duration: 3000
})
return false;
}
);
});
}
В коде мы указываем точки с координатами и в конце обработчик, который при нажатии на ссылку плавно пролистывает карту к нужной точке. Кстати координаты точек вы можете получить в Геокодере API Яндекс.Карт.
Добавить комментарий