1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/gis-luq-RuntimeViewer3D

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

RuntimeViewer

Разработанный на основе ArcGIS Runtime 100.x мобильный приложение-фреймворк

Компонентный фреймворк разработки, совместимый с различными устройствами, такими как смартфон и планшет.

Планшетный режим

Мобильный режим

Как быстро запустить приложение?

  • Используйте Git для клонирования проекта и импорта его в Android Studio
  • Копируйте папку /readme/structure примера приложения RuntimeViewer в корневую директорию хранения устройства (так как данные примера приложения являются офлайн)
  • Запустите приложение

Инструкция использования фреймворка

Проект использует плагинную архитектуру, описание структуры файлов приведено ниже

  • Base — базовый класс приложения
  • BMOD — модуль бизнес-функциональности
    • MapModule — модуль карт
    • ProjectsModule — модуль списка проектов
    • RootAct — начальная страница приложения
    • SystemModule — модуль системных функций
  • Common — общие функции
  • Config — конфигурационные данные приложения, начальные данные
  • EventBus — центр событий
  • GlobalApp — глобальная информация приложения Application
  • Permission — управление правами доступа
  • Utils — вспомогательные классы
  • Widget — папка компонентов функциональности
    • Common — общие функции
    • LayerManagerWidget — управление слоями
    • ……Инструкция конфигурационных файлов ==============
<?xml version="1.0" ?>
<!--
Файл конфигурации приложения
-->
<configuration>
    <!--Разрешение Runtime-->
    <runtimekey license="информация лицензии"/>

    <!--Системная рабочая директория-->
    <workspace path="/RuntimeViewer"/>

    <!--Контейнер компонентов widget-->
    <widgetcontainer>
        <widget label="Управление слоями" classname="com.gisluq.runtimeviewer.Widgets.LayerManagerWidget.LayerManagerWidget" config=""/>
        <widget label="Информация о проектах" classname="com.gisluq.runtimeviewer.Widgets.ProjectInfoWidget.ProjectInfoWidget" config=""/>
        <widget label="Привет, мир!" classname="com.gisluq.runtimeviewer.Widgets.HelloWorldWidget" config=""/>
    </widgetcontainer>
</configuration>

Объяснение:

  1. Для runtimekey значение license должно содержать информацию о лицензии ArcGIS Runtime 10.x, которую следует получить и заменить.
  2. Для workspace значение path должно указывать на системную рабочую директорию, после чего приложение автоматически инициализирует структуру файлов.
  3. Модуль widget, метка должен содержать имя приложения, classname — имя соответствующего класса компонента, который будет автоматически инициализирован при загрузке. Это поле обязательно для заполнения.

Фреймворк функциональных модулей разработки

Разработка виджета

1. Создание класса компонента виджета

Создайте файл HelloWorldWidget.java в директории Widgets со следующим содержимым.
Рекомендация по названию класса: [Название бизнеса] + Widget.java, чтобы обеспечить единообразие.```java /**

  • Example component

  • Created by gis-luq on 2018/3/10. */ public class HelloWorldWidget extends BaseWidget {

    public View mWidgetView = null;

    /**

    • Operations performed when the panel of the component opens

    • When the widget button is pressed, WidgetManager calls this method to start the logic after opening the panel.

    • The "inactive" method will be called upon closing the panel. */ @Override public void active() {

      super.active(); // By default, it must be called to ensure proper execution of inactive() when switching to another widget super.showWidget(mWidgetView); // Loading and displaying the UI super.showMessageBox(super.name); // Displaying the name of the component }

    /**

    • Initialization of the widget component, including setting up the content view and logic
    • This method is executed after the application has finished loading */ @Override public void create() { LayoutInflater mLayoutInflater = LayoutInflater.from(super.context); // Setting up the content display for the widget component mWidgetView = mLayoutInflater.inflate(R.layout.widget_view_helloworld, null); }

    /**

    • Operations performed when the panel of the component closes
    • The "inactive" method will be called upon closing the panel */ @Override public void inactive() { super.inactive(); } }

#### 2. Создание UI компонента виджета
Создайте файл `widget_view_helloworld.xml` в папке layout вашего Android проекта с указанным ниже содержимым.

```xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
```    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:padding="10dp">

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Информация" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingTop="5dp">
```            <Button
                style="?android:attr/buttonStyleSmall"
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:text="Целевое позиционирование"
                android:id="@+id/widget_view_helloworld_button2"
                android:background="@drawable/ic_touch_btn"
                android:textColor="@color/white" />
        </RelativeLayout>
    </LinearLayout>
</LinearLayout>

3. Настройте файл конфигурации

Добавьте следующий контент в assets/config.xml:

<widget label="Привет, мир!" classname="com.gisluq.runtimeviewer.Widgets.HelloWorldWidget" config=""/>

Общее представление виджета

Операция объекта Mapview виджетом

Каждый виджет расширяет родительский класс BaseWidget. Используйте следующие методы, чтобы получить доступ к объекту mapview и выполнять операции над ним.

super.sceneView.getScene().getBasemap().getBaseLayers();
super.sceneView.getScene().getOperationalLayers();

Коммуникация виджетов

Коммуникацию между виджетами реализует EventBus 3.0. Базовое использование представлено ниже:

1. Подписаться

EventBus.getDefault().register(this); //Подписаться

2. Отписаться

EventBus.getDefault().unregister(this); //Отписаться
```#### 3. Отправить событие
```java
EventBus.getDefault().post(new MessageEvent("Описание события"));

4. Обработка события подписки

@Subscribe(threadMode = ThreadMode.MAIN) //Выполняется в UI потоке
public void onDataSynEvent(MessageEvent event) {
    Log.e(TAG, "event---->" + event.getMessage());
    // Выполнение различных методов в зависимости от содержимого сообщения
}

Параметр threadMode имеет четыре значения:

  • MAIN — UI главный поток
  • BACKGROUND — фоновый поток
  • POSTING — тот же поток, что и отправитель
  • ASYNC — асинхронный поток

5. Приоритет события подписки

Приоритет события аналогичен приоритету широковещательной рассылки, то есть события с более высоким приоритетом получают сообщение первыми.

@Subscribe(threadMode = ThreadMode.MAIN, priority = 100) //Выполняется в UI потоке с приоритетом 100
public void onDataSynEvent(DataSynEvent event) {
    Log.e(TAG, "event---->" + event.getCount());
}

Дополнительные материалы можно найти здесь: https://www.cnblogs.com/whoislcj/p/5595714.html

Пример виджета

Управление слоями LayerManagerWidget

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

Поддерживаемые типы данных основного слоя

  • tpk — LocalTiledPackage
  • серверные срезы — LocalServerCache
  • tiff — LocalGeoTIFF
  • онлайн-срезы сервиса — OnlineTiledMapServiceLayer
  • онлайн-динамический слой — OnlineDynamicMapServiceLayer##### Основной слой данных загружается через basemap.json, который находится в корневой директории системы /RuntimeViewer/XXX проекта/BaseMap/basemap.json. Контент файла представлен ниже, а связанные файлы основного слоя должны находиться в той же папке, где расположен basemap.json.
{
    "baselayers": [
		{
            "name": "Цветной китайский картографический слой с интересными местами",
            "type": "OnlineTiledMapServiceLayer",
            "path": "http://map.geoq.cn/arcgis/rest/services/ChinaOnlineCommunity/MapServer",
            "layerIndex": bkz,
            "visible": true,
            "opacity": 1
        },
		{
            "name": "Ночной синий китайский картографический слой без интересных мест",
            "type": "OnlineTiledMapServiceLayer",
            "path": "http://map.geoq.cn/arcgis/rest/services/ChinaOnlineStreetPurplishBlue/MapServer",
            "layerIndex": bkz,
            "visible": false,
            "opacity": 1
        }
    ]
}

Исправленный текст:

##### Основной слой данных загружается через basemap.json, который находится в корневой директории системы /RuntimeViewer/XXX проекта/BaseMap/basemap.json.
Контент файла представлен ниже, а связанные файлы основного слоя должны находиться в той же папке, где расположен basemap.json.
```json
{
    "baselayers": [
		{
            "name": "Цветной китайский картографический слой с интересными местами",
            "type": "OnlineTiledMapServiceLayer",
            "path": "http://map.geoq.cn/arcgis/rest/services/ChinaOnlineCommunity/MapServer",
            "layerIndex": 2,
            "visible": true,
            "opacity": 1
        },
		{
            "name": "Ночной синий китайский картографический слой без интересных мест",
            "type": "OnlineTiledMapServiceLayer",
            "path": "http://map.geoq.cn/arcgis/rest/services/ChinaOnlineStreetPurplishBlue/MapServer",
            "layerIndex": 3,
            "visible": false,
            "opacity": 1
        }
    ]
}

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Мобильная прикладная платформа (трёхмерная), разработанная на основе ArcGIS Runtime 100.x. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/gis-luq-RuntimeViewer3D.git
git@api.gitlife.ru:oschina-mirror/gis-luq-RuntimeViewer3D.git
oschina-mirror
gis-luq-RuntimeViewer3D
gis-luq-RuntimeViewer3D
master