1、popupWindow 
popupWindow = new PopupWindow(view, 611, 603);
tvUserName.setText(userName);
// 使其聚集
popupWindow.setFocusable(true);
// 设置允许在外点击消失
popupWindow.setOutsideTouchable(true);
popupWindow.setBackgroundDrawable(new BitmapDrawable());
WindowManager windowManager = (WindowManager) getActivity().getSystemService(Context.WINDOW_SERVICE);
// 显示的位置为:屏幕的宽度的一半-PopupWindow的高度的一半
int xPos = windowManager.getDefaultDisplay().getWidth() / 2- popupWindow.getWidth() / 2;
int yPos = windowManager.getDefaultDisplay().getHeight() / 2 - popupWindow.getHeight() / 2 - 200;
Log.i("coder", "xPos:" + xPos);
popupWindow.showAsDropDown(convertView, xPos, yPos);

2、Geometry查询

  private void queryPointbyGeometry(Point2D point2D, String dataSource, String dataSet) {com.supermap.services.components.commontypes.Geometry geometry = new com.supermap.services.components.commontypes.Geometry();com.supermap.services.components.commontypes.Point2D[] points = new com.supermap.services.components.commontypes.Point2D[]{new com.supermap.services.components.commontypes.Point2D(point2D.getX(), point2D.getY())};geometry.points = points;geometry.type = GeometryType.POINT;GetFeaturesResult result = excute_geometryQuery(Constant.QUERY_B13, geometry);if (result != null && result.featureCount > 0) {Feature[] features = result.features;String[] fieldValues = features[0].fieldValues;int id = Integer.parseInt(fieldValues[0]);int[] selectIds = new int[]{id};Layer3Ds layers = sceneControl.getScene().getLayers();for (int i = 0; i < layers.getCount(); i++) {if (layers.get(i).getName().equalsIgnoreCase("b13@udb13")) {Layer3D layer3D = layers.get(i);b13dosgFile = (Layer3DOSGBFile) layer3D;}}b13dosgFile.clearObjectsColor();b13dosgFile.setObjectsColor(selectIds, new Color(255, 0, 0));feature = features[0];handler.sendEmptyMessage(1000);} else {handler.sendEmptyMessage(1001);}}

3、点击item,scene里面高亮对应图形

  Feature feature = featureList.get(position);Geometry geometry = feature.geometry;Point2D[] points = geometry.points;
//                Log.e("msg", geometry.getCenter().x + "-" + geometry.getCenter().y + "-------");sceneControl.getScene().fly(new LookAt(points[0].x, points[0].y, 120), 1000, true);int[] ids = new int[]{feature.getID()};Layer3Ds layers = sceneControl.getScene().getLayers();for (int i = 0; i < layers.getCount(); i++) {if (layers.get(i).getName().equalsIgnoreCase("b13@udb13")) {Layer3D layer3D = layers.get(i);Layer3DOSGBFile layer3dosgbfile = (Layer3DOSGBFile) layer3D;layer3dosgbfile.clearObjectsColor();
//                        layer3dosgbfile.removeObjectsColor(selectIds);layer3dosgbfile.setObjectsColor(ids, new Color(255, 0, 0));}}

4、获取iServer里面的需要的字段

 public static final String FIELD_B13 = "http://192.168.5.229:8090/iserver/services/data-b13Mobile/rest/data/datasources/udb13/datasets/b13_polygon/fields.json"; /*** init field values*/private void initQueryFields() {OkHttpClient client = new OkHttpClient();Request build = new Request.Builder().url(Constant.FIELD_B13).get().build();Call call = client.newCall(build);call.enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {Log.e("msg", e.getMessage());}@Overridepublic void onResponse(Call call, Response response) throws IOException {if (response != null) {String string = response.body().string();Log.e("msg", string + "");try {JSONObject jsonObject = new JSONObject(string);JSONArray fieldNames = jsonObject.getJSONArray("fieldNames");queryFields = new String[fieldNames.length()];for (int i = 0; i < fieldNames.length(); i++) {Object o = fieldNames.get(i);Log.e("msg", o.toString() + "");queryFields[i] = o.toString();}handler.sendEmptyMessage(100);} catch (JSONException e) {e.printStackTrace();}}}});}

5、属性查询、渲染图层

    //b13的查询路径
public static final String QUERY_B13 = "http://192.168.5.229:8090/iserver/services/data-b13Mobile/rest/data";Layer3Ds layers = sceneControl.getScene().getLayers();for (int i = 0; i < layers.getCount(); i++) {if (layers.get(i).getName().equalsIgnoreCase("b13@udb13")) {Layer3D layer3D = layers.get(i);b13dosgFile = (Layer3DOSGBFile) layer3D;}}clearMapColor();queryPointbySQL("udb13", "b13_polygon", sql, Constant.QUERY_B13);
 /*** clear b13area model color*/private void clearMapColor() {b13dosgFile.clearObjectsColor();}/*** query b13 data url by sql*/private void queryPointbySQL(String dataSource, String dataSet, String sql, String url) {String[] dtnames = {dataSource + ":" + dataSet};QueryParameter parameter = new QueryParameter();parameter.attributeFilter = sql;GetFeaturesBySQLParameters sqlParameters = new GetFeaturesBySQLParameters();sqlParameters.datasetNames = dtnames;sqlParameters.queryParameter = parameter;GetFeaturesBySQLService sqlService = new GetFeaturesBySQLService(url);MyEventListener eventListener = new MyEventListener();sqlService.process(sqlParameters, eventListener);}/*** 要素请求服务监听*/class MyEventListener extends GetFeaturesByGeometryService.GetFeaturesEventListener {@Overridepublic void onGetFeaturesStatusChanged(Object o, EventStatus eventStatus) {if (EventStatus.PROCESS_COMPLETE.getValue() == eventStatus.getValue() && o != null) {featuresResult = (GetFeaturesResult) o;Feature[] featuresarr = featuresResult.features;for (int i = 0; i < featuresarr.length; i++) {featureList.add(featuresarr[i]);}/*for (int i = 0; i < features.length; i++) {String[] fieldNames = features[i].fieldNames;String[] fieldValues = features[i].fieldValues;}*/Log.i("查询:", "成功");handler.sendEmptyMessage(101);/*  queryAdapter = new Query2Adapter(getActivity(), feature);rcvQuery.setAdapter(queryAdapter);*/}}}

基于SuperMap的iMobile 3D总结(三)相关推荐

  1. 基于SuperMap的iMobile 3D开发总结(一)

    基于SuperMap iMobile9.1.1环境的App开发总结: 最近由于公司项目需求,需要做一个三维平台的移动端App,超图在这方面API相对于ArcGIS比较成熟一点,所以才有超图的iMobi ...

  2. 基于SuperMap的iMobile 3D总结(二)

    关键代码: 一.绕点环视 地图选择点: sceneControl.addTrackingListener(mTracking3dListener); sceneControl.setAction(Ac ...

  3. 基于ROS机器人的3D物体识别与三维重建(三)基于ROS的3D物体识别

    Kinect2相机标定与点云数据获取 1.介绍 2 基于Gazebo搭建物体识别仿真环境 2.1 Gazebo简介 2.2 创建仿真环境 3 三维物体识别 3.1 基于模板匹配的物体识别流程 3.2 ...

  4. 基于点云的3D障碍物检测

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|新机器视觉 基于点云的3D障碍物检测主要有以下步骤: 点 ...

  5. 基于视角特征提取的3D检测方法汇总

    作者丨柒柒@知乎 来源丨https://zhuanlan.zhihu.com/p/458068647 编辑丨3D视觉工坊 这篇文章主要是梳理一下近期3D Detection的进展,分类列举出一些我认为 ...

  6. 基于深度学习方法的3D数据合成

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 3D 数据简介 人们普遍认为,从单一角度合成 3D 数据是人类视觉的基本功能.但这对计算机视觉算法来说 ...

  7. 基于vehical检测的3D FCN 深度网络

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:简单一点 | 来源:知乎 https://zhuanlan.zhihu.com/p/144336 ...

  8. 自然语言理解属于计算机应用的那个范畴,基于自然语言理解的3D场景构造研究-计算机应用技术专业论文.docx...

    汕头大学硕士学位论文基于 汕头大学硕士学位论文 基于自然语言理解的 3D 场景构造 I I 摘要 自然语言自动生成三维场景可以减少手工构建所耗费的人力物力,为了减少这些消 耗,国内外的很多学者对这方面 ...

  9. 基于 HTML5 的 WebGL 3D 档案馆可视化管理系统

    2019独角兽企业重金招聘Python工程师标准>>> 前言 档案管理系统是通过建立统一的标准以规范整个文件管理,包括规范各业务系统的文件管理的完整的档案资源信息共享服务平台,主要实 ...

最新文章

  1. 从零开始发布web项目(五)
  2. 编码练习——Java-5-接口、继承与多态
  3. python pandas读写excel_python pandas读写excel
  4. 蓝桥杯C++ AB组辅导课 第二讲 二分与前缀和 Acwing
  5. C++之对象的动态建立和释放
  6. 查找文章中出现频率最高的单词
  7. BAT频繁与移动医疗挂钩 预示行业即将爆发?
  8. 《软件开发这点事儿》作者邵志东老师视频发布
  9. 【数据结构笔记】归并排序(merge_sort)+ 堆排序 -- python2.7
  10. 【bzoj2219-数论之神】求解x^a==b(%n)-crt推论-原根-指标-BSGS
  11. ansible源码解读
  12. Linux基础入门之VM和centos的安装使用
  13. hive三种建表语句
  14. Python爬虫入门教程【6】:蜂鸟网图片爬取之一
  15. 年审是当月还是当天_年审年检7月当月审可以吗
  16. 解决问题的能力和个人学习能力总结。
  17. 成功帮我拿3家大厂offer(阿里、美团、虾皮),这份Java面试宝典,简直神了
  18. 面向模式的软件体系结构(卷1-5
  19. Jenkins版本升级指南
  20. pytorch之词嵌入(三)

热门文章

  1. strcat函数实现
  2. 【电信学】【2015】大规模MIMO:基础与系统设计
  3. 2020东方证券--暑假开发测试工程师--实习笔试经验
  4. 哪个互联网行业职位更有前途?这些技术有优势
  5. js单线程和异步,promise给的承诺
  6. 四年Java 欢聚时代面经,已拿offer
  7. SpringBoot第一篇:了解SpringBoot
  8. 【2021软件创新实验室暑假集训,小白勿进
  9. [讯商科技】15年选型经验丨服装行业erp选型原则
  10. 新浪微博数据采集图文详解