<?xml version="1.0" encoding="UTF-8"?>
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="JATS-archive-oasis-article1-4.xsd" article-type="research-article" dtd-version="1.4" xml:lang="ru">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>Журнал Современные наукоемкие технологии</journal-title>
      </journal-title-group>
      <issn>1812-7320</issn>
      <publisher>
        <publisher-name>Общество с ограниченной ответственностью &amp;quot;Издательский Дом &amp;quot;Академия Естествознания&amp;quot;</publisher-name>
      </publisher>
    </journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.17513/snt.39555</article-id>
      <article-id pub-id-type="publisher-id">ART-39555</article-id>
      <title-group>
        <article-title>Разработка библиотеки для отображения векторных карт на Flutter</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <name-alternatives>
            <name xml:lang="ru">
              <surname>Чуриков</surname>
              <given-names>Е.А.</given-names>
            </name>
          </name-alternatives>
          <name-alternatives>
            <name xml:lang="en">
              <surname>Churikov</surname>
              <given-names>E.A.</given-names>
            </name>
          </name-alternatives>
          <email>churikov.egor@bk.ru</email>
          <xref ref-type="aff" rid="aff1"/>
        </contrib>
        <contrib contrib-type="author">
          <name-alternatives>
            <name xml:lang="ru">
              <surname>Зудилова</surname>
              <given-names>Т.В.</given-names>
            </name>
          </name-alternatives>
          <name-alternatives>
            <name xml:lang="en">
              <surname>Zudilova</surname>
              <given-names>T.V.</given-names>
            </name>
          </name-alternatives>
          <email>zudilova@ifmo.spb.ru</email>
          <xref ref-type="aff" rid="aff1"/>
        </contrib>
        <contrib contrib-type="author">
          <name-alternatives>
            <name xml:lang="ru">
              <surname>Ананченко</surname>
              <given-names>И.В.</given-names>
            </name>
          </name-alternatives>
          <name-alternatives>
            <name xml:lang="en">
              <surname>Ananchenko</surname>
              <given-names>I.V.</given-names>
            </name>
          </name-alternatives>
          <email>anantchenko@yandex.ru</email>
          <xref ref-type="aff" rid="aff1"/>
        </contrib>
        <contrib contrib-type="author">
          <name-alternatives>
            <name xml:lang="ru">
              <surname>Иванов</surname>
              <given-names>С.Е.</given-names>
            </name>
          </name-alternatives>
          <name-alternatives>
            <name xml:lang="en">
              <surname>Ivanov</surname>
              <given-names>S.E.</given-names>
            </name>
          </name-alternatives>
          <email>serg_ie@mail.ru</email>
          <xref ref-type="aff" rid="aff1"/>
        </contrib>
      </contrib-group>
      <aff id="aff1">
        <institution xml:lang="ru">ФГАОУ ВО «Национальный исследовательский университет ИТМО»</institution>
        <institution xml:lang="en">ITMO University</institution>
      </aff>
      <pub-date date-type="pub" iso-8601-date="2023-03-04">
        <day>04</day>
        <month>03</month>
        <year>2023</year>
      </pub-date>
      <issue>3</issue>
      <fpage>51</fpage>
      <lpage>56</lpage>
      <permissions>
        <license xlink:href="https://creativecommons.org/licenses/by/4.0/">
          <license-p>This is an open-access article distributed under the terms of the CC BY 4.0 license.</license-p>
        </license>
      </permissions>
      <self-uri content-type="url" hreflang="ru">https://top-technologies.ru/article/view?id=39555</self-uri>
      <abstract xml:lang="ru" lang-variant="original" lang-source="author">
        <p>Рассматривается процесс разработки библиотеки для кроссплатформенного фреймворка Flutter, которая позволяет отображать интерактивные векторные карты и объекты на них. Приводятся причины необходимости векторных карт в отдельных случаях, выявляются ключевые и вторичные требования к планируемой библиотеке, проводится сравнительный анализ существующих на данный момент решений (как пакетов – библиотек, написанных на чистом Flutter и Dart, так и плагинов – библиотек, обращающихся к нативному коду) по реализации библиотек векторных карт на фреймворке Flutter на основе выявленных требований. Приведено описание реализации собственной библиотеки на базе одного из существующих на рынке решений с открытым исходным кодом. Демонстрируемые примеры реализации включают в себя набор методов класса контроллера, необходимых для дальнейшей работы с библиотекой, представлена реализация полностью кастомизируемых маркеров как на основе Flutter-виджетов, так и посредством передачи растрового изображения из файлов проекта или по URL. Созданная библиотека для отображения интерактивных векторных карт может использоваться в различных Flutter-проектах, предполагающих наличие интерактивных карт и создающихся для платформ iOS, Android и Web. Рассматриваемое решение в настоящее время используется в мобильном приложении «Цифровое Приморье», найти и установить которое можно в App Store и Google Play. Обзорно рассматривается процесс анимированного перемещения маркера по карте между двумя географическими координатами формата LatLng. Представлены планы развития и модификации рассматриваемой библиотеки и варианты ее практического применения на реальных Flutter-проектах для операционных систем iOS и Android.</p>
      </abstract>
      <abstract xml:lang="en" lang-variant="translation" lang-source="translator">
        <p>The process of developing a library for the cross-platform framework Flutter, which allows you to display interactive vector maps and objects on them, is considered. The reasons for the need for vector maps in some cases are given, key and secondary requirements for the planned library are identified, a comparative analysis of currently existing solutions (both library packages written in pure Flutter and Dart, and plug–ins libraries accessing native code) for the implementation of vector map libraries on the Flutter framework based on identified requirements. The article describes the implementation of its own library based on one of the open-source solutions available on the market. The demonstrated implementation examples include a set of controller class methods necessary for further work with the library, the implementation of fully customized markers is presented both on the basis of Flutter widgets and by transferring a bitmap image from project files or by URL. The created library for displaying interactive vector maps can be used in various Flutter projects involving interactive maps and created for iOS, Android and Web platforms. The solution in question is currently being used in the “Digital Primorye” mobile application, which can be found and installed in the App Store and Google Play. The process of animated marker movement on the map between two geographical coordinates of the LatLng format is reviewed. Plans for the development and modification of the library under consideration and options for its practical application on real Flutter projects for iOS and Android operating systems are presented.</p>
      </abstract>
      <kwd-group xml:lang="ru">
        <kwd>векторные карты</kwd>
        <kwd>библиотека</kwd>
        <kwd>flutter</kwd>
        <kwd>mobile</kwd>
        <kwd>android</kwd>
        <kwd>ios</kwd>
        <kwd>mapbox</kwd>
        <kwd>maplibre</kwd>
      </kwd-group>
      <kwd-group xml:lang="en">
        <kwd>vector maps</kwd>
        <kwd>library</kwd>
        <kwd>flutter</kwd>
        <kwd>mobile</kwd>
        <kwd>android</kwd>
        <kwd>ios</kwd>
        <kwd>mapbox</kwd>
        <kwd>maplibre</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <back>
    <ref-list>
      <ref>
        <note>
          <p>1. Чуриков Е.А., Зудилова Т.В., Ананченко И.В., Осипов Н.А., Иванов С.Е., Осетрова И.С. Сравнение современных средств разработки мобильных приложений // Современные наукоемкие технологии. 2022. № 12-1. С. 82-87.</p>
        </note>
      </ref>
      <ref>
        <note>
          <p>2. Top Flutter Geolocation and Maps packages // Flutter Gems. URL: https://fluttergems.dev/geolocation-maps/ (дата обращения: 22.02.2023).</p>
        </note>
      </ref>
      <ref>
        <note>
          <p>3. Biessek A. Flutter for Beginners: An introductory guide to building cross-platform mobile applications with Flutter 2.5 and Dart. 2-е изд. г. Бирмингем, Объединенное Королевство Великобритании: Packt Publishing, 2021. 370 с.</p>
        </note>
      </ref>
      <ref>
        <note>
          <p>4. fwd_map // GitHub. URL: https://github.com/Churikov0112/fwd_map (дата обращения: 20.02.2023).</p>
        </note>
      </ref>
      <ref>
        <note>
          <p>5. Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship. London: Pearson, 2008. 464 с.</p>
        </note>
      </ref>
      <ref>
        <note>
          <p>6. Цифровое Приморье // App Store. URL: https://apps.apple.com/ru/app/цифровое-приморье/id1640251581 (дата обращения: 20.02.2023).</p>
        </note>
      </ref>
      <ref>
        <note>
          <p>7. Цифровое Приморье // Google Play. URL: https://play.google.com/store/apps/details?id=team.nineone.cp_app.prod&amp;hl=ru&amp;gl=US (дата обращения: 20.02.2023).</p>
        </note>
      </ref>
    </ref-list>
  </back>
</article>
