Quantcast
Channel: Клуб API Карт
Viewing all 7380 articles
Browse latest View live

API Яндекс.Карт версия 2.0.38


Кнопка "Многоугольника"

Article 2

$
0
0

Привет как дела!Привет как дела!

.

Article 1

$
0
0

Постараюсь внести в ваш клуб побольше интерестного!Постараюсь внести в ваш клуб побольше интерестного!

.

Поиск ближней точки

$
0
0

Здравствуйте, проблема такая: у меня на карте есть много точек и одна главная, например. Мне нужно узнать какая из точек ближе всего находится к главной, как осуществить такое? может нужно перевести геокоординаты как-то? или свести долготу и широту к одному числу?

.

(API 2.0) двойной geocode для поиска на карте

$
0
0

на карте использую два геокодера

Здрасте! У меня на карте 2 панели поиска

 

var myProvider1 = {geocode: function (request, options) {return ymaps.geocode('Томск, '+request);}}

mySearchControl1 = new ymaps.control.SearchControl({provider: myProvider1}, {left: 5, top: 5});
myMap.controls.add(mySearchControl1);

 

var myProvider2 = {geocode: function (request, options) {return ymaps.geocode('Москва, '+request);}}

mySearchControl2 = new ymaps.control.SearchControl({provider: myProvider2}, {left: 5, top: 5});
myMap.controls.add(mySearchControl2);

 

Можно ли сделать так, чтобы панель была одна, но чтобы поиск работал по двум геокодерам, т.е. если не найдено первым, то ищем вторым?

 

function geocode2 (request, options)

{

...

// что тут нужно возвращать?

}

 

myProvider = {geocode:  geocode2 (request, options) {return .// и как тут прописать?..;}}

mySearchControl = new ymaps.control.SearchControl({provider: myProvider}, {left: 5, top: 5});
myMap.controls.add(mySearchControl);

 

.

Особенности API Яндекс.Карт версии 2.1

Polyline

$
0
0

Добрый день. Имеется набор координат двух линий, который я обозначил красным цветом на скрине, проблема  том что мои две линии соеденяются третьей линией, можно ли это как-то избежать на использую два Polyline (т.к я имею один массив с координатами) ?

 

 

пример кода: http://jsfiddle.net/Claster/F4Ljt/1/

.

GeoQueryResult#searchInside

$
0
0

Доброго времени суток!

 

Я хочу напечатать яндекс.карту с метками, для этого я хочу найти метки, видимые на карте, и передать их координаты в Static API.

 

Вот как я формирую урл:

 

function getUrlForPrint() {
    var parameters = {
        ll: map.getCenter().reverse().join(),
        z: map.getZoom(),
        l: 'map',
        size: '650,450'
    }, points = [];
    //Вот здесь я ищу видимые точки и формирую массив их координат для URL
    placeMarks.searchInside(map).each(function (point) {
        points.push(point.geometry.getCoordinates().reverse().join() + ',pm2orgl');
    });
    parameters['pt'] = points.join('~');
    return 'http://static-maps.yandex.ru/1.x/?' + $.param(parameters);
}

 

Проблема в том, что функция срабатывает корректно только 1 раз. При последующем вызове placeMarks.searchInside(map) - возвращается 0 объектов, хотя с картой я никаких действий в промежутке между вызовами не совершаю. Что я делаю не так, подскажите, пожалуйста.

 

.

Помогите подружить с wordpress

$
0
0

вот код как его вставить на страницу чё только не делаю просто пустая страница и все(((( товарищи мастрера обьясните мне пошагово пжл моя благодарность всем за ответы заранее

 

 

function init() {
    var myMap = new ymaps.Map('map', {
            center: [60.906882, 30.067233],
            zoom: 9,
            type: 'yandex#map',
            behaviors: ['scrollZoom', 'drag'],
            controls: []
        }),
        searchStartPoint = new ymaps.control.SearchControl({
            options: {
                useMapBounds: true,
                noPlacemark: true,
                noPopup: true,
                placeholderContent: 'Адрес начальной точки',
                size: 'large'
            }
        }),
        searchFinishPoint = new ymaps.control.SearchControl({
            options: {
                useMapBounds: true,
                noCentering: true,
                noPopup: true,
                noPlacemark: true,
                placeholderContent: 'Адрес конечной точки',
                size: 'large',
                float: 'none',
                position: { left: 10, top: 44 }
            }
        }),
        calculator = new DeliveryCalculator(myMap, myMap.getCenter());
    myMap.controls.add(searchStartPoint);
    myMap.controls.add(searchFinishPoint);
    searchStartPoint.events.add('resultselect', function (e) {
        var results = searchStartPoint.getResultsArray(),
            selected = e.get('index'),
            point = results[selected].geometry.getCoordinates();
        calculator.setStartPoint(point);
    })
        .add('load', function (event) {
            // По полю skip определяем, что это не дозагрузка данных.
            // По getRusultsCount определяем, что есть хотя бы 1 результат.
            if (!event.get('skip') && searchStartPoint.getResultsCount()) {
                searchStartPoint.showResult(0);
            }
        });
    searchFinishPoint.events.add('resultselect', function (e) {
        var results = searchFinishPoint.getResultsArray(),
            selected = e.get('index'),
            point = results[selected].geometry.getCoordinates();
        calculator.setFinishPoint(point);
    })
        .add('load', function (event) {
            // По полю skip определяем, что это не дозагрузка данных.
            // По getRusultsCount определяем, что есть хотя бы 1 результат.
            if (!event.get('skip') && searchFinishPoint.getResultsCount()) {
                searchFinishPoint.showResult(0);
            }
        });
}
function DeliveryCalculator(map, finish) {
    this._map = map;
    this._start = null;
    this._route = null;
    map.events.add('click', this._onClick, this);
}
var ptp = DeliveryCalculator.prototype;
ptp._onClick= function (e) {
    if (this._start) {
        this.setFinishPoint(e.get('coords'));
    } else {
        this.setStartPoint(e.get('coords'));
    }
};
ptp._onDragEnd = function (e) {
    this.getDirection();
}
ptp.getDirection = function () {
    if(this._route) {
        this._map.geoObjects.remove(this._route);
    }
    if (this._start && this._finish) {
        var self = this,
            start = this._start.geometry.getCoordinates(),
            finish = this._finish.geometry.getCoordinates();
        ymaps.geocode(start, { results: 1 })
            .then(function (geocode) {
                var address = geocode.geoObjects.get(0) &&
                    geocode.geoObjects.get(0).properties.get('balloonContentBody') || '';
                ymaps.route([start, finish])
                    .then(function (router) {
                        var distance = Math.round(router.getLength() / 1000),
                            message = '<span>Расстояние: ' + distance + 'км.</span><br/>' +
                                '<span style="font-weight: bold; font-style: italic">Стоимость доставки: %sр.</span>';
                        self._route = router.getPaths();
                        self._route.options.set({ strokeWidth: 5, strokeColor: '0000ffff', opacity: 0.5 });
                        self._map.geoObjects.add(self._route);
                        self._start.properties.set('balloonContentBody', address + message.replace('%s', self.calculate(distance)));
                    });
            });
        self._map.setBounds(self._map.geoObjects.getBounds())
    }
};
ptp.setStartPoint = function (position) {
    if(this._start) {
        this._start.geometry.setCoordinates(position);
    }
    else {
        this._start = new ymaps.Placemark(position, { iconContent: 'А' }, { draggable: true });
        this._start.events.add('dragend', this._onDragEnd, this);
        this._map.geoObjects.add(this._start);
    }
    if (this._finish) {
        this.getDirection();
    }
};
ptp.setFinishPoint = function (position) {
    if(this._finish) {
        this._finish.geometry.setCoordinates(position);
    }
    else {
        this._finish = new ymaps.Placemark(position, { iconContent: 'Б' }, { draggable: true });
        this._finish.events.add('dragend', this._onDragEnd, this);
        this._map.geoObjects.add(this._finish);
    }
    if (this._start) {
        this.getDirection();
    }
};
ptp.calculate = function (len) {
    // Константы.
    var DELIVERY_TARIF = 20,
        MINIMUM_COST = 500;
    return Math.max(len * DELIVERY_TARIF, MINIMUM_COST);
};
ymaps.ready(init);

 

 

.

Android 2.3.x и SVG

$
0
0

Версия API 2.1, Android 2.3.x, стоковый браузер.

Не видны значки на элементах управления, не видны placemark-и.
Проверить можно здесь: http://api.yandex.ru/maps/

Подозреваю, что это связано с тем, что значки и placemark рисуются SVG.
Наверное использование PNG (как для IE8) решило бы эту проблему.

Если поддержка Android 2.3.x - это моветон,
можно ли как-то управлять процессом: какие стили будут подгружаться для карты или что-то типа того?
Хотелось бы решить проблему в пару строк (да, я знаю что можно кастомизировать каждый элемент по отдельности - но это очень лень).

Спасибо.



 

.

(API 2.0) двойной geocode в функции и promise, помогите оптимизировать...

$
0
0

Здрасте!

При вызове функции, она отправляет 2 запроса на геокодер:

1) "Смоленск, " + улица

2) Искать улица в квадрате от центра

Если первый запрос, вернул координаты цента, то беру данные из второго. Например, если в Смоленске будем искать улицу Шевченко, то сработает данные из первого запроса верные, а если Уколово, то это за пределами города и корректные данные вернет второй запрос.

 

Проблема в том, что геокодер возвращает результат не сразу, а спустя какое-то время, поэтому сначала сделал так, отправляю сразу два запроса, через таймаут сравниваю значения. Но я так понял можно оптимизировать функцию использую Promise, т.е.

 

var pointcoords = center;
var promise = new ymaps.util.Promise();
promise.then(
    function (pointcoords) {
        console.log("поиск по строке");
        // поиск по строке 
        ymaps.geocode("Смоленск, " + street, {
            results: 1
        }).then(function (res) {
            if (res.geoObjects.getLength()) {
                var point = res.geoObjects.get(0);
                pointcoords = point.geometry.getCoordinates();
            }
        });
        return pointcoords;
    }).then(function (pointcoords) {
    // при необходимости делаем второй запрос
    if (pointcoords[0] == center[0] && pointcoords[1] == center[1]) {
        console.log("поиск в квадрате");
        // точки для области 
        var p1 = ymaps.coordSystem.geo.solveDirectProblem(center, dir1, 10000).endPoint;
        var p2 = ymaps.coordSystem.geo.solveDirectProblem(center, dir2, 10000).endPoint;
        ymaps.geocode(street, {
            boundedBy: [p1, p2],
            results: 1,
            strictBounds: true
        }).then(function (res) {
            if (res.geoObjects.getLength()) {
                var point = res.geoObjects.get(0);
                pointcoords = point.geometry.getCoordinates();
            }
        });
    }
});
promise.resolve(pointcoords);

 

почему-то promise не отрабатывает первый запрос, подозрение, что из-за задержки ответа геокодера, первый запрос возвращает координаты центра вместо искомых... может ли promise избавить от использования settimeout()

.

Получение кратчайшего пути до МКАД

$
0
0

Добрый день.

Можно ли получить короткий путь до съезда МКАД от МО.

Есть адрес МО нужно пользователю показать маршрут до ближайшего съезда МКАД.

Геометрически получается не правильно (МКАД очертить и получать ближайшие точки)

Загнать все съезды в массив и для каждого маршрута получать расстояние - не получается, потому что ответы от сервера приходят неизвестно когда и массив получается пустой.

Рабочий вариант - через PHP и curl запрашивать Router.xml и сравнивать результаты, только здесь нужно 1 раз в пару дней обновлять token, который не известно как выдается (только через результат работы в браузере)

 

Вопросы:

1. Есть ли реализация у Яндекс получение маршрута до ближайшего съезда МКАД

2. Как в javascript получить несколько маршрутов(~110) и сравнить их растояния и отобразить наименьший

3. Как получить token для Карт (OAuth авторизация существует?)

.

Геокодер. Почему различные ответы при написании "г.п." и "городское поселение"

Переключение 2.0 и 2.0-stable


Как узнать что тайлы загрузились?

$
0
0

Здравствуйте.

 

Я перемещаю карту на нужное место методом setBounds(). Она начинает подгружать тайлы. Как узнать, что все видимые тайлы загрузились? Не визуально, а программно :)

 

Спасибо.

.

Gateway Time-out

$
0
0

Всем привет, при попытке загрузить файл Kmlполучаю сообщение Gateway Time-out вес файла 2,7Мб, при этом файл весом в 2,6Мб загрузился нормально

что может быть проблемой (неужели превышен лимит во времени)?

тут пример файла https://yadi.sk/d/Cslw8xHUSwRD5

.

Определение координат центра следующего прямоугольника по краям текущего

$
0
0

Надо "прыгнуть" из левого прямоугольника в правый. Чтобы это сделать надо знать координаты центра нового многоугольника. По какой формуле вычислить? 
Геометрию уже не помню... 

http://storage9.static.itmages.ru/i/14/0609/h_1402316521_4585937_4330d2f845.jpg

Тут нарисаовал "прямую", но не понятно по какой формуле она

вычислена

http://storage6.static.itmages.ru/i/14/0611/h_1402456792_9144639_fdf2ddd5c0.jpg 

.

Применение метода disableDragging();

$
0
0

Доброго времени суток. Я новичок в использовании API. Я втроил кару и решил запретить её перемещение. Прочитал, что для этого нам необходимо применить метод disableDragging();. Только возникает вопрос как?)

 

ymaps.ready(init);

var myMap;

function init(){     

 myMap = new ymaps.Map ("map_uch_forestry", {

 center: [54.91438, 37.41392],

 zoom: 10,

 controls: []

});

 

myMap.disableDragging();

 

Так не работает.

Спасибо за помощь).

.

Смена placeholder в searchControl

$
0
0

Добрый день.

 

Возможно ли как-нибудь способом заменить надпись, чтобы не писать свой элемент поиска. Смотрел опции в API, сам не нашел. 

 

Кто как выходит из ситуации?

.
Viewing all 7380 articles
Browse latest View live