public FeatureLayer addLayer(String url) { if (url == null || url.equals("url")) { return null; } Geodatabase localGdb = null; try { localGdb = new Geodatabase(PathUitl.getInnerSDCardPath() + url); } catch (FileNotFoundException e) { e.printStackTrace(); } if (localGdb != null) { for (GeodatabaseFeatureTable gdbFeatureTable : localGdb.getGeodatabaseTables()) { if (gdbFeatureTable.hasGeometry()) { FeatureLayer featureLayer = new FeatureLayer(gdbFeatureTable); Symbol symbol = new SimpleFillSymbol(Color.BLUE); Renderer renderer = new SimpleRenderer(symbol); featureLayer.setRenderer(renderer); featureLayer.setVisible(false); mMapView.addLayer(featureLayer); mMapView.setExtent(featureLayer.getExtent()); return featureLayer; } } } return null; }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.inject(this); mapView.addLayer( new ArcGISTiledMapServiceLayer( "http://cache1.arcgisonline.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer")); layer = new GraphicsLayer(); mapView.addLayer(layer); mapView.getLocationDisplayManager().start(); mapView.getLocationDisplayManager().setLocationListener(this); try { client = new MqttAndroidClient( this, "tcp://broker.mqttdashboard.com:1883", "Likaci/MqttMap/" + id); client.setCallback(this); MqttConnectOptions options = new MqttConnectOptions(); options.setKeepAliveInterval(10); options.setConnectionTimeout(1000); options.setCleanSession(false); client.connect(options, null, this); } catch (Exception e) { e.printStackTrace(); } }
private void initMap() { // TDTImgLayer = new TianDiTuLayer(TianDiTuLayerTypes.TIANDITU_IMAGE_2000); // TDTImgAnnotationLayer = new TianDiTuLayer( // TianDiTuLayerTypes.TIANDITU_IMAGE_ANNOTATION_CHINESE_2000); // mMapView.addLayer(TDTImgLayer); // mMapView.addLayer(TDTImgAnnotationLayer); // GPS定位的图形层 gpsLayer = new GraphicsLayer(); // gpsLayer.setVisible(false); // mMapView.addLayer(gpsLayer); // addLayer(localGdb); mapls = new ArrayList<MapTypeLayer>(); for (String layername : layertypes) { for (int i = 0; i < lmtl.size(); i++) { if (layername.equals(lmtl.get(i).getName())) { mapls.add(lmtl.get(i)); break; } } } locallist = new ArrayList<ArcGISLocalTiledLayer[]>(); for (int i = 0; i < mapls.size(); i++) { MapTypeLayer maptypelayer = mapls.get(i); System.out.println(maptypelayer.getName()); ArrayList<MAPLayer> maplays = maptypelayer.getMaplist(); ArcGISLocalTiledLayer[] local = new ArcGISLocalTiledLayer[maplays.size()]; for (int j = 0; j < maplays.size(); j++) { local[j] = new ArcGISLocalTiledLayer(maplays.get(j).getuRL()); mMapView.addLayer(local[j]); if (i == 0) { local[j].setVisible(true); } else { local[j].setVisible(false); } } locallist.add(local); } adapter = new MapLayerShow(context, mapls, mMapView); map_layers.setAdapter(adapter); mMapView.setOnStatusChangedListener( new OnStatusChangedListener() { public void onStatusChanged(Object source, STATUS status) { // 地图加载成功后定位到详细位置 if (status == STATUS.LAYER_LOADED) { // Point centerPt = new Point(116.45, 27.60); // mMapView.zoomToScale(centerPt, 3000000); } } }); }
/** * 获取当前图层 * * @param map * @return */ private GraphicsLayer GetGraphicLayer(MapView map) { if (mGraphicsLayer == null) { mGraphicsLayer = new GraphicsLayer(); map.addLayer(mGraphicsLayer); } return mGraphicsLayer; }
// Display public void show() { if (mIsDisplayed) return; FragmentActivity activity = (FragmentActivity) mMapView.getContext(); FragmentTransaction transaction = activity.getSupportFragmentManager().beginTransaction(); transaction.setCustomAnimations(R.anim.popup_rotate_in, R.anim.popup_rotate_out); transaction.add(android.R.id.content, this, null); transaction.addToBackStack(null); transaction.commit(); setDisplayed(true); }
public void search(String keywords) { System.out.println(keywords); featureLayer.clearSelection(); QueryParameters q = new QueryParameters(); q.setWhere("NAME = '" + keywords + "'"); q.setReturnGeometry(true); q.setInSpatialReference(mMapView.getSpatialReference()); // q.setGeometry(g.getGeometry()); q.setSpatialRelationship(SpatialRelationship.INTERSECTS); featureLayer.selectFeatures( q, FeatureLayer.SelectionMode.NEW, new CallbackListener<FeatureResult>() { @Override public void onError(Throwable e) { e.printStackTrace(); } @Override public void onCallback(FeatureResult featureResult) { if (null != featureResult) { // If there are no query results, inform user. if (featureResult.featureCount() < 1) { System.out.println("无查询结果"); return; } // Iterate the results and select each feature. for (Object objFeature : featureResult) { Feature feature = (Feature) objFeature; System.out.println(feature.getAttributes().get("NAME")); resultCallOut = mMapView.getCallout(); // content = (View) view.findViewById(R.layout.calloutlayout);//弹出窗口布局文件对象 // PopupContainer mPopupContainer = new // PopupContainer(mMapView); // Popup popup =featureLayer.createPopup(mMapView, 0, // feature); // // popup.setEditable(true); // // mPopupContainer.addPopup(popup); // mMapView.centerAt(feature.getGeometry(), true); // mMapView.setExtent(feature.getGeometry()); // featureLayer.selectFeature(feature.getId()); } // 创建弹出窗体 } } }); }
private void updateToNewLocation(Location location) { gpsLayer.removeAll(); double latitude = location.getLatitude(); double longitude = location.getLongitude(); Point ptMap1 = (Point) GeometryEngine.project( new Point(longitude, latitude), SpatialReference.create(4326), mMapView.getSpatialReference()); gpsLayer.addGraphic(new Graphic(ptMap1, resultIcon)); // mMapView.zoomToScale(ptMap1, 4223); // mMapView.centerAt(ptMap1, true); }
// Get the feature layer which is associated with the current popup private ArcGISFeatureLayer getFeatureLayer(Popup popup) { ArcGISFeatureLayer featureLayer = null; if ((mMapView == null) || (popup == null)) return null; PopupInfo popupInfo = popup.getPopupInfo(); if (popupInfo instanceof ArcGISPopupInfo) { ArcGISPopupInfo agsPopupInfo = (ArcGISPopupInfo) popupInfo; Layer[] layers = mMapView.getLayers(); for (Layer layer : layers) { if ((layer instanceof ArcGISFeatureLayer) && (layer.getUrl().compareToIgnoreCase(agsPopupInfo.getLayerUrl()) == 0)) { featureLayer = (ArcGISFeatureLayer) layer; return featureLayer; } } } return featureLayer; }
public void dispatchMessage(android.os.Message msg) { try { jsonArray = new JSONArray(jsonResult); points.clear(); for (int i = 0; i < jsonArray.length(); i++) { Point startpt = new Point( StringToDouble(jsonArray.getJSONObject(i).getString("LONG1")), StringToDouble(jsonArray.getJSONObject(i).getString("LAT"))); // 创建一个点对象 points.add(startpt); Graphic startgp = new Graphic( startpt, new PictureMarkerSymbol( context.getResources().getDrawable(R.drawable.mark))); // 设置样式 GetGraphicLayer(mapView).addGraphic(startgp); sx = sy = ex = ey = 0; SelectionView.this.invalidate(); } final Callout callout = mapView.getCallout(); // 通过MapView获取Callout实例对象 callout.setStyle(R.xml.callout_style); // 为Callout设置样式文件 final View popView = ((Activity) context).getLayoutInflater().inflate(R.layout.pop_entinfo, null); mapView.setOnSingleTapListener( new OnSingleTapListener() { private static final long serialVersionUID = 1L; @Override public void onSingleTap(float x, float y) { int gapOldValue = 1000; int currentIndex = -1; for (int i = 0; i < points.size(); i++) { Point targetPoint = mapView.toScreenPoint(points.get(i)); int gapValue = (int) ((x - targetPoint.getX()) * (x - targetPoint.getX()) + (y - targetPoint.getY()) * (y - targetPoint.getY())); if (gapOldValue > gapValue) { currentIndex = i; gapOldValue = gapValue; } } callout.setMaxHeight(700); callout.setMaxWidth(1500); callout.hide(); callout.setOffset(0, -15); // 设置偏移量 try { ((TextView) popView.findViewById(R.id.content)) .setText( "公司名称 :" + jsonArray.getJSONObject(currentIndex).getString("NAME") + "\n" + "公司地址 :" + jsonArray.getJSONObject(currentIndex).getString("ADDRESS") + "\n" + "企业注册号 :" + jsonArray.getJSONObject(currentIndex).getString("ENROL")); callout.show(points.get(currentIndex), popView); // 设置弹出窗显示的内容 } catch (Exception e) { e.printStackTrace(); } } }); } catch (JSONException e) { e.printStackTrace(); } }