Этот компонент карты писался в течение многих лет. Первоначальный дизайн был относительно грубым. Вначале он был предназначен только для удовлетворения потребностей проекта и не учитывал слишком большую масштабируемость. Например, он изначально был написан в соответствии с кодом. в Baidu Map. После большого развития за последние несколько лет практические приложения на сайте, а также большое количество предложений по улучшению, выдвинутых пользователями, постепенно привели к идее полного переписывания соответствующих кодов, связанных с картами. , такие как проектирование подклассов базовых классов и различные функциональные интерфейсы, взаимодействующие через функции js вместо написания большого количества кода на веб-странице.
Предыдущие примеры карт были относительно грубыми в написании. Я написал все, что думал. Функции были серьезно нагромождены, что делало их более раздутыми. Демонстрация функций в интерфейсе также была относительно неинтуитивной, поэтому я взял. время их реконструировать все это время, включая все примеры, подвергшиеся рефакторингу. Для слишком большого количества демонстрационных примеров создается отдельный каталог для хранения кода каждого небольшого примера, и код разбивается, что делает изучение функций очень удобным. из этой группы раньше была куча кодов-примеров.Если они скопились в классе, то на их поиск потребуется время. Самое неприятное для программистов — это то, что в файле кода их слишком много. можно разделить на группы, если это возможно.
2. Функциональные особенности
Поддерживает несколько ядер карт, по умолчанию использует карту Baidu.
Он поддерживает одновременно режимы онлайн-карты и офлайн-карты. Офлайн-карты удобны для использования в сценариях, не подключенных к Интернету.
Поддерживает активацию различных элементов управления картой, таких как навигация по карте, типы карт, миниатюры, масштабы, панорамная навигация, условия дорожного движения в реальном времени, инструменты рисования, панели результатов и т. д.
Поддерживает динамическое включение и отключение нескольких функций карты, таких как перетаскивание карты, работа с клавиатурой, масштабирование колесом, двойной щелчок для увеличения и масштабирование карты.
Предоставляет многочисленные интерфейсы функций js для взаимодействия с чрезвычайно богатыми параметрами, охватывающими все мыслимые требования сценариев приложений.
Единый механизм сигналов и слотов, результаты на карте отправляются как единый сигнал и различаются по типу после получения.
Поддерживает взаимодействие с картой, например нажатие мыши для получения широты и долготы соответствующего местоположения. Щелкните точку метки, чтобы отобразить информацию о соответствующей точке.
Поддерживает добавление аннотаций, удаление аннотаций, перемещение аннотаций и очистку аннотаций.
Точки маркировки могут указывать изображения значков, задавать углы поворота и содержать подсказки в виде форматированного текста.
События меток точек поддерживают уведомление о сигнале одним щелчком мыши и всплывающие окна для отображения информации.
Предоставляет интерфейсы адрес-координата и координата-адрес.
Поддерживает различное графическое рисование, включая линейные диаграммы, многоугольники, прямоугольники, круги, дуги и т. д.
Можно отобразить плавающую панель инструментов для рисования, позволяющую напрямую рисовать линии, отмечать точки, прямоугольники, круги и т. д. на карте.
Поддерживает поиск по различным областям, таким как прямоугольные и круглые области, и может отображать результаты поиска на карте на основе соответствия ключевых слов.
Данные о точках границ административного округа в автономном режиме можно добавлять динамически. Вы можете выполнить поиск административных единиц и получить данные о граничных точках для этой территории. Данные можно сохранить в файл для автономного использования.
Поддерживает функцию агрегирования точек: несколько маленьких точек меток объединяются в одну большую точку меток, чтобы предотвратить недружественное взаимодействие, вызванное плотными точками.
Можно добавить большое количество точек, и можно щелкнуть каждую точку, чтобы получить соответствующие координаты и информацию.
Вся информация о покрытии, такая как отмеченные точки, прямоугольники, многоугольники, линейные диаграммы и т. д., может быть получена активно.
Поддерживает планирование маршрутов, включая автобусные маршруты, маршруты для самостоятельного вождения, пешеходные и велосипедные маршруты. Различные запросы поддерживают разные стратегии, включая минимальное время, минимальные пересадки и отсутствие надземных маршрутов.
Результаты планирования пути отображаются на карте, а также можно получить набор координат точки пути. Эти данные можно сохранить в файл, чтобы их можно было отправить роботу или дрону для навигации и траекторного движения.
Можно установить различные виды карты, такие как карта улиц, спутниковая карта и гибридная карта.
Могут быть установлены различные стили, такие как темно-синий, травянисто-зеленый и другие стили.
Предоставляет модуль загрузки автономных карт. Вы можете выбирать различные ядра карт, такие как Baidu Maps или Google Maps, различные типы карт, такие как загрузка карт улиц или спутниковых карт, различные уровни карт и чрезвычайно быструю многопоточную загрузку.
В строке таблицы отображается ход загрузки соответствующего фрагмента в режиме реального времени, включая время ожидания загрузки и количество повторных попыток. При завершении загрузки каждого фрагмента отправляется сигнальное уведомление, а в параметрах указывается время загрузки.
Предоставляет модуль загрузки контурных карт провинций и городов для автоматической загрузки контурных карт каждого региона и сохранения их в файлах сценариев или текстовых файлах.
Поддерживает ручную настройку границ контуров различных областей. После настройки можно активно получить скорректированный набор граничных точек.
Предоставляет примеры динамических точек, вручную выбирает точки на карте и добавляет метки с настраиваемой информацией, такой как скорость и время.
Предоставляет примеры массивных точек, добавляет точки надписей, агрегирование точек и групповые точки. Используется для проверки максимальной производительности точки, поддерживаемой в среде.
Поддерживает преобразование координат GPS и предоставляет как онлайн, так и оффлайн методы. Обычно устройство получает стандартные координаты GPS, которые необходимо преобразовать в координаты Baidu на картах Baidu.
Приведен пример динамической траектории. После нажатия мыши на карте для выбора начальной и конечной точек выполняется запрос маршрута, получаются точки траектории пути, а таймер моделирует движение по траектории. Данные можно фильтровать, чтобы отфильтровать чрезмерные путевые точки до заданного количества точек.
Содержит пример воспроизведения трека, который можно воспроизвести в соответствии с указанным списком точек трека. Данные точек трека также можно импортировать для воспроизведения. Он также поддерживает воспроизведение треков на картах улиц, спутниковых картах и смешанных картах.
Предоставляет примеры провинциальных и муниципальных региональных карт с использованием компонента echart, а также поддерживает карты мигающих точек, карты миграции, региональные карты, карты мира, информационные панели и т. д. Вы можете установить различные цвета, такие как заголовок, подсказка, цвет фона, цвет текста, цвет линии, цвет области и т. д.
Примеры региональных карт провинций и городов, встроенная карта мира, национальная карта, карта провинции, карта региона с точностью до округа, все карты можно использовать в автономном режиме. Вы можете установить имя, значение, долготу и широту города.
Встроенные универсальные компоненты браузера, поддержка webkit/webengine/miniblink и других ядер. Содержит примеры элементов управления веб-страницами для демонстрации открытия веб-страниц и файлов локальных веб-страниц.
Поддерживает любую версию Qt, любую систему и любой компилятор.
3. Использование кода
Скопируйте два каталога компонентов core_map (компонент карты)/core_webview (компонент браузера) в каталог вашего проекта, заполните код импорта в pro и добавьте его в свой проект. $PWD/…/ представляет каталог верхнего уровня.
Например, чтобы включить ядро карты в pro, ядро карты Baidu требует добавления строки, определяющей DEFINES = baidux, в файл pro.
Импортируйте файлы заголовков.
#include"webview.h"#include"mapbase.h"
Создайте новую форму и поместите в нее макет. Рекомендуется использовать GridLayout, в котором можно разместить несколько элементов управления браузера.
Создайте экземпляр класса браузера и класса карты.