Рубрика «Яндекс API» - 9

Предисловие

Сколько живу рядом с миром технологий, всегда думал что есть ИТ элита — люди которые с закрытыми глазами пишут код, с легкостью могут в уме генерировать md5 и переписывать ядра unix. И, сказать по правде, я думал именно такие ребята работают в компании Яндекс. Мы очень удивились, что их детище под названием Яндекс.Касса находится в глубочайшем альфа тестировании. О некоторых проблемах, с которыми мы столкнулись и пути их решения в этой статье.
Читать полностью »

Сегодня наше приложение для интерактивного написания и редактирования текста голосом Диктовка появилось в AppStore и Google Play. Его главная задача — продемонстрировать часть всех новых возможностей наших технологий для распознавания и синтеза речи. Именно об этих технологиях и о том, чем они интересны и уникальны, я хочу рассказать в этом посте.

Новое распознавание и синтез речи от Яндекса - 1

Пара слов, чтобы вы понимали, о чём пойдёт речь. Яндекс уже давно предоставляет бесплатное мобильное API, которое можно использовать, например, для распознавания адресов и голосовых запросов к поиску. За этот год мы смогли довести его качество почти до того же уровня, на котором речь на эти темы распознают сами люди. И теперь мы делаем следующий шаг — модель для распознавания свободной речи на любую тему.

Кроме этого, наш синтез речи поддерживает некоторые эмоции. И, насколько нам известно, это пока первый коммерчески доступный синтез речи с такой возможностью.

Обо всём этом, а так же о некоторых других возможностях SpeechKit, включая активацию голосом, авторасстановку пунктуации с учётом артикуляции речи, распознавание смысловых объектов в речи, читайте ниже.
Читать полностью »

Перед разработчикам, которые используют API Яндекс.Карт, довольно часто встаёт задача отобразить много объектов на карте. Действительно много — порядка 10 000. Причем эта задача актуальна и для нас самих — попробуйте поискать аптеки на Яндексе. На первый взгляд кажется: «А в чем собственно проблема? Бери да показывай». Но пока не начнешь этим заниматься, не поймешь, что проблем на самом деле целый вагон.

ObjectManager в API Яндекс.Карт. Как быстро отрисовать 10000 меток на карте и не затормозить всё вокруг - 1

Вопросы по большому количеству меток с завидной регулярностью поступают в наш клуб и техподдержку. Кто все эти люди? Кому может быть интересно показать на карте больше 10 меток? В этом посте я подробно рассмотрю весь вагон проблем и расскажу, как в API появились инструменты, помогающие разработчикам оптимально показать большое количество объектов на карте.
Читать полностью »

В API Яндекс.Карт есть средства для загрузки географических данных в формате XML. API поддерживает карты в двух форматах: YMapsML и KML. В документации по технологиям Яндекса есть пример, илюстрирующий работу с этим форматами.

Глядя на этот пример, можно предположить, что с точки зрения API оба формата эквивалентны, и работа с ними ничем не отличается. Тем более Яндекс предоставляет конструктор карт, в котором каждой карте автоматически назначаются ссылки на оба формата. Эти ссылки отличаются только суффиксом. Карта в формате YMapsML оканчивается на символ /, а адрес той же карты в формате KML на конце содержит символы ".kml".

Независимо от формата XML загрузка геообъектов будет выглядеть так:

var map = new ymaps.Map("map", {
    center: [-25.89, 135.32],
    zoom: 4,
    controls: ["zoomControl"]
});

var url = "http://maps.yandex.ru/export/usermaps/4c4r9MAwI8DLmJKv1H--R0_bvQmHNLDz/";

ymaps.geoXml.load(url).then(function (res) {
    map.geoObjects.add(res.geoObjects);
});

Но если нам понадобится что-то сделать с объектами при загрузке, то мы обнаружим, что формат имеет значение. Предположим, что мы хотим поменять цвет контура у объекта с определенным именем.

Пример загрузки YMapsML

var url = "http://maps.yandex.ru/export/usermaps/4c4r9MAwI8DLmJKv1H--R0_bvQmHNLDz/";

ymaps.geoXml.load(url).then(function (res) {
    res.geoObjects.each(function (obj) {
        if (obj.properties.get("name") == "Бассов пролив") {
            obj.options.set("strokeColor", "0066ffff");
        }
    });
    map.geoObjects.add(res.geoObjects);
});

Оказывается, что если мы заменим адрес на формат KML, то данный код работать не будет, потому что коллекция объектов, загруженная из формата KML отличается от той, что получается при загрузке YMapsML. При загрузке KML получается коллекция объектов, состоящая из одного геобъекта, который сам является коллекцией. И вот этот вложенный объект уже содержит геообъекты, нарисованные на карте.

Поэтому для обработки коллекции, загруженной из KML надо написать вот такой код:

Пример загрузки KML

var url = "http://maps.yandex.ru/export/usermaps/4c4r9MAwI8DLmJKv1H--R0_bvQmHNLDz.kml";

ymaps.geoXml.load(url).then(function (res) {
    res.geoObjects.each(function (obj) {
        obj.each(function (nested) {
            if (nested.properties.get("name") == "Бассов пролив") {
                nested.options.set("strokeColor", "0066ffff");
            }
        });
    });
    map.geoObjects.add(res.geoObjects);
});

Читать полностью »

У Яндекс.Карт давно просили сделать средство для визуализации данных с помощью тепловых карт — и мы наконец его сделали. Если вы — один из тех, кому это было очень нужно, можете переходить сразу к чтению документации на гитхабе. Если же вы ещё не знаете, нужно ли это вам, — можете потратить немного времени, чтобы почитать статью про то, что такое тепловые карты, как они генерируются на клиенте, и как мы совместили генерацию тепловой карты с картой географической.

На Яндекс.Картах теперь можно создавать тепловые карты
Отображение географических точек из Википедии

Что такое тепловые карты, и зачем они нужны

Итак, обо всем по порядку. Для начала давайте определимся, что такое тепловые карты и с чем их едят? Как подсказывает мне капитан очевидность википедия, тепловые карты (они же теплокарты, они же heatmap) — это графическое представление данных, где дополнительные переменные отображаются при помощи цвета. Такой вид отображения бывает очень удобным. Например, им часто пользуются веб-аналитики, чтобы увидеть наиболее активные части страниц сайта.
Читать полностью »

Всем привет! Меня зовут Клеменс Ауэр, я занимаюсь разработкой десктопной версии Яндекс.Диска. Когда появился новый REST API, я был настолько впечатлен открывшимися возможностями, что в свободное время начал писать на его основе SDK для нового языка Swift. Я решил рассказать о своем опыте работы новым API и выступил с небольшим докладом о том, как просто начать с его помощью писать собственное приложение. Доклад был на английском, но по-русски я тоже говорю, хотя не так хорошо. На основе своего выступления я подготовил сегодняшний пост, с которым мне помогали мои коллеги.

Начать я хотел бы с некоторых общих вещей о Диске — скорее всего, большую часть из этого вы уже слышали. Затем я расскажу, почему же меня так впечатлил новый API и чем он отличается от WebDAV. Ну а ближе к концу я поделюсь опытом того, как начать разрабатывать под новый API, и разберу несколько примеров своего кода. Его будет совсем немного, но с новым API, чтобы заставить что-то работать, код писать практически не требуется.
Читать полностью »

image
Неожиданно пришел приказ — написать приложение под iOS, использующее Yandex Speechkit для распознавания русской речи. Точнее, для распознавания коротких фраз на произвольную тему. Цель задания — сравнить успехи яндекс-двигателя с нашим, саровским движком.

Приказали — сделал следующие шаги.

  1. Зашел на yandex.ru в раздел распознавание речи
  2. Зарегистрировался и получил ключ, он же API_KEY
  3. Отправил письмо в yandex с просьбой активировать ключ

На вопрос, как будет использоваться ключ, я ответил, что выпускаю карточную игру Diablo 3-13, управляемую голосом.

Через два дня ключ активировали. Я поначалу нетерпеливо бил копытом, затем понял, что в yandex работают вдумчивые, синхронные сотрудники.
В своем приложении в дальнейшем я также отказался от асинхронных запросов к yandex.api.
Читать полностью »

В продолжении поста о погоде «Яндекс.Погода для сайта в деталях». Прочитав данный пост, я пришел к выводу, что тема еще актуальна, и хотел бы дополнить выше упомянутую статью своими наработками.

И снова Яндекс.Погода для сайта: время суток, направление ветра и прочие параметрыЧитать полностью »

Есть у меня один проект долгострой, в котором использую Yandex Dictionary Api. В процессе разработки решил поделиться опытом создания асинхронного интерфейса к интернет-сервису.

Если у вас есть интерес, как реализовать такой клиент с помощью Qt C++, то этот пост для вас.

Я не стал заострять внимания на тех моментах Qt, которые и так хорошо описаны. В статье я попытался раскрыть, как создавать асинхронные классы в Qt на базе конкретного примера.

Пример программы

Программа посылает на сервер Yandex Dictioanary Api запросы на перевод слов и затем, по мере поступления ответов от сервиса, выводит их на экран.

#include "Precompiled.h"
#include <QtYandexApi/QtYandexApi.h>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QtYandexDictionary yandexDictionary(QtYandexApi::getYandexKeyFromFile("dictKey"));
    QObject::connect(&yandexDictionary, &QtYandexDictionary::translated,
                     [](const QtYaWordTranslation& wordTranslation)
    {
        if (wordTranslation.isError())
            qDebug() << wordTranslation.errorString();
        else {
            QtYaWord wordForTranslation = wordTranslation.wordForTranslation();
            QtYaTranslatedWord translatedWord = wordTranslation.translatedWord();
            qDebug() << "n***************";
            qDebug() << "Word: " << wordForTranslation.wordName();
            qDebug() << "Direction: " << wordForTranslation.fromLanguage() << "-" << wordForTranslation.toLanguage();
            qDebug() << "Main translation: " << translatedWord.mainTranslation();
            qDebug() << "Synonyms: " << translatedWord.synonyms();
            qDebug() << "Examples: ";
            for (const auto& example : translatedWord.examples()) {
                qDebug() << example.first << "-" << example.second;
            }
        }
    });

    QStringList russianWords, englishWords;
    russianWords << "дом" << "время" << "легенда" << "ключ" << "клавиатура" << "монитор" << "случай" << "один" << "два" << "три" << "четыре" << "пять" << "шесть";
    englishWords << "home" << "time" << "legend" << "key" << "keyboard" << "monitor" << "infection" << "one" << "two" << "three" << "four" << "five" << "success";

    for (const QString& word : russianWords) {
        yandexDictionary.translate(QtYaWord(word, "ru", "en"));
    }
    for (const QString& word : englishWords) {
        yandexDictionary.translate(QtYaWord(word, "en", "ru"));
    }

    return a.exec();
}

Читать полностью »

Доброго времени суток. Этот пост будет написан на основе Яндекс.ТвояПогода с тем отличием, что здесь будет пролит свет на некоторые данные возвращаемых сервисом Яндекс.Погода, и, будет чуть больше кода.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js