在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:RuntimeViewer3D开源软件地址:https://gitee.com/gis-luq/RuntimeViewer3D开源软件介绍:RuntimeViewer—— 基于ArcGIS Runtime 100.x开发的移动应用程序框架组件式开发框架,兼容手机、平板多种设备。 平板模式手机模式如何快速运行应用程序?
框架使用说明项目采用插件化结构设计,文件夹架构说明如下
配置文件说明<?xml version="1.0" ?><!--App配置文件--><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="Hello World" classname="com.gisluq.runtimeviewer.Widgets.HelloWorldWidget" config=""/> </widgetcontainer></configuration> 说明:
框架功能模块开发widget开发1. 创建widget组件类在Widgets目录下创建HelloWorldWidget.java文件并添加以下内容。建议类名的命名规则为 [业务名称+Widget].java 以保证统一。 /** * 测试用组件 * Created by gis-luq on 2018/3/10. */public class HelloWorldWidget extends BaseWidget { public View mWidgetView = null;// /** * 组件面板打开时,执行的操作 * 当点击widget按钮是, WidgetManager将会调用这个方法,面板打开后的代码逻辑. * 面板关闭将会调用 "inactive" 方法 */ @Override public void active() { super.active();//默认需要调用,以保证切换到其他widget时,本widget可以正确执行inactive()方法并关闭 super.showWidget(mWidgetView);//加载UI并显示 super.showMessageBox(super.name);//显示组件名称 } /** * widget组件的初始化操作,包括设置view内容,逻辑等 * 该方法在应用程序加载完成后执行 */ @Override public void create() { LayoutInflater mLayoutInflater = LayoutInflater.from(super.context); //设置widget组件显示内容 mWidgetView = mLayoutInflater.inflate(R.layout.widget_view_helloworld,null); } /** * 组件面板关闭时,执行的操作 * 面板关闭将会调用 "inactive" 方法 */ @Override public void inactive(){ super.inactive(); }} 2. 创建widget组件UI在android工程的layout文件夹下创建widget_view_helloworld.xml文件,并添加如下内容。 <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_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、配置文件中添加对应内容assents/config.xml下添加以下内容: <widget label="Hello World" classname="com.gisluq.runtimeviewer.Widgets.HelloWorldWidget" config=""/> widget整体效果 widget操作Mapview对象每一个widget扩展了父类BaseWidget。使用以下方法就可以获取并操作mapview对象中的内容。 super.sceneView.getScene().getBasemap().getBaseLayers(); super.sceneView.getScene().getOperationalLayers(); widget通信widget通信通过引入EventBus 3.0实现。基本使用如下: 1. 订阅EventBus.getDefault().register(this);//订阅 2. 解除订阅EventBus.getDefault().unregister(this);//解除订阅 3. 发布事件EventBus.getDefault().post(new MessageEvent("事件说明")); 4. 订阅事件处理@Subscribe(threadMode = ThreadMode.MAIN) //在ui线程执行public void onDataSynEvent(MessageEvent event) { Log.e(TAG, "event---->" + event.getMessage()); //通过判断message内容执行不同方法} ThreadMode总共四个:
5. 订阅事件优先级事件的优先级类似广播的优先级,优先级越高优先获得消息 @Subscribe(threadMode = ThreadMode.MAIN,priority = 100) //在ui线程执行 优先级100public void onDataSynEvent(DataSynEvent event) { Log.e(TAG, "event---->" + event.getCount());} 更多内容请参考EventBus 3.0详细相关材料:https://www.cnblogs.com/whoislcj/p/5595714.html Widget示例图层管理 LayerManagerWidget实现功能包括:基础底图数据加载、业务图层加载(目前仅支持Shapefile),图层开启关闭、透明度控制、图例等。 底图数据支持数据类型
底图数据通过加载basemap.json实现,系统根目录/RuntimeViewer/XXX工程/BaseMap/basemap.json文件内容如下,相关底图离线文件放在basemap.json所在文件夹即可。 { "baselayers": [ { "name": "彩色中文含兴趣点版中国基础地图", "type": "OnlineTiledMapServiceLayer", "path": "http://map.geoq.cn/arcgis/rest/services/ChinaOnlineCommunity/MapServer", "layerIndex": 2, "visable": true, "opacity": 1 }, { "name": "午夜蓝色中文不含兴趣点版中国基础地图", "type": "OnlineTiledMapServiceLayer", "path": "http://map.geoq.cn/arcgis/rest/services/ChinaOnlineStreetPurplishBlue/MapServer", "layerIndex": 3, "visable": false, "opacity": 1 } ]} |
请发表评论