package com.smartdot.cgt.activity; import java.io.BufferedReader; import java.io.File; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Timer; import java.util.TimerTask; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.location.Location; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.os.PersistableBundle; import android.util.SparseIntArray; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.view.WindowManager.LayoutParams; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CheckBox; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; import com.esri.android.map.GraphicsLayer; import com.esri.android.map.Layer; import com.esri.android.map.MapView; import com.esri.android.map.ags.ArcGISDynamicMapServiceLayer; import com.esri.android.map.ags.ArcGISFeatureLayer; import com.esri.android.map.ags.ArcGISTiledMapServiceLayer; import com.esri.android.map.event.OnSingleTapListener; import com.esri.android.map.event.OnStatusChangedListener; import com.esri.core.geometry.Envelope; import com.esri.core.geometry.Geometry; import com.esri.core.geometry.MultiPath; import com.esri.core.geometry.Point; import com.esri.core.geometry.Polygon; import com.esri.core.map.FeatureSet; import com.esri.core.map.Graphic; import com.esri.core.portal.BaseMap; import com.esri.core.renderer.SimpleRenderer; import com.esri.core.symbol.PictureMarkerSymbol; import com.esri.core.tasks.SpatialRelationship; import com.leador.SelectDialog; import com.leador.Listener.MapActiveListener; import com.leador.Listener.OnMapItemListener; import com.leador.TV.Exception.TrueMapException; import com.leador.TV.Listeners.ImageCompassListener; import com.leador.TV.Listeners.ImageGetListener; import com.leador.TV.Listeners.ImageStateListener; import com.leador.TV.Listeners.ImageTouchEvent; import com.leador.TV.Listeners.ImageTouchListener; import com.leador.TV.Marker.MarkerInfo; import com.leador.TV.Station.StationInfo; import com.leador.TV.Station.StationInfoEx; import com.leador.map.utils.ControlBtn; import com.leador.tracking.TrackingItem; import com.leador.types.PointD; import com.smartdot.cgt.R; import com.smartdot.cgt.model.CaseModel; import com.smartdot.cgt.model.DictTypeModel; import com.smartdot.cgt.model.GraphicSelectItemModel; import com.smartdot.cgt.model.ResponseResult; import com.smartdot.cgt.request.Request; import com.smartdot.cgt.util.ActivityTools; import com.smartdot.cgt.util.ApplicationMain; import com.smartdot.cgt.util.BaseThread; import com.smartdot.cgt.util.GpsManager; import com.smartdot.cgt.util.HandlerStatus; import com.smartdot.cgt.util.MapUtil; import com.smartdot.cgt.util.Msg; import com.smartdot.cgt.util.MsgCallback; import com.smartdot.cgt.util.StringUtils; import com.smartdot.cgt.view.TitleBar; /** * @author Administrator * * 示例实现了ImageStateListener接口, 注意需要注册一下setOnStateChanged(this)之后 * 就可以使用其中的回调函数,其他接口同理使用 * * 实现接口ImageTouchListener,其中回调controlBtnSelected(String controlBtnTag)响应 * 按钮点击 * * 定位前先初始化 * */ public class FrmMap extends BaseActivity implements ImageStateListener, ImageTouchListener, MapActiveListener, OnMapItemListener, ImageCompassListener, ImageGetListener { /** * 取点方式,是取部件点还是取事件点 */ private int getLocationId = -1; private MapView mapView = null; private Button btnEventConfirm; private Spinner spinPartSelect; private Point selectedPoint; private Polygon initExtent; private GraphicsLayer graphicsLayer; private SparseIntArray graphicIds = new SparseIntArray(); private final int MyPositionIndex = 1, CasePositionIndex = 2; private ArrayAdapter<GraphicSelectItemModel> adapter; // /"OBJECTID", "OBJCODE部件编码","GGRIDID网格ID", "GPARTSTYPE部件类型或名称" //public final static String[] fieldArrayPart = new String[] { "OBJECTID", "OBJCODE", "OBJCODE", "OBJNAME", // "DEPTCODE1", "DEPTCODE2", "DEPTCODE3" }; //public final static String[] fieldArrayGrid = new String[] { "OBJECTID", "OBJCODE" };// geocode //冀州 public final static String[] fieldArrayPart = new String[] { "OBJECTID", "OBJID", "BGID", "OBJNAME", "DEPTCODE1", "DEPTCODE2", "DEPTCODE3" }; public final static String[] fieldArrayPart1 = new String[] { "COMMUNAME" , "COMMUID"}; public final static String[] fieldArrayPart2 = new String[] { "BGID","ObjID","DutyName","Tel","CommuID","CommuName"}; public final static String[] fieldArrayGrid = new String[] { "OBJECTID", "BGID" };// geocode public static String shequ, gridid, shequid; private String lclassname = null, sclassname = null; private ImageButton btnZoomIn; private ImageButton btnZoomOut; private ImageButton btnMyLocation; private ImageButton btnViewFull; private boolean isGettingPointEnable = false; private BaseThread thread; private AlertDialog di; private View checkbox; private CheckBox cBox; /** * 三维影像控件,配置在布局文件中,也可以在代码中new */ // private TrueVision ldTV; /** * 三维前后 和放大缩小控制按钮初始化 * */ private String beforeTag = "Before"; private String afterTag = "After"; private String zoominTag = "Zoomin"; private String zoomOutTag = "Zoomout"; String holeingControlBtnTag = ""; String preTag = "prePlay"; String nextTag = "nextPlay"; boolean isPlay = false; // /** // * 三维 // */ // @Override // protected void onPause() { // // TODO Auto-generated method stub // super.onPause(); // // 全景时候 //// ldTV.onPause(); // } /** *三维 * @param message * 弹出的提示信息 * */ protected void ShowToast(String message) { Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show(); } /** * 选择路口弹出窗口提示 * 三维 * @param currentStation * 当前站点信息 * @throws TrueMapException */ private void selectNode(StationInfo currentStation) throws TrueMapException { final SelectDialog selectDialog = new SelectDialog(this, android.R.style.Theme_Dialog);// 创建Dialog并设置样式主题 Window win = selectDialog.getWindow(); LayoutParams params = new LayoutParams(); params.x = -80;// 设置x坐标 params.y = -60;// 设置y坐标 win.setAttributes(params); selectDialog.setCanceledOnTouchOutside(true);// 设置点击Dialog外部任意区域关闭Dialog selectDialog.show(); selectDialog.setOnCancelListener(new OnCancelListener() { @Override public void onCancel(DialogInterface arg0) { } }); LinearLayout nodesLayout = new LinearLayout(this); nodesLayout.setOrientation(LinearLayout.VERTICAL); final ArrayList<StationInfo> stationInfoList = currentStation .getNodeList(); int length = stationInfoList.size(); for (int i = 0; i < length; i++) { StationInfo stationInfo = stationInfoList.get(i); String stationAddress = stationInfo.getAddress(); double yaw = stationInfo.getYaw(); String stationId = stationInfo.getStationId(); // String cameraID = ldTV.getCameraID(); // String imgID = TrueVision.getImgIDByStationID(stationId, cameraID); LinearLayout nodeLayout = new LinearLayout(this); // nodeLayout.setTag(imgID); nodeLayout.setOrientation(LinearLayout.HORIZONTAL); TextView textView = new TextView(this); ImageView imageView = new ImageView(this); nodeLayout.addView(imageView, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.FILL_PARENT); nodeLayout.addView(textView); String textViewStr = ""; if (stationAddress != null) { textViewStr = ""; if (yaw <= 30 && yaw >= -30) { textViewStr += "直行"; imageView.setImageResource(R.drawable.nogo); } else if (yaw > 30 && yaw <= 180) { textViewStr += "右行"; imageView.setImageResource(R.drawable.nodegoright); } else if (yaw >= -180 && yaw < -30) { textViewStr += "左行"; imageView.setImageResource(R.drawable.nodegoleft); } textViewStr += stationAddress; } else { textViewStr = ""; } textView.setTextSize(20); textView.setTextColor(Color.RED); textView.setText(textViewStr); nodesLayout.setPadding(20, 20, 20, 20); nodesLayout.addView(nodeLayout); nodeLayout.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { String imageID = (String) view.getTag(); try { // ldTV.locImgByImgID(imageID); selectDialog.cancel(); } catch (Exception e) { e.printStackTrace(); } } }); if (i != length - 1) { LinearLayout nullLayout = new LinearLayout(this); nullLayout.setBackgroundColor(Color.BLACK); nodesLayout.addView(nullLayout, LinearLayout.LayoutParams.FILL_PARENT, 2); } } selectDialog.setView(nodesLayout); } /** * 显示影像的所有标注 * * @param //ImageID * 影像ID * @throws TrueMapException */ private void showImageIDmarker(String imageID) throws TrueMapException { // ldTV.cleanMarker(); // ArrayList<MarkerInfo> markerList; // markerList = TrueVision.searchMarkersByImageID(imageID); // for (int i = 0; i < markerList.size(); i++) { // MarkerInfo markerInfo = markerList.get(i); //// ldTV.addMarker(markerInfo.getId(), markerInfo.getText(), // markerInfo.getImageID(), markerInfo.getImageXScale(), // markerInfo.getImageYScale(), markerInfo.getSymbolGuid()); // } } Handler handler=new Handler(); Runnable runnable=new Runnable(){ @Override public void run() { if(mapView.isLoaded()==false){ doInit(); handler.postDelayed(this, 1000); } } }; @Override public void getStationComplete(boolean isOk, String imageId, TrueMapException ex) { if (isOk) { Toast.makeText(this, "getStationCompleteOK", Toast.LENGTH_SHORT) .show(); // try { // double lon = ldTV.getCurrentStation().getCoord().getLon(); // double lat = ldTV.getCurrentStation().getCoord().getLat(); // } catch (TrueMapException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } try { showImageIDmarker(imageId); } catch (TrueMapException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { Toast.makeText(this, "getStationCompleteFalse", Toast.LENGTH_SHORT) .show(); } } private OnClickListener onClickListener = new OnClickListener() { @Override public void onClick(View arg0) { if (arg0 == btnZoomIn) { mapView.zoomin(); } else if (arg0 == btnZoomOut) { mapView.zoomout(); } else if (arg0 == btnMyLocation) { setMyLocation(); } else if (arg0 == btnEventConfirm) { toSelectEvent(selectedPoint); } else if (arg0 == btnViewFull) { viewInitExtent(); } } }; private OnSingleTapListener onSingleTapListener = new OnSingleTapListener() { private static final long serialVersionUID = 1L; @Override public void onSingleTap(float x, float y) { if (isGettingPointEnable) { if (getLocationId == ActivityTools.GETLOCATION_PART) { getPartByXY(x, y); selectedPoint = mapView.toMapPoint(x, y); } else if (getLocationId == ActivityTools.GETLOCATION_EVENT ) { getSqByXY(x, y); selectedPoint = mapView.toMapPoint(x, y); mapView.getCallout().show(selectedPoint, btnEventConfirm); }else if(getLocationId == ActivityTools.GETLOCATION_SHOP){ getShopByXY(x, y); selectedPoint = mapView.toMapPoint(x, y); } } try { double longitude = (double) Math.round(selectedPoint.getX() * 100000000) / 100000000; double latitude = (double) Math.round(selectedPoint.getY()* 100000000) / 100000000; // ldTV.locImgByLonlat(longitude, latitude, 0.005, "1"); // showImageIDmarker(ldTV.getImageID()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }; private OnItemSelectedListener onItemSelectedListener = new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { if (arg0 == spinPartSelect && arg2 > 0) { GraphicSelectItemModel selectedItem = (GraphicSelectItemModel) spinPartSelect.getSelectedItem(); toSelectGraphic(selectedItem.getGraphic()); } } @Override public void onNothingSelected(AdapterView<?> arg0) { } }; private OnStatusChangedListener onStatusChangedListener = new OnStatusChangedListener() { private static final long serialVersionUID = 1L; @Override public void onStatusChanged(Object source, STATUS status) { if (status == STATUS.INITIALIZED) { initMapByParams(); } else if(status==STATUS.INITIALIZATION_FAILED||status==STATUS.LAYER_LOADING_FAILED){ } } }; @Override protected void addEventListener() { btnZoomIn.setOnClickListener(onClickListener); btnZoomOut.setOnClickListener(onClickListener); btnMyLocation.setOnClickListener(onClickListener); btnViewFull.setOnClickListener(onClickListener); btnEventConfirm.setOnClickListener(onClickListener); spinPartSelect.setOnItemSelectedListener(onItemSelectedListener); mapView.setOnSingleTapListener(onSingleTapListener); mapView.setOnStatusChangedListener(onStatusChangedListener); } @Override protected void handleMessage(Message msg) { if (msg.what == HandlerStatus.MAP_QUERYSHOP) { mapView.getCallout().hide(); if (msg.arg1 == HandlerStatus.HANDLE_OK) { Graphic[] results = (Graphic[]) msg.obj; adapter.clear(); adapter.add(new GraphicSelectItemModel(null, "", "")); for (Graphic graphic : results) { adapter.add(new GraphicSelectItemModel(graphic, fieldArrayPart2[1], fieldArrayPart2[2])); } spinPartSelect.setSelection(0); mapView.getCallout().show(selectedPoint, spinPartSelect); } else if (msg.arg1 == HandlerStatus.HANDLE_FAIL) { Msg.showInfo(FrmMap.this, "未获取到商户!"); } else { Msg.showInfo(FrmMap.this, "获取商户出错!"); } closeProgress(); } if (msg.what == HandlerStatus.MAP_QUERYPART) { mapView.getCallout().hide(); if (msg.arg1 == HandlerStatus.HANDLE_OK) { Graphic[] results = (Graphic[]) msg.obj; adapter.clear(); adapter.add(new GraphicSelectItemModel(null, "", "")); for (Graphic graphic : results) { adapter.add(new GraphicSelectItemModel(graphic, fieldArrayPart[1], fieldArrayPart[3])); } spinPartSelect.setSelection(0); mapView.getCallout().show(selectedPoint, spinPartSelect); } else if (msg.arg1 == HandlerStatus.HANDLE_FAIL) { Msg.showInfo(FrmMap.this, "未获取到部件!"); } else { Msg.showInfo(FrmMap.this, "获取部件出错!"); } closeProgress(); } else if (msg.what == HandlerStatus.MAP_QUERYEVENT) { closeProgress(); String gridId = "", address = ""; if (msg.arg1 == HandlerStatus.HANDLE_OK) { String[] gridAndAddress = ((String) msg.obj).split("&"); if (gridAndAddress.length > 0) { gridId = gridAndAddress[0]; } if (gridAndAddress.length > 1) { address = gridAndAddress[1]; } } String messageInfo = "该事件点所在网格为" + (StringUtils.isNullOrEmpty(gridid) ? "空" : gridid) + "\n确认选择?"; final String gridCode = gridId, addressResult = address; Msg.confirm(FrmMap.this, messageInfo, "提 示", new MsgCallback() { @Override public void callBack(Boolean result) { if (result != null && result.booleanValue()) { FrmMap.this.getIntent().putExtra(MapReturn_X, selectedPoint.getX()); FrmMap.this.getIntent().putExtra(MapReturn_Y, selectedPoint.getY()); FrmMap.this.getIntent().putExtra(MapReturn_SheQu, shequ); FrmMap.this.getIntent().putExtra(MapReturn_SheQuId, shequid); FrmMap.this.getIntent().putExtra(MapReturn_PartId, ""); FrmMap.this.getIntent().putExtra(MapReturn_GridId, gridid); FrmMap.this.getIntent().putExtra(MapReturn_Address, addressResult); FrmMap.this.setResult(RESULT_OK, FrmMap.this.getIntent()); FrmMap.this.finish(); } else { } } }); } } @Override protected void onCancelProgress(DialogInterface arg0) { if (thread != null) { thread.interrupt(); } } @Override protected void setLayout() { initActivity(); setContentView(R.layout.map); btnZoomIn = (ImageButton) findViewById(R.id.btnZoomIn); btnZoomOut = (ImageButton) findViewById(R.id.btnZoomOut); btnMyLocation = (ImageButton) findViewById(R.id.btnMyLocation); btnViewFull = (ImageButton) findViewById(R.id.btnViewFull); TitleBar titlebar = (TitleBar) this.findViewById(R.id.titlebar); titlebar.setToHelpPanelId(R.id.layoutMapHelp); titlebar.setTitleText(R.string.module_map); mapView = (MapView) findViewById(R.id.viewMapPanel); btnEventConfirm = new Button(FrmMap.this); btnEventConfirm.setBackgroundColor(0xffffff); btnEventConfirm.setText("点击选择该点"); spinPartSelect = new Spinner(FrmMap.this); spinPartSelect.setBackgroundResource(R.drawable.btn_item_selector); adapter = new ArrayAdapter<GraphicSelectItemModel>(FrmMap.this, android.R.layout.simple_spinner_item); spinPartSelect.setAdapter(adapter); //加载checkbox.xml 文件 LayoutInflater lauoutInflater= LayoutInflater.from(this); checkbox = lauoutInflater.inflate(R.layout.checkbox, null); //获取.xml文件的按钮 cBox=(CheckBox)checkbox.findViewById(R.id.check); //通过sharedPreferences来保存信息 SharedPreferences pre=getSharedPreferences("checkvalue", MODE_PRIVATE); String value=pre.getString("ischeck", ""); //判断接受到的信息 if (value.endsWith("1")) { //如果选择的是1,则对话框就不再弹出 createDialog().dismiss(); }else { //如果没有选择,则对话框继续弹出 createDialog().show(); } handler.postDelayed(runnable,0); } private AlertDialog createDialog(){ di=new AlertDialog.Builder(this).setTitle("友情提示").setMessage("双击地图位置,进行采点操作").setView(checkbox) .setPositiveButton("知道了", new DialogInterface.OnClickListener() { @Override public void onClick( DialogInterface dialog, int which) { //将数据保存到sharedPerferences中: SharedPreferences pre=getSharedPreferences("checkvalue", MODE_PRIVATE); SharedPreferences.Editor editor=pre.edit(); //判断cBox是否被选中 if (cBox.isChecked()) { editor.putString("ischeck", "1"); }else { editor.putString("ischeck", "0"); } //提交选择的check,并且保存在pre中 editor.commit(); } }).create(); return di; } @Override protected void doInit() { getLocationId = this.getIntent().getIntExtra("needGetLocation", -1); isGettingPointEnable = getLocationId != -1; ArcGISTiledMapServiceLayer baseLayer = new ArcGISTiledMapServiceLayer(ApplicationMain.getInstance().getCgtConfig().getMapServiceUrl()); mapView.addLayer(baseLayer);//底图 ArcGISFeatureLayer unitLayer0 = new ArcGISFeatureLayer(ApplicationMain.getInstance().getCgtConfig().getUnitServiceUrl(), ArcGISFeatureLayer.MODE.ONDEMAND); mapView.addLayer(unitLayer0);//部件点图层(外网) // ArcGISFeatureLayer unitLayer0 = new ArcGISFeatureLayer(ApplicationMain.getInstance().getCgtConfig().getUnitServiceUrl()+"/0", // ArcGISFeatureLayer.MODE.ONDEMAND); // mapView.addLayer(unitLayer0);//部件点图层 // // unitLayer0 = new ArcGISFeatureLayer(ApplicationMain.getInstance().getCgtConfig().getUnitServiceUrl()+"/1", // ArcGISFeatureLayer.MODE.ONDEMAND); // mapView.addLayer(unitLayer0);//部件线图层 // // unitLayer0 = new ArcGISFeatureLayer(ApplicationMain.getInstance().getCgtConfig().getUnitServiceUrl()+"/2", // ArcGISFeatureLayer.MODE.ONDEMAND); // mapView.addLayer(unitLayer0);//兴趣点图层 // // unitLayer0 = new ArcGISFeatureLayer(ApplicationMain.getInstance().getCgtConfig().getUnitServiceUrl()+"/3", // ArcGISFeatureLayer.MODE.ONDEMAND); // mapView.addLayer(unitLayer0);//门牌地址图层 if(getLocationId == -1){ Bundle bundle=getIntent().getExtras(); if(bundle!=null){ GraphicsLayer layer = new GraphicsLayer(); mapView.addLayer(layer); String lng = bundle.getString("lng"); String lat = bundle.getString("lat"); if(!lng.equals("")&&!lat.equals("")){ Point point = new Point(Double.parseDouble(lng),Double.parseDouble(lat)); Drawable image = FrmMap.this.getResources().getDrawable(R.drawable.part_item); PictureMarkerSymbol symbol = new PictureMarkerSymbol(image); Map<String, Object> map = null; Graphic g = new Graphic(point, symbol, map, null); layer.addGraphic(g); mapView.centerAt(point, true); mapView.postInvalidate(); } } } // graphicsLayer = new GraphicsLayer(); // graphicsLayer.setRenderer(new SimpleRenderer( // new PictureMarkerSymbol(FrmMap.this.getResources().getDrawable(R.drawable.part_item)))); // mapView.addLayer(graphicsLayer); // mapView.postInvalidate(); // File sdDir = Environment.getExternalStorageDirectory(); // String dataPathTV=sdDir.toString()+"/map"; // BundleLayer localTiledLayer = new BundleLayer(dataPathTV); // mapView.addLayer(localTiledLayer);//添加基础图层 } @Override public Object onRetainNonConfigurationInstance() { return mapView.retainState(); } private void initMapByParams() { boolean b=false;//是否需要放大定位 initExtent = mapView.getExtent(); mapView.getCallout().setMaxWidth(getWindowManager().getDefaultDisplay().getWidth()); if (isGettingPointEnable) {//上报执行if,综合查询不执行if Point nowPoint = null; Location location = GpsManager.getGpsSingerton().getLocation(); if (location != null) { nowPoint = new Point(location.getLongitude(), location.getLatitude()); if (nowPoint != null&b) { Envelope extent = new Envelope(nowPoint, 0.0008, 0.0012); mapView.setExtent(extent); mapView.centerAt(nowPoint, true); mapView.postInvalidate(); if (getLocationId == ActivityTools.GETLOCATION_EVENT) { selectedPoint = nowPoint; mapView.getCallout().show(selectedPoint, btnEventConfirm); } } } } else{ mapView.setScale(1000); } // caseDoLocate(); //viewInitExtent(); //mapView.zoomout(); } // /** // * 核实或核查时查看事件位置 // */ // private void caseDoLocate() { // Intent intent = this.getIntent(); // if (intent != null) { // Bundle bundle = intent.getExtras(); // if (bundle != null) { // if (bundle.containsKey(SOURCECASEKEY)) { // CaseModel caseModel = (CaseModel) bundle.get(SOURCECASEKEY); // // 调用地图跳转方法 // changeMapCenter(caseModel); // } // } // } // } /** * 地图跳转方法 * * @param caseModel */ // private void changeMapCenter(CaseModel caseModel) { // changeMapCenter(caseModel, true); // } // /** // * 地图跳转方法 // * // * @param caseModel // */ // private void changeMapCenter(final CaseModel caseModel, boolean needShowInMap) { // String x = caseModel.getCaseLongitude(); // String y = caseModel.getCaseLatitude(); // if (!StringUtils.isNullOrEmpty(x) && !StringUtils.isNullOrEmpty(y)) { // double xDouble = Double.parseDouble(x); // double yDouble = Double.parseDouble(y); // if (needShowInMap) { // Point casePoint = new Point(xDouble, yDouble); // if (graphicIds.indexOfKey(CasePositionIndex) < 0) { // Graphic caseGraphic = new Graphic(casePoint, null); // graphicIds.put(CasePositionIndex, graphicsLayer.addGraphic(caseGraphic)); // } else { // graphicsLayer.updateGraphic(graphicIds.get(CasePositionIndex), casePoint); // } // mapView.centerAt(casePoint, true); // mapView.postInvalidate(); // } // } // } private void setMyLocation() { if (mapView.isLoaded()) { try{ Location location = GpsManager.getGpsSingerton().getLocation(); if (location != null) { Point nowPoint = new Point(location.getLongitude(), location.getLatitude()); if (graphicIds.indexOfKey(MyPositionIndex) < 0) { Graphic myPosition = new Graphic(nowPoint, null); graphicIds.put(MyPositionIndex, graphicsLayer.addGraphic(myPosition)); } else { graphicsLayer.updateGraphic(graphicIds.get(MyPositionIndex), nowPoint); } mapView.centerAt(nowPoint, true); mapView.postInvalidate(); } else { Msg.showInfo(this, "暂时无法获取到您的位置!"); } }catch (Exception e){ Msg.showInfo(this, "当前定位超出地图范围!"); } } } private void viewInitExtent() { if (mapView.isLoaded() && initExtent != null) { mapView.setExtent(initExtent); } } private void toSelectEvent(final Point selectedPoint2) { thread = new BaseThread(baseHandler) { @Override public void runThread() { Message msg = thread.obtainMessage(); if (msg != null) { msg.what = HandlerStatus.MAP_QUERYEVENT; try { String mapServiceUrl = getCgtConfig().getMapServiceUrl(); String queryLayerUrl = ("/".equals(mapServiceUrl.charAt(mapServiceUrl.length() - 1)) ? mapServiceUrl : (mapServiceUrl + "/")) + getCgtConfig().getGridLayerIndex(); FeatureSet results = MapUtil.executeQueryByGeometry(queryLayerUrl, selectedPoint2, null, false, fieldArrayGrid, SpatialRelationship.INTERSECTS, mapView.getSpatialReference()); if (results != null && results.getGraphics() != null && results.getGraphics().length > 0) { String gridId = "", gridAndAddress = ""; for (Entry<String,Object> entry : results.getGraphics()[0].getAttributes().entrySet()) { String keyUpper = entry.getKey().toUpperCase(); if (FrmMap.fieldArrayGrid[1].equals(keyUpper)) { gridId = entry.getValue().toString(); break; } } try { ResponseResult<String> address = Request.getRequest().queryAddressString(gridId); if (address.isSuccess()) { gridAndAddress = gridId + "&" + address.getResultObj(); } else { gridAndAddress = gridId; } } catch (Exception e) { gridAndAddress = gridId; e.printStackTrace(); } msg.obj = gridAndAddress; msg.arg1 = HandlerStatus.HANDLE_OK; } else { msg.arg1 = HandlerStatus.HANDLE_FAIL; } } catch (Exception e) { msg.arg1 = HandlerStatus.HANDLE_ERROR; } thread.sendMessage(msg); } } }; showProgress("获取事件点中。。。", "地图取点"); thread.start(); } private void getcaseclass(final String lClassCode, final String sClassCode){ thread = new BaseThread(baseHandler) { @Override public void runThread() { Message msg = thread.obtainMessage(); if (msg != null) { ResponseResult< List<Map<String,String>>> typelistResult = null; try { typelistResult = Request.getRequest().typelist("2"); List<Map<String,String>> list = typelistResult.getResultObj(); String id; int i; for(i=0; i<list.size(); i++){ if(list.get(i).get("typeCode").equals(lClassCode)){ lclassname = list.get(i).get("typeName"); break; } } id = list.get(i).get("id"); typelistResult = Request.getRequest().typelistdetail("2",id); list = typelistResult.getResultObj(); for(i=0;i<list.size();i++){ if(list.get(i).get("typeDetailCode").equals(sClassCode)){ sclassname = list.get(i).get("typeDetailName"); break; } } } catch (Exception e) { e.printStackTrace(); } } } }; thread.start(); } protected void toSelectGraphic(final Graphic buttonGraphic) { if(getLocationId == ActivityTools.GETLOCATION_PART){ if (buttonGraphic != null && buttonGraphic.getGeometry() != null && buttonGraphic.getAttributes().size() > 0) { StringBuilder messageBuilder = new StringBuilder("已选择部件:\n"); final String partNum = (String) buttonGraphic.getAttributeValue(fieldArrayPart[1]); final String partGrid = (String) buttonGraphic.getAttributeValue(fieldArrayPart[2]); final String dept1 = (String) buttonGraphic.getAttributeValue(fieldArrayPart[3]); final String dept2 = (String) buttonGraphic.getAttributeValue(fieldArrayPart[4]); final String dept3 = (String) buttonGraphic.getAttributeValue(fieldArrayPart[5]); String lClassCode = partNum.substring(6, 8); String sClassCode = partNum.substring(8, 10); lclassname = null; sclassname = null; getcaseclass(lClassCode,sClassCode); try{ while (lclassname == null || sclassname == null){ Thread.currentThread().sleep(500); } }catch (Exception e){ e.printStackTrace(); } messageBuilder.append("编号:"); messageBuilder.append(partNum); messageBuilder.append("\n大类:"); messageBuilder.append(lclassname == null ? "" : lclassname); messageBuilder.append("\n小类:"); messageBuilder.append(sclassname == null ? "" : sclassname); messageBuilder.append("\n所在网格:"); messageBuilder.append(partGrid); messageBuilder.append("\n确认选择吗?"); Msg.confirm(FrmMap.this, messageBuilder.toString(), "部件选择", new MsgCallback() { @Override public void callBack(Boolean result) { if (result != null && result.booleanValue()) { final Geometry geo = (Geometry) buttonGraphic.getGeometry(); Geometry.Type type = geo.getType(); double x=0d; double y=0d; if("POINT".equals(type.name())){ final Point p = (Point) buttonGraphic.getGeometry(); x=p.getX(); y=p.getY(); }else if("POLYGON".equals(type.name()) || "POLYLINE".equals(type.name())){ MultiPath pg = (MultiPath)buttonGraphic.getGeometry(); int pathSize = pg.getPathCount(); if(pathSize>0) { int size = pg.getPathSize(0); if(size>0) { Point pt = pg.getPoint(0); x=pt.getX(); y=pt.getY(); } } } final double xx=x; final double yy=y; Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); String addressResult = (String) msg.obj; FrmMap.this.getIntent().putExtra(MapReturn_X, xx); FrmMap.this.getIntent().putExtra(MapReturn_Y, yy); FrmMap.this.getIntent().putExtra(MapReturn_SheQu, shequ); FrmMap.this.getIntent().putExtra(MapReturn_SheQuId, shequid); FrmMap.this.getIntent().putExtra(MapReturn_PartId, partNum); FrmMap.this.getIntent().putExtra(MapReturn_LClass, lclassname == null ? "" : lclassname); FrmMap.this.getIntent().putExtra(MapReturn_SClass, sclassname == null ? "" : sclassname); FrmMap.this.getIntent().putExtra(MapReturn_GridId, partGrid); FrmMap.this.getIntent().putExtra(MapReturn_Address, addressResult); FrmMap.this.getIntent().putExtra(MapReturn_Dept1, dept1); FrmMap.this.getIntent().putExtra(MapReturn_Dept2, dept2); FrmMap.this.getIntent().putExtra(MapReturn_Dept3, dept3); FrmMap.this.setResult(RESULT_OK, FrmMap.this.getIntent()); FrmMap.this.finish(); } }; BaseThread thread = new BaseThread(handler) { @Override public void runThread() { Message msg = this.obtainMessage(); try { ResponseResult<String> address = Request.getRequest().queryAddressString(partGrid); if (address.isSuccess()) { msg.obj = address.getResultObj(); } } catch (Exception e) { e.printStackTrace(); } this.sendMessage(msg); } }; thread.start(); } } }); } else { Msg.showInfo(FrmMap.this, "对不起,未找到选择的部件!"); } }else if(getLocationId == ActivityTools.GETLOCATION_SHOP){ if (buttonGraphic != null && buttonGraphic.getGeometry() != null && buttonGraphic.getAttributes().size() > 0) { StringBuilder messageBuilder = new StringBuilder("已选择商户:"); final String ShopNum = (String) buttonGraphic.getAttributeValue(fieldArrayPart2[3]); //手机号 final String partGrid = (String) buttonGraphic.getAttributeValue(fieldArrayPart2[0]);//网格 final String ShopName = (String) buttonGraphic.getAttributeValue(fieldArrayPart2[2]);//商户名 final String ShopId = (String) buttonGraphic.getAttributeValue(fieldArrayPart2[1]);//商户Id messageBuilder.append(ShopName); messageBuilder.append("\n手机号:"); messageBuilder.append(ShopNum); messageBuilder.append("\n所在网格:"); messageBuilder.append(partGrid); messageBuilder.append("\n确认选择吗?"); Msg.confirm(FrmMap.this, messageBuilder.toString(), "商户选择", new MsgCallback() { @Override public void callBack(Boolean result) { if (result != null && result.booleanValue()) { final Geometry geo = (Geometry) buttonGraphic.getGeometry(); Geometry.Type type = geo.getType(); double x=0d; double y=0d; if("POINT".equals(type.name())){ final Point p = (Point) buttonGraphic.getGeometry(); x=p.getX(); y=p.getY(); }else if("POLYGON".equals(type.name()) || "POLYLINE".equals(type.name())){ MultiPath pg = (MultiPath)buttonGraphic.getGeometry(); int pathSize = pg.getPathCount(); if(pathSize>0) { int size = pg.getPathSize(0); if(size>0) { Point pt = pg.getPoint(0); x=pt.getX(); y=pt.getY(); } } } final double xx=x; final double yy=y; Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); String addressResult = (String) msg.obj; FrmMap.this.getIntent().putExtra(MapReturn_X, xx); FrmMap.this.getIntent().putExtra(MapReturn_Y, yy); FrmMap.this.getIntent().putExtra(MapReturn_GridId, partGrid); FrmMap.this.getIntent().putExtra(MapReturn_SheQu, shequ); FrmMap.this.getIntent().putExtra(MapReturn_SheQuId, shequid); FrmMap.this.getIntent().putExtra(MapReturn_ShopId, ShopId); FrmMap.this.getIntent().putExtra(MapReturn_ShopName, ShopName); FrmMap.this.getIntent().putExtra(MapReturn_ShopTel, ShopNum); FrmMap.this.getIntent().putExtra(MapReturn_Address, addressResult); FrmMap.this.setResult(RESULT_OK, FrmMap.this.getIntent()); FrmMap.this.finish(); } }; BaseThread thread = new BaseThread(handler) { @Override public void runThread() { Message msg = this.obtainMessage(); try { ResponseResult<String> address = Request.getRequest().queryAddressString(partGrid); if (address.isSuccess()) { msg.obj = address.getResultObj(); } } catch (Exception e) { e.printStackTrace(); } this.sendMessage(msg); } }; thread.start(); } } }); } else { Msg.showInfo(FrmMap.this, "对不起,未找到选择的商户!"); } } } private void getSqByXY(final float x, final float y) { thread = new BaseThread(baseHandler) { @Override public void runThread() { Message msg = thread.obtainMessage(); if (msg != null) { try { String mapServiceUrl = getCgtConfig().getMapServiceUrl(); String querySqLayerUrl1 = ("/".equals(mapServiceUrl.charAt(mapServiceUrl.length() - 1)) ? mapServiceUrl : (mapServiceUrl + "/")) + getCgtConfig().getSqLayerIndex(); selectedPoint = mapView.toMapPoint(x, y); Point pointMin = mapView.toMapPoint(x - 5, y - 5); Point pointMax = mapView.toMapPoint(x + 5, y + 5); Envelope buffer = new Envelope(pointMin.getX(), pointMin.getY(), pointMax.getX(), pointMax.getY()); String[] fieldArrayPart = new String[] { "BGID", "COMMUNAME", "COMMUID"}; FeatureSet results = MapUtil.executeQueryByGeometry(querySqLayerUrl1, buffer, null, true, fieldArrayPart, SpatialRelationship.INTERSECTS, mapView.getSpatialReference()); Graphic[] graphics = results.getGraphics(); Graphic graphic = graphics[0]; gridid = (String)graphic.getAttributeValue(fieldArrayPart[0]); shequ = (String)graphic.getAttributeValue(fieldArrayPart[1]); shequid = (String)graphic.getAttributeValue(fieldArrayPart[2]); } catch (Exception e) { Msg.showInfo(FrmMap.this, "获取社区数据失败!"); } } } }; thread.start(); } private void getShopByXY(final float x, final float y) { thread = new BaseThread(baseHandler) { @Override public void runThread() { Message msg = thread.obtainMessage(); if (msg != null) { msg.what = HandlerStatus.MAP_QUERYSHOP; try { String mapServiceUrl = getCgtConfig().getMapServiceUrl(); String queryLayerUrl = ("/".equals(mapServiceUrl.charAt(mapServiceUrl.length() - 1)) ? mapServiceUrl : (mapServiceUrl + "/")) + getCgtConfig().getShopLayerIndex(); selectedPoint = mapView.toMapPoint(x, y); Point pointMin = mapView.toMapPoint(x - 10, y - 10); Point pointMax = mapView.toMapPoint(x + 10, y + 10); Envelope buffer = new Envelope(pointMin.getX(), pointMin.getY(), pointMax.getX(), pointMax.getY()); FeatureSet results = MapUtil.executeQueryByGeometry(queryLayerUrl, buffer, null, true, fieldArrayPart2, SpatialRelationship.INTERSECTS, mapView.getSpatialReference()); Graphic[] graphics = results.getGraphics(); Graphic graphic = graphics[0]; shequ = (String)graphic.getAttributeValue(fieldArrayPart2[5]); shequid = (String)graphic.getAttributeValue(fieldArrayPart2[4]); if (results != null && results.getGraphics() != null && results.getGraphics().length > 0) { msg.obj = results.getGraphics(); msg.arg1 = HandlerStatus.HANDLE_OK; } else{ msg.arg1 = HandlerStatus.HANDLE_FAIL; } } catch (Exception e) { msg.arg1 = HandlerStatus.HANDLE_FAIL; } thread.sendMessage(msg); } } }; showProgress("获取商户中。。。", "地图取点"); thread.start(); } private void getPartByXY(final float x, final float y) { thread = new BaseThread(baseHandler) { @Override public void runThread() { Message msg = thread.obtainMessage(); if (msg != null) { msg.what = HandlerStatus.MAP_QUERYPART; try { String mapServiceUrl = getCgtConfig().getMapServiceUrl(); // String queryLayerUrl = ("/".equals(mapServiceUrl.charAt(mapServiceUrl.length() - 1)) ? mapServiceUrl : (mapServiceUrl + "/")) + getCgtConfig().getPartLayerIndex(); // String queryLayerUrl = ApplicationMain.getInstance().getCgtConfig().getUnitServiceUrl()+"/0"; String queryLayerUrl = ApplicationMain.getInstance().getCgtConfig().getUnitServiceUrl(); String querySqLayerUrl = ("/".equals(mapServiceUrl.charAt(mapServiceUrl.length() - 1)) ? mapServiceUrl : (mapServiceUrl + "/")) + getCgtConfig().getSqLayerIndex(); selectedPoint = mapView.toMapPoint(x, y); Point pointMin = mapView.toMapPoint(x - 25, y - 25); Point pointMax = mapView.toMapPoint(x + 25, y + 25); Envelope buffer = new Envelope(pointMin.getX(), pointMin.getY(), pointMax.getX(), pointMax.getY()); Point pointMin1 = mapView.toMapPoint(x - 5, y - 5); Point pointMax1 = mapView.toMapPoint(x + 5, y + 5); Envelope buffer1 = new Envelope(pointMin1.getX(), pointMin1.getY(), pointMax1.getX(), pointMax1.getY()); FeatureSet results = MapUtil.executeQueryByGeometry(queryLayerUrl, buffer, null, true, fieldArrayPart, SpatialRelationship.INTERSECTS, mapView.getSpatialReference()); FeatureSet results1 = MapUtil.executeQueryByGeometry(querySqLayerUrl, buffer1, null, true, fieldArrayPart1, SpatialRelationship.INTERSECTS, mapView.getSpatialReference()); Graphic[] graphics = results1.getGraphics(); Graphic graphic = graphics[0]; shequ = (String)graphic.getAttributeValue(fieldArrayPart1[0]); shequid = (String)graphic.getAttributeValue(fieldArrayPart1[1]); if (results != null && results.getGraphics() != null && results.getGraphics().length > 0) { msg.obj = results.getGraphics(); msg.arg1 = HandlerStatus.HANDLE_OK; } else{ msg.arg1 = HandlerStatus.HANDLE_FAIL; } } catch (Exception e) { msg.arg1 = HandlerStatus.HANDLE_ERROR; } thread.sendMessage(msg); } } }; showProgress("获取部件中。。。", "地图取点"); thread.start(); } @Override public void getCamerasComplete(boolean arg0, TrueMapException arg1) { // TODO Auto-generated method stub } @Override public void getCutImageComplete(boolean arg0, String arg1, TrueMapException arg2) { // TODO Auto-generated method stub } @Override public void getSmallImageComplete(boolean arg0, String arg1, TrueMapException arg2) { // TODO Auto-generated method stub } @Override public void onNeedUpdateCompassPos(StationInfoEx arg0) { // TODO Auto-generated method stub } @Override public void ItemClicked(TrackingItem arg0) { // TODO Auto-generated method stub } @Override public void ItemLabelClicked(TrackingItem arg0) { // TODO Auto-generated method stub } @Override public void mapBottonCheck(ControlBtn arg0) { // TODO Auto-generated method stub } @Override public void mapClicked(PointD arg0) { // TODO Auto-generated method stub } @Override public void mapImageLayerHide() { // TODO Auto-generated method stub } @Override public void mapImageLayerShow() { // TODO Auto-generated method stub } @Override public void mapLongPress(PointD arg0) { // TODO Auto-generated method stub } @Override public void mapZoomIn() { // TODO Auto-generated method stub } @Override public void mapZoomOut() { // TODO Auto-generated method stub } @Override public void controlBtnHold(String controlBtnTag) { if (controlBtnTag.equals("Before")) { holeingControlBtnTag = preTag; isPlay = true; } else if (controlBtnTag.equals("After")) { holeingControlBtnTag = nextTag; isPlay = true; } beginPlayImage(); } private void beginPlayImage() { if (isPlay) { if (hodingTimer != null && hodingTask != null) { hodingTimer.cancel(); hodingTask.cancel(); } hodingTimer = new Timer(); hodingTask = new TimerTask() { @Override public void run() { Message message = new Message(); message.what = 1; hodingHandler.sendMessage(message); } }; hodingTimer.schedule(hodingTask, 2000, 2000); } } private Timer hodingTimer = new Timer(); private TimerTask hodingTask; Handler hodingHandler = new Handler() { @Override public void handleMessage(Message msg) { try { if (isPlay == false) { endPlayImage(); return; } if (holeingControlBtnTag.equals(preTag)) { } else if (holeingControlBtnTag.equals(nextTag)) { } } catch (Exception e) { endPlayImage(); } super.handleMessage(msg); } }; private void endPlayImage() { hodingTask.cancel(); hodingTimer.cancel(); } @Override public void controlBtnSelected(String controlBtnTag) { StationInfo currentStation = new StationInfo(); try { if (controlBtnTag.equals(zoominTag)) { // ldTV.zoomIn(); } else if (controlBtnTag.equals(zoomOutTag)) { // ldTV.zoomOut(); } else if (controlBtnTag.equals(beforeTag)) { if (isPlay) { isPlay = false; return; } // currentStation = ldTV.getCurrentStationJuction(); if (currentStation.isNode() && currentStation.getNodeIsBegin() == 1) { selectNode(currentStation); } else { // ldTV.findPreImage(); } } else if (controlBtnTag.equals(afterTag)) { if (isPlay) { isPlay = false; return; } // currentStation = ldTV.getCurrentStationJuction(); if (currentStation.isNode() && currentStation.getNodeIsBegin() == 0) { selectNode(currentStation); } else { // ldTV.findNextImage(); } } } catch (TrueMapException e) { ShowToast(e.getMessage()); } } @Override //安卓重写返回键事件 public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode== KeyEvent.KEYCODE_BACK){ finish(); } return true; } @Override public void imageClick(ImageTouchEvent arg0) { // TODO Auto-generated method stub } @Override public void imageFling(ImageTouchEvent arg0, ImageTouchEvent arg1, float arg2, float arg3) { // TODO Auto-generated method stub } @Override public void imageHold(ImageTouchEvent arg0) { // TODO Auto-generated method stub } @Override public void imageMarkerSelected(ImageTouchEvent arg0, ArrayList<MarkerInfo> arg1) { // TODO Auto-generated method stub } @Override public void imageTouch(ImageTouchEvent arg0) { // TODO Auto-generated method stub } @Override public void imageonDoubleTap(ImageTouchEvent arg0) { // TODO Auto-generated method stub } // 接口的回调 // 是否得到影像,影像id @Override public void imageGetOver(boolean arg0, String arg1) { } @Override public void imageIDChanged(String arg0) { // TODO Auto-generated method stub } @Override public void imageTypeChanged(String arg0) { // TODO Auto-generated method stub } @Override public void yawChanged(double arg0) { // TODO Auto-generated method stub } @Override public void zoomScalseChanged(double arg0) { // TODO Auto-generated method stub } }