Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function showOnMap() {
- showAddress(document.getElementById('addr').value, 'map');
- }
- /*
- * Call example: showAddress("г. Москва, ул. Петровка, д. 25", 'map');
- */
- function showAddress(address, mapId) {
- var showMap = function () {
- // ищем координаты по адресу, дополнительно
- // см. https://tech.yandex.ru/maps/doc/jsapi/2.1/dg/concepts/geocoding-docpage/
- var myGeocoder = ymaps.geocode(address);
- // по результату поиска действуем.
- // см. http://wiki.commonjs.org/wiki/Promises/A
- // см. https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/vow.Promise-docpage/
- myGeocoder.then(
- function (res) {
- // массив вида [55.766962, 37.614276]
- var coords = res.geoObjects.get(0).geometry.getCoordinates();
- // здесь пытаемся использовать ранее созданную карту
- // см. javascript memoization
- var map = showAddress.map || (showAddress.map = new ymaps.Map(mapId, {
- center: coords,
- zoom: 16
- }));
- // центрируем искомый объект на карте
- // см. https://tech.yandex.ru/maps/doc/jsapi/2.0/ref/reference/Map-docpage/#setCenter
- map.setCenter(coords);
- // удаляем ранее раставленные маркеры
- map.geoObjects.removeAll();
- // добавляем маркер
- map.geoObjects.add(
- // см. https://tech.yandex.ru/maps/doc/jsapi/1.x/ref/reference/placemark-docpage/
- new ymaps.Placemark(coords,
- {
- // установка текста маркера
- iconContent: address
- },
- {
- // установка стиля маркера
- // см. https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/option.presetStorage-docpage/
- preset: 'islands#greenStretchyIcon'
- }
- )
- );
- },
- function (err) {
- alert('Ошибка поиска, попробуйте позднее');
- }
- );
- };
- // если карт на странице нет, то добавляем yandex maps API
- if (!window.ymaps) {
- var s = document.createElement('script');
- // см. https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement
- s.onload = function () {
- ymaps.ready(showMap); // по готовности API начинаем действовать
- };
- s.src = 'http://api-maps.yandex.ru/2.1/?lang=ru_RU';
- document.head.appendChild(s);
- } else {
- showMap(); // API уже готово, можно пользоваться
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment