| | |
| | | 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) => { |
| | | timeView.btnClick.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | TimeTpye timeTpye = new TimeTpye(); |
| | | MainPage.BasePageView.AddChidren(timeTpye); |
| | | timeTpye.Show(); |
| | |
| | | |
| | | }; |
| | | //功能 |
| | | functionView.btnClick.MouseUpEventHandler += (sen, e) => { |
| | | functionView.btnClick.MouseUpEventHandler += (sen, e) => |
| | | { |
| | | FunTpye funTpye = new FunTpye(); |
| | | MainPage.BasePageView.AddChidren(funTpye); |
| | | funTpye.Show(LogicMethod.condition_if); |
| | |
| | | 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; |
| | | } |
| | | 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> |
| | | /// 地理围栏View |
| | | /// </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;//经度 |
| | | //WGS84坐标转高德坐标 |
| | | 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); |
| | | } |
| | | //纬度 |
| | | latitude = Convert.ToDouble(input.geo_fence.latitude); |
| | | //经度 |
| | | longitude = Convert.ToDouble(input.geo_fence.longitude); |
| | | //半径 |
| | | r = int.Parse(input.geo_fence.radius); |
| | | } |
| | | } |
| | | 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; } |
| | | |
| | | //申请允许程序写入外部存储,如SD卡上写文件 |
| | | ((BaseActivity)Application.Activity).SetPermission((result2) => |
| | | { |
| | | if (result2 == false) { return; } |
| | | //读取电话状态权限 |
| | | ((BaseActivity)Application.Activity).SetPermission((result3) => |
| | | { |
| | | if (result3 == false) { return; } |
| | | |
| | | //调用方法,跳转页面 |
| | | 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); |
| | | |
| | | }, "android.permission.READ_PHONE_STATE"); |
| | | |
| | | }, "android.permission.WRITE_EXTERNAL_STORAGE"); |
| | | }); |
| | | #endif |
| | | #if __IOS__ |
| | | //调用方法,跳转页面 |
| | | 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", "arrive"); |
| | | 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); |
| | | #endif |
| | | }); |
| | | |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 添加条件 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | |
| | | for (var i = 0; i < Logic.currlogic.input.Count; i++) |
| | | { |
| | | var condition_type = Logic.currlogic.input[i].condition_type; |
| | | if (condition_type == "10") |
| | | if (condition_type == "10" || condition_type == "8") |
| | | { |
| | | //支持场景=10,地理围栏=8 |
| | | ///找到标记索引,退出循环体 |
| | | index = i; |
| | | break; |