| | |
| | | using Shared; |
| | | namespace HDL_ON.UI.UI2.Intelligence.Automation |
| | | { |
| | | public class AddInputType : FrameLayout |
| | | { |
| | | public AddInputType() |
| | | public class AddInputType : FrameLayout |
| | | { |
| | | Tag = "Logic"; |
| | | } |
| | | public void Show() |
| | | { |
| | | LogicView.TopView topView = new LogicView.TopView(); |
| | | this.AddChidren(topView.FLayoutView()); |
| | | topView.clickBackBtn.MouseUpEventHandler += (e, sen) => |
| | | { |
| | | RemoveFromParent(); |
| | | }; |
| | | topView.topNameBtn.TextID = StringId.selectionCondition; |
| | | |
| | | FrameLayout viewLayout = new FrameLayout |
| | | { |
| | | Y = Application.GetRealHeight(64), |
| | | Width = Application.GetRealWidth(LogicView.TextSize.view375), |
| | | Height = Application.GetRealHeight(LogicView.TextSize.view667 - 64), |
| | | BackgroundColor = CSS.CSS_Color.viewMiddle, |
| | | }; |
| | | this.AddChidren(viewLayout); |
| | | #region 时间 功能 室外变化 |
| | | //时间 |
| | | LogicView.SelectTypeView timeView = new LogicView.SelectTypeView(); |
| | | timeView.btnText.TextID = StringId.time; |
| | | timeView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png"; |
| | | if (MainView.IsGatewayType) |
| | | { |
| | | viewLayout.AddChidren(timeView.FLayoutView()); |
| | | } |
| | | |
| | | //功能 |
| | | LogicView.SelectTypeView functionView = new LogicView.SelectTypeView(); |
| | | functionView.frameLayout.Y = timeView.frameLayout.Bottom; |
| | | functionView.btnText.TextID = StringId.funLogic; |
| | | functionView.btnIcon.UnSelectedImagePath = "LogicIcon/functionicon.png"; |
| | | viewLayout.AddChidren(functionView.FLayoutView()); |
| | | if (!MainView.IsGatewayType) |
| | | { |
| | | functionView.frameLayout.Y = Application.GetRealHeight(0); |
| | | } |
| | | |
| | | //场景 |
| | | LogicView.SelectTypeView sceneView = new LogicView.SelectTypeView(); |
| | | sceneView.frameLayout.Y = functionView.frameLayout.Bottom; |
| | | sceneView.btnText.TextID = StringId.Scenes; |
| | | sceneView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png"; |
| | | viewLayout.AddChidren(sceneView.FLayoutView()); |
| | | |
| | | //室外变化 |
| | | LogicView.SelectTypeView shiwaiView = new LogicView.SelectTypeView(); |
| | | shiwaiView.frameLayout.Y = sceneView.frameLayout.Bottom; |
| | | shiwaiView.btnText.TextID = StringId.shiwaibainhua; |
| | | shiwaiView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png"; |
| | | |
| | | if (MainView.IsGatewayType) |
| | | { |
| | | viewLayout.AddChidren(shiwaiView.FLayoutView()); |
| | | } |
| | | |
| | | //地理围栏 |
| | | LogicView.SelectTypeView likiadaodaView = new LogicView.SelectTypeView(); |
| | | likiadaodaView.frameLayout.Y = shiwaiView.frameLayout.Bottom; |
| | | likiadaodaView.btnText.TextID = StringId.likiadaoda; |
| | | likiadaodaView.btnIcon.UnSelectedImagePath = "LogicIcon/location.png"; |
| | | |
| | | if (MainView.IsGatewayType) |
| | | { |
| | | viewLayout.AddChidren(likiadaodaView.FLayoutView()); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region 所有点击事件 |
| | | //时间 |
| | | timeView.btnClick.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | TimeTpye timeTpye = new TimeTpye(); |
| | | MainPage.BasePageView.AddChidren(timeTpye); |
| | | timeTpye.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | |
| | | }; |
| | | //功能 |
| | | functionView.btnClick.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | FunTpye funTpye = new FunTpye(); |
| | | MainPage.BasePageView.AddChidren(funTpye); |
| | | funTpye.Show(LogicMethod.condition_if); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | }; |
| | | //场景点击事件 |
| | | sceneView.btnClick.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | SceneMethod(); |
| | | }; |
| | | //室外变化 |
| | | shiwaiView.btnClick.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | //if (string.IsNullOrEmpty(Entity.DB_ResidenceData.Instance.CurrentRegion.homeAddress))//.longitude == 0 && Entity.DB_ResidenceData.Instance.CurrentRegion.latitude == 0) |
| | | //{ |
| | | // new PublicAssmebly().TipMsg(StringId.tip, StringId.GatewayLocationInformationIsNotConfigured); |
| | | // return; |
| | | //} |
| | | Weather weather = new Weather(); |
| | | MainPage.BasePageView.AddChidren(weather); |
| | | weather.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | }; |
| | | |
| | | //地理围栏 |
| | | likiadaodaView.btnClick.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | LocationView(this, false); |
| | | }; |
| | | #endregion |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 添加场景 |
| | | /// </summary> |
| | | public void SceneMethod() |
| | | { |
| | | var sceneList = LogicMethod.CurrLogicMethod.GetSceneList(); |
| | | List<string> nameList = new List<string>(); |
| | | for (int i = 0; i < sceneList.Count; i++) |
| | | { |
| | | var scene = sceneList[i]; |
| | | nameList.Add(scene.name); |
| | | } |
| | | PublicInterface publicInterface = new PublicInterface(); |
| | | publicInterface.FrameOrVv(this, nameList, new List<string> { }, StringId.addSceneLogic, (index) => |
| | | { |
| | | var sceneSelecetd = sceneList[index]; |
| | | Input input = new Input(); |
| | | input.sid = sceneSelecetd.sid; |
| | | input.condition_type = "10"; |
| | | Dictionary<string, string> dic = new Dictionary<string, string>(); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "key", "scene"); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "="); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string"); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "value", "on"); |
| | | input.condition.Add(dic); |
| | | AddCondition(input); |
| | | LogicMethod.CurrLogicMethod.RemoveAllView(); |
| | | AddLogic addLogic = new AddLogic(); |
| | | MainPage.BasePageView.AddChidren(addLogic); |
| | | addLogic.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | }); |
| | | } |
| | | /// <summary> |
| | | /// 添加地理围栏 |
| | | /// </summary> |
| | | /// <param name="flMain">Fl main.</param> |
| | | /// <param name="edit">If set to <c>true</c> edit.</param> |
| | | public void LocationView(FrameLayout flMain, bool edit) |
| | | { |
| | | string strname = ""; |
| | | ///通过调试宝给的经纬度<标准GPS> |
| | | double latitude = Entity.DB_ResidenceData.Instance.CurrentRegion.latitude;//纬度 |
| | | double longitude = Entity.DB_ResidenceData.Instance.CurrentRegion.longitude;//经度 |
| | | LogicMethod.CurrLogicMethod.WGS84_to_GCJ02(Entity.DB_ResidenceData.Instance.CurrentRegion.longitude, Entity.DB_ResidenceData.Instance.CurrentRegion.latitude, out longitude, out latitude); |
| | | int r = 500;//默认半径 |
| | | if (edit) |
| | | { |
| | | for (var i = 0; i < Logic.currlogic.input.Count; i++) |
| | | public AddInputType() |
| | | { |
| | | var input = Logic.currlogic.input[i]; |
| | | if (input.condition_type != "8") |
| | | { |
| | | continue; |
| | | } |
| | | if (input.condition[0]["value"] == "arrive") |
| | | { |
| | | //到达某地 |
| | | strname = Language.StringByID(StringId.daoda); |
| | | } |
| | | else |
| | | { |
| | | //离开地点 |
| | | strname = Language.StringByID(StringId.likai); |
| | | } |
| | | //再一次编辑地理围栏 <控件暂时不支持显示记录上一次的状态> |
| | | if (!string.IsNullOrEmpty(input.geo_fence.latitude) && !string.IsNullOrEmpty(input.geo_fence.longitude)) |
| | | { |
| | | ////纬度 |
| | | //var latitude1 = Convert.ToDouble(input.geo_fence.latitude); |
| | | ////经度 |
| | | //var longitude1 = Convert.ToDouble(input.geo_fence.longitude); |
| | | //半径 |
| | | r = int.Parse(input.geo_fence.radius); |
| | | //WGS84坐标转高德坐标 |
| | | //LogicMethod.CurrLogicMethod.WGS84_to_GCJ02(longitude1, latitude1, out longitude, out latitude); |
| | | } |
| | | Tag = "Logic"; |
| | | } |
| | | } |
| | | PublicInterface publicInterface = new PublicInterface(); |
| | | var list = publicInterface.GetViewList("地理围栏"); |
| | | publicInterface.SingleSelectionShow(flMain, list, Language.StringByID(StringId.likiadaoda), strname, (str) => |
| | | { |
| | | /// <summary> |
| | | /// 默认选中是房间时:全部区域 |
| | | /// </summary> |
| | | private Entity.Room selectedRoom = new Entity.Room { roomId = "6688" }; |
| | | /// <summary> |
| | | /// 表示是(条件/目标) |
| | | /// </summary> |
| | | private string if_type = LogicMethod.condition_if; |
| | | public void Show() |
| | | { |
| | | LogicView.TopView topView = new LogicView.TopView(); |
| | | this.AddChidren(topView.FLayoutView()); |
| | | topView.clickBackBtn.MouseUpEventHandler += (e, sen) => |
| | | { |
| | | RemoveFromParent(); |
| | | }; |
| | | topView.topNameBtn.TextID = StringId.selectionCondition; |
| | | |
| | | string valueStr = "arrive"; |
| | | if (str == Language.StringByID(StringId.daoda)) |
| | | { |
| | | //到达某地 |
| | | valueStr = "arrive"; |
| | | } |
| | | else |
| | | { |
| | | //离开 |
| | | valueStr = "leave"; |
| | | } |
| | | FrameLayout viewLayout = new FrameLayout |
| | | { |
| | | Y = Application.GetRealHeight(64), |
| | | Width = Application.GetRealWidth(LogicView.TextSize.view375), |
| | | Height = Application.GetRealHeight(LogicView.TextSize.view667 - 64), |
| | | BackgroundColor = CSS.CSS_Color.viewMiddle, |
| | | }; |
| | | this.AddChidren(viewLayout); |
| | | #region 时间 功能 室外变化 |
| | | //时间 |
| | | LogicView.SelectTypeView timeView = new LogicView.SelectTypeView(); |
| | | timeView.btnText.TextID = StringId.time; |
| | | timeView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png"; |
| | | if (MainView.IsGatewayType) |
| | | { |
| | | viewLayout.AddChidren(timeView.FLayoutView()); |
| | | } |
| | | //场景 |
| | | LogicView.SelectTypeView sceneView = new LogicView.SelectTypeView(); |
| | | sceneView.frameLayout.Y = timeView.frameLayout.Bottom; |
| | | sceneView.btnText.TextID = StringId.Scenes; |
| | | sceneView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png"; |
| | | viewLayout.AddChidren(sceneView.FLayoutView()); |
| | | |
| | | //室外变化 |
| | | LogicView.SelectTypeView shiwaiView = new LogicView.SelectTypeView(); |
| | | shiwaiView.frameLayout.Y = sceneView.frameLayout.Bottom; |
| | | shiwaiView.btnText.TextID = StringId.shiwaibainhua; |
| | | shiwaiView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png"; |
| | | |
| | | if (MainView.IsGatewayType) |
| | | { |
| | | viewLayout.AddChidren(shiwaiView.FLayoutView()); |
| | | } |
| | | |
| | | //地理围栏 |
| | | LogicView.SelectTypeView likiadaodaView = new LogicView.SelectTypeView(); |
| | | likiadaodaView.frameLayout.Y = shiwaiView.frameLayout.Bottom; |
| | | likiadaodaView.btnText.TextID = StringId.likiadaoda; |
| | | likiadaodaView.btnIcon.UnSelectedImagePath = "LogicIcon/location.png"; |
| | | |
| | | if (MainView.IsGatewayType) |
| | | { |
| | | viewLayout.AddChidren(likiadaodaView.FLayoutView()); |
| | | } |
| | | ////功能 |
| | | ///产品经理君焕要求,设备功能移到这里。<2022-3-7> |
| | | new FunTpye(LogicMethod.condition_if).FunTypeView(viewLayout, likiadaodaView.frameLayout.Bottom,4); |
| | | |
| | | #endregion |
| | | |
| | | #region 所有点击事件 |
| | | //时间 |
| | | timeView.btnClick.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | TimeTpye timeTpye = new TimeTpye(); |
| | | MainPage.BasePageView.AddChidren(timeTpye); |
| | | timeTpye.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | |
| | | }; |
| | | |
| | | //场景点击事件 |
| | | sceneView.btnClick.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | SceneMethod(); |
| | | }; |
| | | //室外变化 |
| | | shiwaiView.btnClick.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | //if (string.IsNullOrEmpty(Entity.DB_ResidenceData.Instance.CurrentRegion.homeAddress))//.longitude == 0 && Entity.DB_ResidenceData.Instance.CurrentRegion.latitude == 0) |
| | | //{ |
| | | // new PublicAssmebly().TipMsg(StringId.tip, StringId.GatewayLocationInformationIsNotConfigured); |
| | | // return; |
| | | //} |
| | | Weather weather = new Weather(); |
| | | MainPage.BasePageView.AddChidren(weather); |
| | | weather.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | }; |
| | | //地理围栏 |
| | | likiadaodaView.btnClick.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | LocationView(this, false); |
| | | }; |
| | | #endregion |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 添加场景 |
| | | /// </summary> |
| | | public void SceneMethod() |
| | | { |
| | | var sceneList = LogicMethod.CurrLogicMethod.GetSceneList(); |
| | | List<string> nameList = new List<string>(); |
| | | for (int i = 0; i < sceneList.Count; i++) |
| | | { |
| | | var scene = sceneList[i]; |
| | | nameList.Add(scene.name); |
| | | } |
| | | PublicInterface publicInterface = new PublicInterface(); |
| | | publicInterface.FrameOrVv(this, nameList, new List<string> { }, StringId.addSceneLogic, (index) => |
| | | { |
| | | var sceneSelecetd = sceneList[index]; |
| | | Input input = new Input(); |
| | | input.sid = sceneSelecetd.sid; |
| | | input.condition_type = "10"; |
| | | Dictionary<string, string> dic = new Dictionary<string, string>(); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "key", "scene"); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "="); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string"); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "value", "on"); |
| | | input.condition.Add(dic); |
| | | AddCondition(input); |
| | | LogicMethod.CurrLogicMethod.RemoveAllView(); |
| | | AddLogic addLogic = new AddLogic(); |
| | | MainPage.BasePageView.AddChidren(addLogic); |
| | | addLogic.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | }); |
| | | } |
| | | /// <summary> |
| | | /// 添加地理围栏 |
| | | /// </summary> |
| | | /// <param name="flMain">Fl main.</param> |
| | | /// <param name="edit">If set to <c>true</c> edit.</param> |
| | | public void LocationView(FrameLayout flMain, bool edit) |
| | | { |
| | | string strname = ""; |
| | | ///通过调试宝给的经纬度<标准GPS> |
| | | double latitude = Entity.DB_ResidenceData.Instance.CurrentRegion.latitude;//纬度 |
| | | double longitude = Entity.DB_ResidenceData.Instance.CurrentRegion.longitude;//经度 |
| | | LogicMethod.CurrLogicMethod.WGS84_to_GCJ02(Entity.DB_ResidenceData.Instance.CurrentRegion.longitude, Entity.DB_ResidenceData.Instance.CurrentRegion.latitude, out longitude, out latitude); |
| | | int r = 500;//默认半径 |
| | | if (edit) |
| | | { |
| | | for (var i = 0; i < Logic.currlogic.input.Count; i++) |
| | | { |
| | | var input = Logic.currlogic.input[i]; |
| | | if (input.condition_type != "8") |
| | | { |
| | | continue; |
| | | } |
| | | if (input.condition[0]["value"] == "arrive") |
| | | { |
| | | //到达某地 |
| | | strname = Language.StringByID(StringId.daoda); |
| | | } |
| | | else |
| | | { |
| | | //离开地点 |
| | | strname = Language.StringByID(StringId.likai); |
| | | } |
| | | //再一次编辑地理围栏 <控件暂时不支持显示记录上一次的状态> |
| | | if (!string.IsNullOrEmpty(input.geo_fence.latitude) && !string.IsNullOrEmpty(input.geo_fence.longitude)) |
| | | { |
| | | ////纬度 |
| | | //var latitude1 = Convert.ToDouble(input.geo_fence.latitude); |
| | | ////经度 |
| | | //var longitude1 = Convert.ToDouble(input.geo_fence.longitude); |
| | | //半径 |
| | | r = int.Parse(input.geo_fence.radius); |
| | | //WGS84坐标转高德坐标 |
| | | //LogicMethod.CurrLogicMethod.WGS84_to_GCJ02(longitude1, latitude1, out longitude, out latitude); |
| | | } |
| | | } |
| | | } |
| | | PublicInterface publicInterface = new PublicInterface(); |
| | | var list = publicInterface.GetViewList("地理围栏"); |
| | | publicInterface.SingleSelectionShow(flMain, list, Language.StringByID(StringId.likiadaoda), strname, (str) => |
| | | { |
| | | |
| | | string valueStr = "arrive"; |
| | | if (str == Language.StringByID(StringId.daoda)) |
| | | { |
| | | //到达某地 |
| | | valueStr = "arrive"; |
| | | } |
| | | else |
| | | { |
| | | //离开 |
| | | valueStr = "leave"; |
| | | } |
| | | |
| | | #if __Android__ |
| | | //申请定位权限 |
| | | ((BaseActivity)Application.Activity).SetGPSLocationPermission((result1) => |
| | | { |
| | | if (result1 == false) { return; } |
| | | //申请定位权限 |
| | | ((BaseActivity)Application.Activity).SetGPSLocationPermission((result1) => |
| | | { |
| | | if (result1 == false) { return; } |
| | | |
| | | //申请允许程序写入外部存储,如SD卡上写文件 |
| | | ((BaseActivity)Application.Activity).SetPermission((result2) => |
| | | { |
| | | if (result2 == false) { return; } |
| | | //读取电话状态权限 |
| | | ((BaseActivity)Application.Activity).SetPermission((result3) => |
| | | { |
| | | if (result3 == false) { return; } |
| | | //调用方法,跳转页面 |
| | | Location(valueStr, strname, latitude, longitude, r); |
| | | }, "android.permission.READ_PHONE_STATE"); |
| | | //申请允许程序写入外部存储,如SD卡上写文件 |
| | | ((BaseActivity)Application.Activity).SetPermission((result2) => |
| | | { |
| | | if (result2 == false) { return; } |
| | | //读取电话状态权限 |
| | | ((BaseActivity)Application.Activity).SetPermission((result3) => |
| | | { |
| | | if (result3 == false) { return; } |
| | | //调用方法,跳转页面 |
| | | Location(valueStr, strname, latitude, longitude, r); |
| | | }, "android.permission.READ_PHONE_STATE"); |
| | | |
| | | }, "android.permission.WRITE_EXTERNAL_STORAGE"); |
| | | }); |
| | | }, "android.permission.WRITE_EXTERNAL_STORAGE"); |
| | | }); |
| | | #endif |
| | | #if __IOS__ |
| | | //调用方法,跳转页面 |
| | | Location(valueStr, strname, latitude, longitude, r); |
| | | #endif |
| | | }); |
| | | }); |
| | | |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 地理围栏View |
| | | /// </summary> |
| | | /// <param name="valueStr">进入(arrive)或者离开(leave)</param> |
| | | /// <param name="strname"></param> |
| | | /// <param name="latitude">纬度</param> |
| | | /// <param name="longitude">经度</param> |
| | | /// <param name="r">半径(默认500米)</param> |
| | | private void Location(string valueStr, string strname, double latitude, double longitude, int r) |
| | | { |
| | | if (r == 0) |
| | | { |
| | | //按道理说不会出现 |
| | | r = 500; |
| | | } |
| | | //调用方法,跳转页面 |
| | | GDMapKit.Show((mLatitude, mLongitude, mRadius, name) => |
| | | { |
| | | //高德坐标转WGS84坐标(高德地图设置GPS) |
| | | double out_lng, out_lat; |
| | | LogicMethod.CurrLogicMethod.GCJ02_to_WGS84(mLongitude, mLatitude, out out_lng, out out_lat); |
| | | Input input = new Input(); |
| | | input.sid = LogicMethod.CurrLogicMethod.NewSid(); |
| | | input.condition_type = "8"; |
| | | Dictionary<string, string> dic = new Dictionary<string, string>(); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "key", "direction"); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "="); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string"); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "value", valueStr); |
| | | input.condition.Add(dic); |
| | | //纬度 |
| | | input.geo_fence.latitude = out_lat.ToString(); |
| | | //经度 |
| | | input.geo_fence.longitude = out_lng.ToString(); |
| | | //半径<单位米> |
| | | input.geo_fence.radius = mRadius.ToString(); |
| | | AddCondition(input); |
| | | LogicMethod.CurrLogicMethod.RemoveAllView(); |
| | | AddLogic addLogic = new AddLogic(); |
| | | MainPage.BasePageView.AddChidren(addLogic); |
| | | addLogic.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | |
| | | }, strname, Language.StringByID(StringId.save), true, latitude, longitude, r); |
| | | } |
| | | /// <summary> |
| | | /// 添加条件 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | private void AddCondition(Input input) |
| | | { |
| | | ///记录索引值 |
| | | int index = -1; |
| | | for (var i = 0; i < Logic.currlogic.input.Count; i++) |
| | | { |
| | | var condition_type = Logic.currlogic.input[i].condition_type; |
| | | if (condition_type == "10" || condition_type == "8") |
| | | { |
| | | //支持场景=10,地理围栏=8 |
| | | ///找到标记索引,退出循环体 |
| | | index = i; |
| | | break; |
| | | } |
| | | } |
| | | if (index != -1) |
| | | { |
| | | //移除旧数据 |
| | | Logic.currlogic.input.RemoveAt(index); |
| | | //新数据插入旧数据的位置 |
| | | Logic.currlogic.input.Insert(index, input); |
| | | } |
| | | else |
| | | { |
| | | Logic.currlogic.input.Add(input); |
| | | } |
| | | /// <summary> |
| | | /// 地理围栏View |
| | | /// </summary> |
| | | /// <param name="valueStr">进入(arrive)或者离开(leave)</param> |
| | | /// <param name="strname"></param> |
| | | /// <param name="latitude">纬度</param> |
| | | /// <param name="longitude">经度</param> |
| | | /// <param name="r">半径(默认500米)</param> |
| | | private void Location(string valueStr, string strname, double latitude, double longitude, int r) |
| | | { |
| | | if (r == 0) |
| | | { |
| | | //按道理说不会出现 |
| | | r = 500; |
| | | } |
| | | //调用方法,跳转页面 |
| | | GDMapKit.Show((mLatitude, mLongitude, mRadius, name) => |
| | | { |
| | | //高德坐标转WGS84坐标(高德地图设置GPS) |
| | | double out_lng, out_lat; |
| | | LogicMethod.CurrLogicMethod.GCJ02_to_WGS84(mLongitude, mLatitude, out out_lng, out out_lat); |
| | | Input input = new Input(); |
| | | input.sid = LogicMethod.CurrLogicMethod.NewSid(); |
| | | input.condition_type = "8"; |
| | | Dictionary<string, string> dic = new Dictionary<string, string>(); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "key", "direction"); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "comparator", "="); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "data_type", "string"); |
| | | LogicMethod.CurrLogicMethod.dictionary(dic, "value", valueStr); |
| | | input.condition.Add(dic); |
| | | //纬度 |
| | | input.geo_fence.latitude = out_lat.ToString(); |
| | | //经度 |
| | | input.geo_fence.longitude = out_lng.ToString(); |
| | | //半径<单位米> |
| | | input.geo_fence.radius = mRadius.ToString(); |
| | | AddCondition(input); |
| | | LogicMethod.CurrLogicMethod.RemoveAllView(); |
| | | AddLogic addLogic = new AddLogic(); |
| | | MainPage.BasePageView.AddChidren(addLogic); |
| | | addLogic.Show(); |
| | | MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; |
| | | |
| | | }, strname, Language.StringByID(StringId.save), true, latitude, longitude, r); |
| | | } |
| | | /// <summary> |
| | | /// 添加条件 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | private void AddCondition(Input input) |
| | | { |
| | | ///记录索引值 |
| | | int index = -1; |
| | | for (var i = 0; i < Logic.currlogic.input.Count; i++) |
| | | { |
| | | var condition_type = Logic.currlogic.input[i].condition_type; |
| | | if (condition_type == "10" || condition_type == "8") |
| | | { |
| | | //支持场景=10,地理围栏=8 |
| | | ///找到标记索引,退出循环体 |
| | | index = i; |
| | | break; |
| | | } |
| | | } |
| | | if (index != -1) |
| | | { |
| | | //移除旧数据 |
| | | Logic.currlogic.input.RemoveAt(index); |
| | | //新数据插入旧数据的位置 |
| | | Logic.currlogic.input.Insert(index, input); |
| | | } |
| | | else |
| | | { |
| | | Logic.currlogic.input.Add(input); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |