@Override public void PlotObjectsReceived(String msg) { // {PlotID=xxxxxxxxxx}xml int pos = msg.indexOf("}"); if (pos > msg.length() || pos < 0) return; String plotID = msg.substring(1, pos); msg = msg.substring(pos + 1); pos = plotID.indexOf("="); if (pos > msg.length() || pos < 0) return; plotID = plotID.substring(pos + 1); if (plotID.equalsIgnoreCase("0")) { return; } // 获取数据类型 {type=**} pos = msg.indexOf("}"); if (pos > msg.length() || pos < 0) return; String type = msg.substring(1, pos); msg = msg.substring(pos + 1); pos = type.indexOf("="); if (pos > type.length() || pos < 0) return; type = type.substring(pos + 1); GeometryType geometryType = (GeometryType) Enum.parse(GeometryType.class, Integer.parseInt(type)); Geometry geometry; if (geometryType == GeometryType.GEOGRAPHICOBJECT) { geometry = new GeoGraphicObject(); geometry.fromXML(msg); } else if (geometryType == GeometryType.GEOREGION) { geometry = new GeoRegion(); geometry.fromXML(msg); } else { geometry = new GeoLine(); geometry.fromXML(msg); } Layer layerCAD = mMapControl.getMap().getLayers().get(0); Recordset record = ((DatasetVector) layerCAD.getDataset()).getRecordset(false, CursorType.DYNAMIC); record.moveFirst(); String nodeName = "PlotID"; try { boolean bHasGeometry = false; while (!record.isEOF()) { String old = record.getFieldValue(nodeName).toString(); if (old.equalsIgnoreCase(plotID)) { record.edit(); record.setGeometry(geometry); record.update(); bHasGeometry = true; break; } record.moveNext(); } if (!bHasGeometry) { record.edit(); if (geometry.getType() == GeometryType.GEOLINE) { GeoStyle style = new GeoStyle(); style.setLineColor(new com.supermap.data.Color(127, 127, 127)); style.setFillForeColor(new com.supermap.data.Color(189, 235, 255)); style.setLineWidth(1.0); geometry.setStyle(style); } else if (geometry.getType() == GeometryType.GEOREGION) { GeoStyle style = new GeoStyle(); style.setLineColor(new com.supermap.data.Color(91, 89, 91)); style.setFillForeColor(new com.supermap.data.Color(189, 235, 255)); style.setLineWidth(1.0); geometry.setStyle(style); } record.addNew(geometry); record.setFieldValue(nodeName, plotID); record.update(); m_ArraySendedIDs.add(plotID); } } catch (Exception ex) { ex.printStackTrace(); } record.close(); record.dispose(); mMapControl.getMap().refresh(); }