From afba150d915d361f1735db91bd68881bf8c88e1e Mon Sep 17 00:00:00 2001 From: lishuo Date: Mon, 19 Apr 2021 14:38:31 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=A7=E9=AA=91&=E9=87=8D=E9=AA=91=E9=AA=91?= =?UTF-8?q?=E8=A1=8C=E7=BB=93=E6=9E=9C=E9=A1=B5=E7=BB=86=E8=8A=82=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Mapbox/Examples/Resources/MapboxBlue.mat | 9 +- .../Mapbox/Examples/Resources/MapboxWhite.mat | 7 +- .../Map/InitializeMapWithLocationProvider.cs | 2 +- Assets/Mapbox/User/Modifiers.meta | 8 + Assets/NuGet/Apis/Models.meta | 8 + Assets/Resources/Images/编组 3.png | Bin 0 -> 4791 bytes Assets/Resources/Images/编组 3.png.meta | 104 + .../UI/Prefab/Ride/MiniMapPlayer.prefab | 4 +- .../UI/Prefab/Ride/ReviewPlayer.prefab | 7 +- Assets/Scenes/Ride/Ride.unity | 5038 ++++++++++------- Assets/Scenes/Ride/Scripts/AbstractPlayer.cs | 32 +- .../Scenes/Ride/Scripts/CyclingController.cs | 142 +- .../Ride/Scripts/DeviceServiceMonoBase.cs | 13 +- .../Ride/Scripts/InitMiniMapProvider.cs | 4 +- .../Ride/Scripts/MiniMapPlayerController.cs | 2 +- .../Model/CyclingModels/ReviewModel.cs | 67 + .../Model/CyclingModels/ReviewModel.cs.meta | 11 + .../Model/CyclingModels/SingleModel.cs | 54 +- .../Ride/Scripts/Model/RecorderDataModel.cs | 16 +- Assets/Scenes/Ride/Scripts/NearByFactory.cs | 4 +- .../Ride/Scripts/OtherPlayerController.cs | 12 +- .../Scenes/Ride/Scripts/PlayerController.cs | 33 +- Assets/Scenes/Ride/Scripts/ReviewFactory.cs | 12 +- Assets/Scenes/Ride/Scripts/RouteController.cs | 71 +- Assets/Scenes/Ride/Scripts/SingleUIManager.cs | 154 +- Assets/Scenes/Ride/icons/output27.png | Bin 0 -> 17067 bytes Assets/Scenes/Ride/icons/output27.png.meta | 104 + Assets/Scripts/Apis/MapInterruptRecordApi.cs | 9 + Assets/Scripts/Apis/Models/AntManufacturer.cs | 17 + .../Apis/Models/AntManufacturer.cs.meta | 11 + Assets/Scripts/Apis/Models/RouteResult.cs | 4 +- Assets/Scripts/App.cs | 4 +- .../UI/Prefab/Login/LoginRegOptions.cs | 2 + .../Scripts/UI/Prefab/ResultList/RouteItem.cs | 15 +- 34 files changed, 3601 insertions(+), 2379 deletions(-) create mode 100644 Assets/Mapbox/User/Modifiers.meta create mode 100644 Assets/NuGet/Apis/Models.meta create mode 100644 Assets/Resources/Images/编组 3.png create mode 100644 Assets/Resources/Images/编组 3.png.meta create mode 100644 Assets/Scenes/Ride/Scripts/Model/CyclingModels/ReviewModel.cs create mode 100644 Assets/Scenes/Ride/Scripts/Model/CyclingModels/ReviewModel.cs.meta create mode 100644 Assets/Scenes/Ride/icons/output27.png create mode 100644 Assets/Scenes/Ride/icons/output27.png.meta create mode 100644 Assets/Scripts/Apis/Models/AntManufacturer.cs create mode 100644 Assets/Scripts/Apis/Models/AntManufacturer.cs.meta diff --git a/Assets/Mapbox/Examples/Resources/MapboxBlue.mat b/Assets/Mapbox/Examples/Resources/MapboxBlue.mat index fd888e9b..d1ac315c 100644 --- a/Assets/Mapbox/Examples/Resources/MapboxBlue.mat +++ b/Assets/Mapbox/Examples/Resources/MapboxBlue.mat @@ -4,8 +4,9 @@ Material: serializedVersion: 6 m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_Name: MapboxBlue m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} m_ShaderKeywords: _EMISSION @@ -72,5 +73,5 @@ Material: - _UVSec: 0 - _ZWrite: 1 m_Colors: - - _Color: {r: 0.25882354, g: 0.39215687, b: 0.9843137, a: 1} - - _EmissionColor: {r: 0.1551394, g: 0.23505972, b: 0.59, a: 1} + - _Color: {r: 0.9764706, g: 0.1882353, b: 0.5254902, a: 0.6509804} + - _EmissionColor: {r: 0.00024361434, g: 0.00029474328, b: 0.00019549299, a: 1} diff --git a/Assets/Mapbox/Examples/Resources/MapboxWhite.mat b/Assets/Mapbox/Examples/Resources/MapboxWhite.mat index 3a24caaf..2666c084 100644 --- a/Assets/Mapbox/Examples/Resources/MapboxWhite.mat +++ b/Assets/Mapbox/Examples/Resources/MapboxWhite.mat @@ -4,8 +4,9 @@ Material: serializedVersion: 6 m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} m_Name: MapboxWhite m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} m_ShaderKeywords: _EMISSION @@ -73,4 +74,4 @@ Material: - _ZWrite: 1 m_Colors: - _Color: {r: 0.7764706, g: 0.8235294, b: 0.88235295, a: 1} - - _EmissionColor: {r: 0.331, g: 0.30893335, b: 0.29001904, a: 1} + - _EmissionColor: {r: 0.0354168, g: 0.034315474, b: 0.043327622, a: 1} diff --git a/Assets/Mapbox/Unity/Map/InitializeMapWithLocationProvider.cs b/Assets/Mapbox/Unity/Map/InitializeMapWithLocationProvider.cs index ad106690..5c84a5ea 100644 --- a/Assets/Mapbox/Unity/Map/InitializeMapWithLocationProvider.cs +++ b/Assets/Mapbox/Unity/Map/InitializeMapWithLocationProvider.cs @@ -37,7 +37,7 @@ { //初始化map var point = mainController.GetCenterCoordinate(); - _map.Initialize(new Utils.Vector2d(point[0], point[1]), _map.AbsoluteZoom); + _map.Initialize(point, _map.AbsoluteZoom); } } } diff --git a/Assets/Mapbox/User/Modifiers.meta b/Assets/Mapbox/User/Modifiers.meta new file mode 100644 index 00000000..361d8c26 --- /dev/null +++ b/Assets/Mapbox/User/Modifiers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9281e8bf86b8d70459ba6c65898fee31 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/NuGet/Apis/Models.meta b/Assets/NuGet/Apis/Models.meta new file mode 100644 index 00000000..81b76899 --- /dev/null +++ b/Assets/NuGet/Apis/Models.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6dd204d295b8fd5418483cecb462bd25 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Images/编组 3.png b/Assets/Resources/Images/编组 3.png new file mode 100644 index 0000000000000000000000000000000000000000..f519d6f45f932abc838636ecfef48be588c51267 GIT binary patch literal 4791 zcmV;o5=iZdP)n->OIMwHy1(!1ufP8K_4U_%4`c0w zpm+3gJD+C*1dF~j-8(FFc!EerI^)El`jcPFN9WdMQ;YFu7~|Xk$3)2aEIVc)i~i%; zm_P`@5kyP`%u(!>DaJ@-Vzgi$3;ISPO6f$5O-$B_fMH$DI?2LyAqj7Xm=nsrzg!u5 zk4})9IUE>yuTDtuX2A_iR1-hTC9(+;X_6s&W|y#KNfuXWDpPTZi72;sPA?OcXBb~` z6cjo9jRX+^A`nD7pJih26cd77qKKrPg1)hp!bf}TeoeuRw=7PG+M^P>2hE}$G>fW0 zEEB6zTTAsO45G6IHf9bnqrbw{sjNDqn$w;ieejZwPJq;^<PQjuHA^rA8*@uz)Qev|DKpyoN-$DP*x?7+g*MZFd^N$$U=%Yspxn$v zvDX5|6ii7t8DeVUTQS_%5J}7^=pBJB(YIO*<#|1a@~v0yst=O>kt;-$WMb<<3|zZB zs0IJ6mlaG-y-Wg038+eCzkE2~an+x6q9Sojln-M@mDMXkKXV$C_=q^|7x8?W#?jd! zbz+FUD%i6%)M2i8CL=Mhru$`tetS5(~f&Sa!#z(DEM({?9y9`AD0AN~bcyNH{L=aYAP#NvFvstVCW9QVO8rJCrOuX=l zHjwP>&9qY@Fu8+B{B?iH*#Cmji?1;6Z{HzvLFv1j*_$z^L<%iln5ai-BsE4ol)gaW z^><>ltEt2}sr@H<1C~aQd#9Ev8z0gcrAj2Fp<-x)RK*>3pkx$@=s^uC`5BC0+--sF z#@IpKjJ-N735xz0$_A59*VzLcqSXRC^wuBPSQKa?l##|y%!sVC7(oma6X--vwUnN& z*5M$uXVaKb!;-5TYymRRJWWpxN+Ko{$2`pl*XZfUbEzskW~2bpn$RqW7_K6OBjyOG z#mx#V8DU)2Z59P><1O`~`i`C-h_9D-Zu*1{gMwd$ZqNtJK#N2dmgl3e62zGDg4HGd zz`LP{WGL?(lB;IeKl+&{ipF$`h7rY|?A|%FR7Vtv(_Bu|FhJFW6*DV(?@zP%Af9^~j%&>3xg8?XzXjve;=3UpXXN(L3Jbcjs zjK6b9vsfXHneH1NX#(T5u}64$=`AY=Qm+B8Dh^WVzH2MxPi z;q14uQrk#9jXCBKeeLwlSdM0L4KBOE`J~ z^WLHvk&PXkvYeD3C;GXm6njS#^V1@^0*St{#et|j7w3VifWNh2ysHhHLfV1>F32Kl z1QZrvrG=rC9&!b;J2ArsxurnnkM1Dh{Kwsup>=6IG6hNqgHco{C`~D1vK&dUM({a5 zx2rNFt!@QV?^J=%iC;q}uA7KNO(v--D6gqpbo(Hb8jWCAUhsx_{DF&_hEGEx=P1M6 zafcyH*=MW@!%;D$YLLB0=B+DuASfY^sxIX#qbN;FWFY{mC}J)NK(%jVeN71InTe^W z0Jsxo6sRQ9oW;i;d4@pb-GTY&cG1m9nyk$Hx3Dr#P!z_}(W)@;&HSlcE-j&2s)sYL zzI#z6jSt;#p)!-=8sUX^j^2Yld3qKhRg6D! z_3x!XSe2i{EW23G0MF*%!>a#=4(n7r=o?*u&a@4KwMXYkTIO=6$)l<6%BCS5IoI*9 zZ}gwBE&f7B$`$=1%R0gcOpH$5F4Hg)+r>M^61H_a{5m2KW~fC$5H;0%4?Fq6)|Qcdd%I`<{_NVgJbKdcl}${z*@_6Q7Yl5a4Haq0Go~`fmoHK%ymq!rqb3>pc0YW8vP%_J;OdB+yEv^&o`lpV4tC@s&4bj^_zuzEZBKnRA z$W9d&C}cIm-to@sgAWKAp{LPg@=d1@(o%00EC#+>a1Y*s#fT+gVY3LtuniIDKd#3+ z<1Geh7`^_>&2qNf#AnM_7G+S7R z=!P^Qba<{ng4OQUGjJN#dMDQ7wx+cEQp7{_-Eg?h%N5V;Lyco2gN8H^k0RBrtWg!a zZ5AKG*wee?as#n%8xl)nfFoiQX5+(&t%i0OdC=%!vF#w1z>gdm@EjSeSU zc*ygn1^5yEMN1~4sRG$X7^9gvPY`lO=?~G9_e~E%#I6?|tm3Hx*+v-aLF=l*$el-z zN~^amu!7s2+g^s0GzVW-gI(0VNSo6=+QD8AlTWP4|yn6Jset_XZSGI{u%6Hb@8( zAT7|{1EM3hvC6Bo*2sh9=u%hqgg_|h^9CW6OM(;V}eC7-7W)fIF8{%tERUT+!A2x+2 zmmmGiP6czl;p)2yP4X!h&W2$iuj{I8`Z2+!KydA^jfA+zCN$EV-+_a-a}8L5M74Kx zU5!OQ$|8jj5l$NAL?s16Z9>#0ZazJ8)?u4Ymlv1I(LPbZqOZvOrA1Fr7w z=tO9iO37bzGT-sZSveVMY#J^$%H;eZT(Uit19=~Y-syz&Ja4cxzHzfoIGge5{?YTX z9DPrfQ9tYG8-A(O%}?UnhMrQ0xqgc^Upyk140m!|)|l(EGt0wP={i`HnFAn`!7Lz+ ziFy|J7iJmskNh3BZdYPXU57L1FBHx=%Y=zuNo2oW?Zmyu?l|H1kO&X<%zOYG3bab6196%^Wj!T*R|)=UE3B> zb>p4*zrlnBZ6}wDS4NW0-gH(loRa9&PnUAr?a|n$1GyrdsFwPI%Ogr-TOFWPwh&;6#z=Q1WLM9r91KNsDj`X z9Kc5(9!nK$eh>5Be_|@S2qOCT|1wUG?L6G$E6d|UJ8XEn>5eIg?lOiGlh0w&P55@C za9FX(5Y#{3lPfeWW+Y)_QIm0;*+%#MPyLwG!GKPtN+f+4#%^U(~q6OqV{$ z@QE*f7?dq1#2@!Ewk!QG(c^q$sWLRyGGi^nj1<)PKFJ*#KQlTH_M1|UiK(ZQvgl30 zR$v~U^1O_mL_;?vcpg6!e>F3&sHM=lz-=ptu7ltP#^V_CZXR@bij+fGeUjDZAQe}5 zmxNg`#d{Z&M0Z;p0Yj};Dtm9@+XtU@pmRa)%H?FEzfgvg)6YRU3!S9IRVl|w&?eAU zs8SHIqn?x&IDfu;$X^|s_LY#dYy@v>6$_`PA52vaaXlDY2zePwgVI16 zy@tm{T=~I3J-dqI|779BHu|f?846VNtx7IRkFV#*t2-B^W}y4hbnDX<^5z&pLV zuPx*HD~8*3SlO;>g=I?$f~8EKN4q|?0J=#k|CilhTV#^enbD;^3Uuv}LY_ihc=c7I zI)}tBvRqiMZ2EQrkpd{Jpj^inP0C&J)=^4PHWpdANxBT1 z7QE7m?(wUCorc!og-WF_Mc|Jce?W(D&soHUltXVdtxzc{PH(!Gnk6*R7YS4b4PokK zI)BQmmruiu@Q#4($llU|gBKV1qE5w-C7MS_r#4Epy0U4281%aZKgglP_kMK~^g;}3lrK-@Vbp~knVlcSH ziF};_J?^h9RR-^KRm<6f;4)n`SIR*PMOe;%>igaY%4ZMxbd$5}@#C-@-$;|GOXyC+ z=+9PZ9~VvZAUgXF_c1uWw2$U=P$C#>`2UEwxpd?~xAVI;;G{4=Ko(wGId)d9CN@Ce zGg9||`K;0@ID4kNY}uP}85uKvGZ+dYL2%O)j$i99Bu)C(Vw^pW0&XsO-ff-o@F@Z4 z>RvU9F2QGgFN3^G6nsW+&hNtY^s{sxhJxq|M_5L2%-Kf3hR_r2YhB#?I_%Q3TF0BfT?4;^Qt`uAvJ1}S currentSlopeDistance; } public double Elevation { get => elevation; } public double LastEndDistance { get => lastEndDistance; } - public Vector2d Nextlatlong { get => nextlatlong; } + public Vector2d Currentlatlong { get => currentlatlong; } #endregion #region 游戏状态控制 @@ -116,12 +117,10 @@ namespace Assets.Scenes.Ride.Scripts protected BaseCycling cyclingExcutor; protected virtual void Init() { - characterAnimator = GetComponentInChildren(); + //characterAnimator = GetComponentInChildren(); mainController = transform.parent.GetComponent(); map = transform.parent.Find("Map").GetComponent(); mapData = mainController.GetMapData();//获取路书信息 - nextlatlong = new Vector2d(mapData.List[0].Point[0], mapData.List[0].Point[1]);//初始化人物位置 TODO加上之前骑行距离 - cyclingExcutor = mainController.cyclingController; } protected virtual void Excute() @@ -163,14 +162,14 @@ namespace Assets.Scenes.Ride.Scripts distance = totalDistance - mapData.TotalDistance; totalDistance = mapData.TotalDistance; //characterAnimator.SetBool("ReachEnd", true);//到达终点 - Upload(); + StartCoroutine("LateUpload"); isQuit = true; } //数据处理 - nextlatlong = Along(totalDistance);//下一个坐标 - nextPos = map.GeoToWorldPosition(nextlatlong);//下一个点 - nextPos.y += 0.5f;//提高y轴让人物站在地图上面 + currentlatlong = Along(totalDistance);//下一个坐标 + nextPos = map.GeoToWorldPosition(currentlatlong);//下一个点 + nextPos.y += 0.6f;//提高y轴让人物站在地图上面 prePos = transform.localPosition;//当前点 thisRotation = transform.localRotation; //动画控制 @@ -201,6 +200,13 @@ namespace Assets.Scenes.Ride.Scripts #region 工具类 + IEnumerator LateUpload() + { + yield return new WaitForSeconds(1); + Upload(); + StopCoroutine("LateUpload"); + } + protected string CaptureCamera(Camera camera, Rect rect) { // 创建一个RenderTexture对象 @@ -225,8 +231,8 @@ namespace Assets.Scenes.Ride.Scripts RenderTexture.active = null; // JC: added to avoid errors GameObject.Destroy(rt); // 最后将这些纹理数据,成一个图片文件 - byte[] bytes = screenShot.EncodeToJPG(); - string filename = Application.dataPath + "/"+Guid.NewGuid().ToString() +".jpg"; + byte[] bytes = screenShot.EncodeToPNG(); + string filename = Application.dataPath + "/"+Guid.NewGuid().ToString() +".png"; System.IO.File.WriteAllBytes(filename, bytes); //Debug.Log(string.Format("截屏了一张照片: {0}", filename)); return filename; @@ -259,6 +265,10 @@ namespace Assets.Scenes.Ride.Scripts nextSlope = pointList[nextIndex].Grade; nextSlopeDistance = sumDistance - totalDistance * 1000; currentSlopeDistance = totalDistance * 1000 - (sumDistance - pointList[index].Distance); + ////bearing + //var nextpoint = Turf.Point(new double[] { pointList[nextIndex].Point[1], pointList[nextIndex].Point[0] }); + //var point = Turf.Point(new double[] { currentlatlong.y, currentlatlong.x }); + //bearing = TurfCS.Turf.Bearing(point, nextpoint); } //根据距离计算坐标 Vector2d Along(double endDistance) @@ -271,7 +281,7 @@ namespace Assets.Scenes.Ride.Scripts var ll = ((GeographicPosition)((GeoJSON.Net.Geometry.Point)pt1.Geometry).Coordinates); return new Vector2d(ll.Latitude, ll.Longitude); } - return nextlatlong; + return currentlatlong; } #endregion diff --git a/Assets/Scenes/Ride/Scripts/CyclingController.cs b/Assets/Scenes/Ride/Scripts/CyclingController.cs index f65e2d62..2f573084 100644 --- a/Assets/Scenes/Ride/Scripts/CyclingController.cs +++ b/Assets/Scenes/Ride/Scripts/CyclingController.cs @@ -10,81 +10,49 @@ using Assets.Scenes.Ride.Scripts.Model.CyclingModels; using Assets.Scenes.Ride.Scripts; using Mapbox.Unity.Map; using UnityEngine; +using GeoJSON.Net.Geometry; +using TurfCS; +using Mapbox.Utils; +using Assets.Scripts; public class CyclingController : DeviceServiceMonoBase { - public AbstractMap map; public GameObject player; public GameObject UIObject; - public SelectParamModel selectParamModel; + public RouteResultParam selectParamModel; + public RouteResult routeResult; + public int preticks; #region 参数 private MapDataModel mapData;//当前路书数据 - private double[] coordiantes;//当前地图中心 - private int currentUserId;//当前选中的用户id - public bool isStart;//当前游戏是否开始 - private DateTime startTime;//开始时间 + private Vector2d coordiantes;//当前地图中心 + public bool isStart;//当前游戏是否开始 public CyclingModel cyclingModel;//当前骑行模式 public BaseCycling cyclingController { get; set; } private int RouteId; + private MapApi mapApi; private Route mapRoute; #endregion GameObject loadingcanvas; void Awake() { - cyclingModel = CyclingModel.Single; - InitParam(); //获取路书信息 - mapApi = new MapApi(); + mapApi = ConfigHelper.mapApi; RouteId = App.RouteIdParam > 0? App.RouteIdParam : 376; - //var result = GetTestData(); MapDataModel result = mapApi.GetData(RouteId); - //player = transform.Find("Player").gameObject; - //loadingcanvas = transform.Find("LoadingCanvas").gameObject; - var antConnected = CheckAnt();//初始化ant+设备 - - //if (!antConnected) - //{ - // throw new Exception("请先连接设备"); - //} - //StartCoroutine(requset()); - - var param = mapApi.GetById(RouteId); mapRoute = GetNewInstace(RouteId);//获取一个路书所有的数据 - MapUDPService.Init(); - switch (cyclingModel) + MapUDPService.Init();//初始化TCP + + if (result != null ) { - case CyclingModel.Single: - cyclingController = new SingleModel(mapRoute); - //cyclingModel.OpenCyclingWindow(); - break; - //case CyclingModel.Online: - // CyclingModel = new OnlineModel(Route, param); - // cyclingModel.OpenCyclingWindow(); - // break; - //case CyclingModel.Review: - // if (selectParamModel.RankingsId.Count == 0) - // { - // //TODO:弹窗请选择跟随骑行的人 - // return; - // } - // CyclingModel = new ReviewModel(Route, param); - //cyclingModel.OpenCyclingWindow(); - // break; - } - - if (result != null )//&& mapRoute != null) - { - mapData = result; - coordiantes = result.List[0].Point;//TODO计算当前用户所处的位置 - Init(); + Init(result); } else { - throw new System.Exception("fail to get route data"); + Debug.LogError("获取地图数据失败"); } } private void Start() @@ -92,21 +60,57 @@ public class CyclingController : DeviceServiceMonoBase UIManager.Instance.MainPanel = this.transform.Find("SingleUI/Panel").GetComponent(); UIManager.Instance.ModalsPanel = this.transform.Find("SingleUI/ModalPanel").GetComponent(); } + //加载人物和地图以及UI界面 + private void Init(MapDataModel result) + { + if (App.routeResult != null ) + { + routeResult = App.routeResult; + selectParamModel = App.routeResult.ContinueCyclingParam; + preticks = App.routeResult.Ticks; + } + if (selectParamModel == null) + { + selectParamModel = new RouteResultParam + { + CompetitionId = 0, + ContinueIndex = 0, + ContinueMark = "", + GlobalContinue = false, + EndDistance = 0, + RankingsId = new List(), + OnlineUserId = 0, + RouteId = App.RouteIdParam + }; + } + + App.routeResult = null; + + mapData = result; + double endDistance = 0; + endDistance = selectParamModel.EndDistance; + coordiantes = Along(endDistance); - private void InitParam() - { - selectParamModel = new SelectParamModel(); - selectParamModel.RouteId = App.RouteIdParam; - selectParamModel.RankingsId = new List(); - } - private void Init() - { - //加载人物和地图以及UI界面 map.gameObject.SetActive(true); player.SetActive(true); UIObject.SetActive(true); } + public void SetCyclingModel(CyclingModel mode) + { + this.cyclingModel = mode; + + switch (cyclingModel) + { + case CyclingModel.Single: + cyclingController = new SingleModel(mapRoute, selectParamModel); + break; + case CyclingModel.Review: + cyclingController = new SingleModel(mapRoute, selectParamModel); + break; + } + } + #region 数据处理 /// /// 当前骑行数据的记录器 @@ -127,7 +131,7 @@ public class CyclingController : DeviceServiceMonoBase { return mapData; } - public double[] GetCenterCoordinate() + public Vector2d GetCenterCoordinate() { return coordiantes; } @@ -141,16 +145,20 @@ public class CyclingController : DeviceServiceMonoBase var jsonData = mapApi.GetData(RouteId); return new Route(jsonData, routeInstance.data); } - /// - /// 获取模拟的骑行记录 - /// - /// - public MapDataModel GetTestData() + public Vector2d Along(double endDistance) { - string json = "{'Type':'LineString','TotalDistance':19.17906,'List':[{'Point':[26.092100000000002,119.33686000000002],'Elevation':7.6198},{'Point':[26.09211,119.33749000000002],'Elevation':7.5859},{'Point':[26.092170000000003,119.33840000000001],'Elevation':7.421},{'Point':[26.092260000000003,119.33921000000001],'Elevation':7.3133},{'Point':[26.092270002098761,119.33999000005943],'Elevation':7.2394},{'Point':[26.092280000000002,119.34077],'Elevation':7.2701},{'Point':[26.092240000956789,119.34129500009136],'Elevation':7.3416},{'Point':[26.092200000000002,119.34182000000001],'Elevation':7.4177},{'Point':[26.092083338752424,119.34270666844074],'Elevation':7.5033},{'Point':[26.09196667208499,119.34359333511317],'Elevation':7.2596},{'Point':[26.09185,119.34448],'Elevation':6.8727},{'Point':[26.091680000000004,119.34505000000001],'Elevation':6.4546},{'Point':[26.091536672044878,119.34593333550309],'Elevation':6.0312},{'Point':[26.091393338710645,119.34681666884185],'Elevation':5.751},{'Point':[26.091250000000002,119.3477],'Elevation':5.6373},{'Point':[26.091230000000003,119.34794000000001],'Elevation':5.6052},{'Point':[26.091225001411136,119.3485800001182],'Elevation':5.5997},{'Point':[26.091220000000003,119.34922000000002],'Elevation':5.6907},{'Point':[26.091330000000003,119.34997000000001],'Elevation':6.0231},{'Point':[26.091440000000002,119.35021],'Elevation':6.4916},{'Point':[26.09157,119.35095000000001],'Elevation':7.0092},{'Point':[26.091600000000003,119.3516],'Elevation':7.3641},{'Point':[26.091767507390937,119.35244499640774],'Elevation':7.4909},{'Point':[26.091935009859512,119.353289995235],'Elevation':6.9736},{'Point':[26.092102507405667,119.35413499648182],'Elevation':6.7797},{'Point':[26.092270000000003,119.35498000000001],'Elevation':6.5711},{'Point':[26.092405001867032,119.35571999903352],'Elevation':6.4206},{'Point':[26.092540000000003,119.35646000000001],'Elevation':6.3653},{'Point':[26.09269,119.35732000000002],'Elevation':7.251},{'Point':[26.092710000000004,119.35761000000001],'Elevation':8.2263},{'Point':[26.092703339253426,119.35853666675888],'Elevation':9.8464},{'Point':[26.092696672586847,119.35946333341218],'Elevation':11.8545},{'Point':[26.09269,119.36039000000001],'Elevation':13.6159},{'Point':[26.092665001414368,119.36103000007358],'Elevation':15.1102},{'Point':[26.092640000000003,119.36167],'Elevation':16.3984},{'Point':[26.0925,119.36225],'Elevation':17.1179},{'Point':[26.092270000000003,119.36289000000001],'Elevation':17.3805},{'Point':[26.092200000000002,119.36334000000001],'Elevation':17.3022},{'Point':[26.092180000000003,119.36363000000001],'Elevation':17.2282},{'Point':[26.092190000000002,119.36396],'Elevation':17.2224},{'Point':[26.092290000000002,119.36435000000002],'Elevation':17.1729},{'Point':[26.092100000000002,119.36453000000002],'Elevation':17.1065},{'Point':[26.092000000000002,119.36473000000001],'Elevation':17.0503},{'Point':[26.091910000000002,119.36502000000002],'Elevation':17.1392},{'Point':[26.09193,119.36525],'Elevation':17.2636},{'Point':[26.092150000000004,119.36569000000001],'Elevation':17.4486},{'Point':[26.09233,119.36581000000001],'Elevation':17.7034},{'Point':[26.092540000000003,119.36588],'Elevation':18.1077},{'Point':[26.092750000000002,119.36589000000001],'Elevation':18.5083},{'Point':[26.092950000000002,119.36582000000001],'Elevation':18.892},{'Point':[26.093110000000003,119.36572000000001],'Elevation':19.2643},{'Point':[26.09335,119.36544],'Elevation':19.6256},{'Point':[26.094033333311039,119.36542333352864],'Elevation':20.1707},{'Point':[26.094716666620165,119.36540666686258],'Elevation':21.2487},{'Point':[26.0954,119.36539],'Elevation':22.396},{'Point':[26.09605,119.36548],'Elevation':23.9715},{'Point':[26.09615,119.36567000000001],'Elevation':25.3392},{'Point':[26.096753333417059,119.36562333380944],'Elevation':26.626},{'Point':[26.097356666819095,119.36557666713746],'Elevation':28.1709},{'Point':[26.09796,119.36553],'Elevation':30.077},{'Point':[26.098260000000003,119.36556000000002],'Elevation':32.1094},{'Point':[26.09888000013564,119.36572999910875],'Elevation':34.3101},{'Point':[26.099500000000003,119.36590000000001],'Elevation':36.7362},{'Point':[26.099970000000003,119.36599000000001],'Elevation':39.7763},{'Point':[26.100720000000003,119.36591000000001],'Elevation':43.1691},{'Point':[26.101160000000004,119.36591000000001],'Elevation':46.6581},{'Point':[26.10181,119.36598000000001],'Elevation':50.4232},{'Point':[26.10208,119.36621000000001],'Elevation':53.9898},{'Point':[26.102210000000003,119.36674000000001],'Elevation':57.5845},{'Point':[26.101960000000002,119.36725000000001],'Elevation':61.2459},{'Point':[26.101530000000004,119.36721000000001],'Elevation':64.7154},{'Point':[26.100900000000003,119.36697000000001],'Elevation':68.1881},{'Point':[26.100415000136522,119.36697500001934],'Elevation':71.7923},{'Point':[26.09993,119.36698000000001],'Elevation':75.4172},{'Point':[26.099330000000002,119.36702000000001],'Elevation':79.066},{'Point':[26.09898,119.36725000000001],'Elevation':82.6214},{'Point':[26.098730000000003,119.36766000000001],'Elevation':86.2373},{'Point':[26.09861,119.36793000000002],'Elevation':89.5809},{'Point':[26.09861,119.36874000000002],'Elevation':93.0389},{'Point':[26.098460000000003,119.36911],'Elevation':96.3301},{'Point':[26.098190000000002,119.36928],'Elevation':99.4907},{'Point':[26.09746,119.36887000000002],'Elevation':103.3628},{'Point':[26.096970000000002,119.36884],'Elevation':107.3573},{'Point':[26.096780000000003,119.3687],'Elevation':110.9018},{'Point':[26.096580000000003,119.36793000000002],'Elevation':114.5406},{'Point':[26.096290000000003,119.36791000000001],'Elevation':117.672},{'Point':[26.096200000000003,119.36814000000001],'Elevation':120.5119},{'Point':[26.09617,119.36836000000001],'Elevation':123.111},{'Point':[26.09662,119.36900000000001],'Elevation':125.9004},{'Point':[26.09746,119.36924],'Elevation':129.0855},{'Point':[26.097690000000004,119.36980000000001],'Elevation':131.9769},{'Point':[26.09786,119.36989000000001],'Elevation':134.5568},{'Point':[26.098070000000003,119.36994000000001],'Elevation':136.8653},{'Point':[26.0985,119.37068000000001],'Elevation':139.8105},{'Point':[26.098650000000003,119.3708],'Elevation':142.5769},{'Point':[26.098830000000003,119.37083000000001],'Elevation':145.051},{'Point':[26.09898,119.37069000000001],'Elevation':147.3343},{'Point':[26.099090000000004,119.37017000000002],'Elevation':149.7183},{'Point':[26.09954,119.36972000000002],'Elevation':152.3287},{'Point':[26.099600000000002,119.36906],'Elevation':155.5478},{'Point':[26.099700000000002,119.36863000000001],'Elevation':158.5969},{'Point':[26.099880000000002,119.36856000000002],'Elevation':161.5755},{'Point':[26.100420000279684,119.36885999859783],'Elevation':164.7921},{'Point':[26.10096,119.36916000000001],'Elevation':168.3021},{'Point':[26.101480000000002,119.36936000000001],'Elevation':171.7078},{'Point':[26.10215333380841,119.36909666970033],'Elevation':175.177},{'Point':[26.10282666713865,119.36883333636827],'Elevation':179.1647},{'Point':[26.1035,119.36857],'Elevation':183.2877},{'Point':[26.103880000000004,119.36865000000002],'Elevation':187.1894},{'Point':[26.104670000000002,119.36827000000001],'Elevation':191.5371},{'Point':[26.10497,119.36850000000001],'Elevation':195.5448},{'Point':[26.10534,119.36938],'Elevation':199.9791},{'Point':[26.105710000000002,119.36991],'Elevation':204.3775},{'Point':[26.105780000000003,119.3708],'Elevation':209.0429},{'Point':[26.106375000150081,119.37088499958534],'Elevation':214.0787},{'Point':[26.10697,119.37097000000001],'Elevation':218.9387},{'Point':[26.107495000170683,119.37109499946651],'Elevation':223.5748},{'Point':[26.108020000000003,119.37122000000001],'Elevation':228.2484},{'Point':[26.10874,119.37152],'Elevation':232.9643},{'Point':[26.10922,119.37125],'Elevation':236.9616},{'Point':[26.10929,119.37074000000001],'Elevation':240.3459},{'Point':[26.109725000352633,119.37044500106211],'Elevation':243.2112},{'Point':[26.11016,119.37015000000001],'Elevation':245.6371},{'Point':[26.110090000000003,119.36953000000001],'Elevation':247.691},{'Point':[26.110300000000002,119.36856000000002],'Elevation':249.4299},{'Point':[26.110920000000004,119.3683],'Elevation':250.9021},{'Point':[26.111463334140218,119.36864333013777],'Elevation':264.003},{'Point':[26.112006667467366,119.36898666346715],'Elevation':275.0947},{'Point':[26.112550000000002,119.36933],'Elevation':284.4855},{'Point':[26.11315,119.36999000000002],'Elevation':292.4361},{'Point':[26.113750000000003,119.36999000000002],'Elevation':299.1675},{'Point':[26.114390000000004,119.37058],'Elevation':304.8666},{'Point':[26.11476,119.37038000000001],'Elevation':309.6916},{'Point':[26.115185000813142,119.36986500199586],'Elevation':314.3933},{'Point':[26.115610000000004,119.36935000000001],'Elevation':319.1974},{'Point':[26.11579,119.36929],'Elevation':323.2648},{'Point':[26.116000000000003,119.36936000000001],'Elevation':327.0489},{'Point':[26.11605,119.36958000000001],'Elevation':330.4413},{'Point':[26.115840000000002,119.36983000000001],'Elevation':333.5128},{'Point':[26.115330000000004,119.37017000000002],'Elevation':336.6577},{'Point':[26.114965000694809,119.37062000140982],'Elevation':339.6055},{'Point':[26.114600000000003,119.37107],'Elevation':342.2608},{'Point':[26.114070000274864,119.37073499841004],'Elevation':344.676},{'Point':[26.11354,119.3704],'Elevation':346.819},{'Point':[26.112940000000002,119.37076],'Elevation':349.0643},{'Point':[26.112480000722037,119.3703149982866],'Elevation':351.8838},{'Point':[26.11202,119.36987],'Elevation':354.7863},{'Point':[26.11166,119.36979000000001],'Elevation':357.4966},{'Point':[26.11182,119.37071000000002],'Elevation':360.7728},{'Point':[26.11156,119.37161],'Elevation':364.617},{'Point':[26.111860001116195,119.3721949983737],'Elevation':368.3455},{'Point':[26.112160000000003,119.37278],'Elevation':372.2967},{'Point':[26.112460000000002,119.37353000000002],'Elevation':376.5543},{'Point':[26.11193,119.37394],'Elevation':380.9228},{'Point':[26.112070000841374,119.37443499939415],'Elevation':385.1427},{'Point':[26.11221,119.37493],'Elevation':389.2231},{'Point':[26.11175,119.37504000000001],'Elevation':393.0503},{'Point':[26.111309999985217,119.37492499955135],'Elevation':396.7722},{'Point':[26.110870000000002,119.37481000000001],'Elevation':400.2684},{'Point':[26.110425000222772,119.37502500078782],'Elevation':403.9277},{'Point':[26.109980000000004,119.37524],'Elevation':407.6469},{'Point':[26.10913,119.37496000000002],'Elevation':411.8953},{'Point':[26.10835,119.37504000000001],'Elevation':416.9476},{'Point':[26.10761,119.37450000000001],'Elevation':422.2909},{'Point':[26.10703,119.37447000000002],'Elevation':427.2441},{'Point':[26.106640000000002,119.37422000000001],'Elevation':431.7245},{'Point':[26.106225001986182,119.37498500277395],'Elevation':436.3276},{'Point':[26.10581,119.37575000000001],'Elevation':441.2936},{'Point':[26.105570000000004,119.37579000000001],'Elevation':445.9765},{'Point':[26.105310000000003,119.37541000000002],'Elevation':450.2971},{'Point':[26.10459,119.37522000000001],'Elevation':454.7617},{'Point':[26.104360000000003,119.37476000000001],'Elevation':459.1275},{'Point':[26.103700000000003,119.37491000000001],'Elevation':463.7408},{'Point':[26.103450000000002,119.37575000000001],'Elevation':468.441},{'Point':[26.1031,119.37599000000002],'Elevation':472.7149},{'Point':[26.102850000000004,119.37651000000001],'Elevation':476.7919},{'Point':[26.103410000000004,119.37713000000001],'Elevation':480.8448},{'Point':[26.103585001156322,119.37769999926441],'Elevation':484.9601},{'Point':[26.10376,119.37827000000001],'Elevation':489.1789},{'Point':[26.103615001271109,119.37888500090267],'Elevation':493.5466},{'Point':[26.10347,119.37950000000001],'Elevation':497.8687},{'Point':[26.10328,119.38007],'Elevation':502.3131},{'Point':[26.103060000000003,119.38015000000001],'Elevation':506.1941},{'Point':[26.102500000000003,119.37995000000001],'Elevation':510.5886},{'Point':[26.101930000000003,119.38011000000002],'Elevation':514.9763},{'Point':[26.101360000000003,119.3798],'Elevation':519.3153},{'Point':[26.101180000000003,119.37981],'Elevation':523.1377},{'Point':[26.102020000000003,119.38038000000002],'Elevation':527.6712},{'Point':[26.10234,119.38047000000002],'Elevation':531.8868},{'Point':[26.102846667738461,119.38085999663812],'Elevation':536.0141},{'Point':[26.103353334428057,119.38124999665573],'Elevation':540.6754},{'Point':[26.10386,119.38164],'Elevation':545.2737},{'Point':[26.104340000607969,119.38202999846695],'Elevation':549.9643},{'Point':[26.104820000000004,119.38242000000001],'Elevation':554.3542},{'Point':[26.105360000020877,119.38243999990837],'Elevation':558.5402},{'Point':[26.105900000000002,119.38246000000001],'Elevation':562.6455},{'Point':[26.1061,119.38268000000001],'Elevation':566.5015},{'Point':[26.106635002173569,119.38347499635361],'Elevation':571.2737},{'Point':[26.107170000000004,119.38427000000001],'Elevation':576.179},{'Point':[26.107090000000003,119.38451],'Elevation':580.2676},{'Point':[26.10687,119.38457000000001],'Elevation':583.7139},{'Point':[26.10666,119.38443000000001],'Elevation':586.6991},{'Point':[26.10638,119.38418000000001],'Elevation':589.3707},{'Point':[26.106180000000002,119.3841],'Elevation':591.6939},{'Point':[26.10592,119.38418000000001],'Elevation':593.6685},{'Point':[26.105890000000002,119.3845],'Elevation':595.4492},{'Point':[26.10583,119.38485000000001],'Elevation':597.3279},{'Point':[26.105770000000003,119.38508000000002],'Elevation':599.0305},{'Point':[26.105660000000004,119.38531],'Elevation':600.9182},{'Point':[26.105520000000002,119.38555000000001],'Elevation':602.7235},{'Point':[26.10537,119.38589],'Elevation':604.3347},{'Point':[26.10536,119.38667000000001],'Elevation':605.7909},{'Point':[26.105300000000003,119.38753000000001],'Elevation':606.5821},{'Point':[26.10525,119.38786],'Elevation':607.0847},{'Point':[26.105130000000003,119.38821000000002],'Elevation':607.4935},{'Point':[26.10499,119.38849],'Elevation':607.8733},{'Point':[26.104830000000003,119.38877000000001],'Elevation':608.1503},{'Point':[26.104470000000003,119.38881],'Elevation':608.253},{'Point':[26.10424,119.38872],'Elevation':608.3354},{'Point':[26.10405,119.38858],'Elevation':608.4388},{'Point':[26.103890000000003,119.38839000000002],'Elevation':608.6767},{'Point':[26.10377,119.38814],'Elevation':609.191},{'Point':[26.103630000000003,119.38771000000001],'Elevation':609.8426},{'Point':[26.103085000145896,119.38740499929808],'Elevation':610.1014},{'Point':[26.102660000000004,119.38721000000001],'Elevation':610.0398},{'Point':[26.10235,119.38673000000001],'Elevation':609.842},{'Point':[26.102190000000004,119.38657],'Elevation':609.7819},{'Point':[26.101910000000004,119.38656],'Elevation':610.1573},{'Point':[26.101420000136049,119.38663000027626],'Elevation':611.1515},{'Point':[26.10093,119.3867],'Elevation':612.6112},{'Point':[26.100480000257267,119.38687500061438],'Elevation':614.1814},{'Point':[26.100030000000004,119.38705000000002],'Elevation':616.2837},{'Point':[26.09984,119.38706],'Elevation':618.5006},{'Point':[26.09963,119.38703000000001],'Elevation':620.3776},{'Point':[26.099400000000003,119.38687000000002],'Elevation':622.2734},{'Point':[26.099010000000003,119.38656],'Elevation':624.5717},{'Point':[26.098830000000003,119.38651000000002],'Elevation':626.6279},{'Point':[26.098370000000003,119.38655000000001],'Elevation':628.5529},{'Point':[26.09824,119.38638000000002],'Elevation':630.3038},{'Point':[26.098370000000003,119.38611000000002],'Elevation':632.1358},{'Point':[26.09843,119.38587000000001],'Elevation':634.1362},{'Point':[26.09823,119.38591000000001],'Elevation':636.043},{'Point':[26.09784,119.38646000000001],'Elevation':638.2462},{'Point':[26.097720000000002,119.38682000000001],'Elevation':640.4352},{'Point':[26.097690000000004,119.38718000000001],'Elevation':642.4418},{'Point':[26.09758,119.38739000000001],'Elevation':644.176},{'Point':[26.097430000000003,119.38780000000001],'Elevation':645.6596},{'Point':[26.09738,119.38807000000001],'Elevation':646.9524},{'Point':[26.09721,119.38834000000001],'Elevation':648.1866},{'Point':[26.0969,119.38868000000001],'Elevation':649.4983},{'Point':[26.096850000000003,119.38897000000001],'Elevation':650.7883},{'Point':[26.09674,119.38929000000002],'Elevation':652.2209},{'Point':[26.09589,119.38932000000001],'Elevation':653.7727},{'Point':[26.09571,119.38952],'Elevation':655.1325},{'Point':[26.09571,119.38975],'Elevation':656.2869},{'Point':[26.09587,119.39011],'Elevation':657.2505},{'Point':[26.09606,119.39028],'Elevation':658.1046},{'Point':[26.09616,119.39046],'Elevation':658.9228},{'Point':[26.096300000000003,119.39104],'Elevation':660.459},{'Point':[26.096310000000003,119.39127],'Elevation':662.2473},{'Point':[26.09598,119.39155000000001],'Elevation':664.4713},{'Point':[26.095820000000003,119.39167],'Elevation':666.6825},{'Point':[26.095640000000003,119.39187000000001],'Elevation':668.7218},{'Point':[26.09569,119.39245000000001],'Elevation':670.6814},{'Point':[26.095540000000003,119.39267000000001],'Elevation':672.4003},{'Point':[26.0953,119.39279],'Elevation':673.9016},{'Point':[26.09486,119.39255000000001],'Elevation':675.6864},{'Point':[26.094620000000003,119.39223000000001],'Elevation':677.8631},{'Point':[26.09429,119.39158],'Elevation':680.4758},{'Point':[26.094170000000002,119.39131],'Elevation':683.2368},{'Point':[26.09401,119.39118],'Elevation':685.7431},{'Point':[26.093760000000003,119.39131],'Elevation':687.5737},{'Point':[26.093600000000002,119.39145],'Elevation':688.9027},{'Point':[26.093290000000003,119.39167],'Elevation':689.6982},{'Point':[26.09298,119.39185],'Elevation':695.1074},{'Point':[26.092750000000002,119.39205000000001],'Elevation':700.8233},{'Point':[26.09251,119.39211000000002],'Elevation':705.6443},{'Point':[26.092060000000004,119.39227000000001],'Elevation':709.226},{'Point':[26.09164,119.39302],'Elevation':711.5055},{'Point':[26.09146,119.39357000000001],'Elevation':712.8711},{'Point':[26.09136,119.39399000000002],'Elevation':713.7389},{'Point':[26.09089,119.39449],'Elevation':714.3663},{'Point':[26.090590000000002,119.39497000000001],'Elevation':714.6291},{'Point':[26.090560000000004,119.39532000000001],'Elevation':714.6308},{'Point':[26.09109,119.39600000000002],'Elevation':714.7119},{'Point':[26.09119,119.39623],'Elevation':714.8067},{'Point':[26.091030000000003,119.39649000000001],'Elevation':714.8594},{'Point':[26.090840000000004,119.39649000000001],'Elevation':714.9024},{'Point':[26.090270000000004,119.39612000000001],'Elevation':715.0584},{'Point':[26.08969,119.39600000000002],'Elevation':714.9897},{'Point':[26.089150000000004,119.39584],'Elevation':714.2015},{'Point':[26.08895,119.39581000000001],'Elevation':712.9223},{'Point':[26.088710000000003,119.39612000000001],'Elevation':711.6046},{'Point':[26.08857,119.39682],'Elevation':709.9829},{'Point':[26.08845,119.39725000000001],'Elevation':708.383},{'Point':[26.088260000000002,119.39745],'Elevation':706.8674},{'Point':[26.08799,119.39733000000001],'Elevation':705.3542},{'Point':[26.0878,119.39685000000001],'Elevation':703.8951},{'Point':[26.087400000000002,119.39682],'Elevation':702.35},{'Point':[26.086980000742169,119.39737000096451],'Elevation':699.9469},{'Point':[26.086710000000004,119.39782000000001],'Elevation':697.3756},{'Point':[26.086190000000002,119.39827000000001],'Elevation':695.6173},{'Point':[26.08601,119.39857],'Elevation':694.5519},{'Point':[26.085890000000003,119.39900000000002],'Elevation':694.2925},{'Point':[26.085780000000003,119.39920000000001],'Elevation':694.2185},{'Point':[26.085600000000003,119.39920000000001],'Elevation':694.096},{'Point':[26.08546,119.39891000000001],'Elevation':693.7562},{'Point':[26.085390000000004,119.39843],'Elevation':693.3381},{'Point':[26.08518,119.39835000000001],'Elevation':693.1145},{'Point':[26.08499,119.39859000000001],'Elevation':693.077},{'Point':[26.08471,119.39886000000001],'Elevation':693.3167},{'Point':[26.08452,119.39897],'Elevation':693.627},{'Point':[26.084220000000002,119.39876000000001],'Elevation':693.836},{'Point':[26.08424,119.39817000000001],'Elevation':693.9194},{'Point':[26.084130000000002,119.39773000000001],'Elevation':693.9026},{'Point':[26.08386,119.39732000000001],'Elevation':693.7796},{'Point':[26.08339,119.39710000000001],'Elevation':693.5281},{'Point':[26.083060000000003,119.39707000000001],'Elevation':693.1005},{'Point':[26.08255,119.39725000000001],'Elevation':692.3015},{'Point':[26.082120000000003,119.39749],'Elevation':691.7783},{'Point':[26.0818,119.39770000000001],'Elevation':691.7126},{'Point':[26.08161,119.39767],'Elevation':691.7521},{'Point':[26.08172,119.39722],'Elevation':692.3989},{'Point':[26.08189,119.39701000000001],'Elevation':693.4895},{'Point':[26.08163,119.39686],'Elevation':695.1979},{'Point':[26.08143,119.39691],'Elevation':696.8422},{'Point':[26.08132,119.39729000000001],'Elevation':698.7174},{'Point':[26.08113,119.39756000000001],'Elevation':700.6271},{'Point':[26.08086,119.39759000000001],'Elevation':702.5383},{'Point':[26.080470000000002,119.39744],'Elevation':704.612},{'Point':[26.080050000000004,119.39706000000001],'Elevation':707.0991},{'Point':[26.07994,119.39687],'Elevation':709.421},{'Point':[26.079860000000004,119.39646],'Elevation':711.6752},{'Point':[26.079720000000002,119.39631000000001],'Elevation':713.5821},{'Point':[26.079255000078053,119.39643000046932],'Elevation':715.12},{'Point':[26.07879,119.39655],'Elevation':716.3652},{'Point':[26.078450000000004,119.39686],'Elevation':717.2677},{'Point':[26.078210000000002,119.39727],'Elevation':718.0333},{'Point':[26.07794,119.39742000000001],'Elevation':718.8977},{'Point':[26.07759,119.39730000000002],'Elevation':719.8059},{'Point':[26.077260000000003,119.39704],'Elevation':721.242},{'Point':[26.076950000000004,119.39714000000001],'Elevation':723.1065},{'Point':[26.07693,119.39759000000001],'Elevation':725.5745},{'Point':[26.076800000000002,119.39787000000001],'Elevation':728.2253},{'Point':[26.076100000000004,119.39844000000001],'Elevation':732.0783},{'Point':[26.076020000000003,119.39863000000001],'Elevation':735.71},{'Point':[26.07609,119.39901],'Elevation':739.1636},{'Point':[26.075870000000002,119.39919],'Elevation':742.1749},{'Point':[26.07572,119.39907000000001],'Elevation':744.8886},{'Point':[26.07561,119.39880000000001],'Elevation':747.2413},{'Point':[26.07543,119.39880000000001],'Elevation':749.2608},{'Point':[26.075170000000004,119.39931000000001],'Elevation':751.5334},{'Point':[26.07504,119.39948000000001],'Elevation':753.8117},{'Point':[26.07475,119.39939000000001],'Elevation':756.0781},{'Point':[26.0745,119.39891000000001],'Elevation':758.6363},{'Point':[26.07428,119.39861],'Elevation':761.2547},{'Point':[26.0741,119.39866],'Elevation':763.8518},{'Point':[26.07382,119.39880000000001],'Elevation':766.5628},{'Point':[26.073590000000003,119.39886000000001],'Elevation':769.3197},{'Point':[26.073410000000003,119.39872000000001],'Elevation':771.9928},{'Point':[26.07299,119.39821],'Elevation':775.5441},{'Point':[26.072950000000002,119.39783000000001],'Elevation':779.066},{'Point':[26.072830000000003,119.39755000000001],'Elevation':782.396},{'Point':[26.072820000000004,119.39732000000001],'Elevation':785.3671},{'Point':[26.072940000000003,119.39707000000001],'Elevation':787.8826},{'Point':[26.073130000000003,119.39679000000001],'Elevation':790.3221},{'Point':[26.07318,119.39655],'Elevation':792.5086},{'Point':[26.07288,119.39598000000001],'Elevation':794.7309},{'Point':[26.07279,119.39563000000001],'Elevation':795.3427},{'Point':[26.072670000000002,119.39534],'Elevation':794.873},{'Point':[26.07234,119.39502000000002],'Elevation':792.0309},{'Point':[26.072070000000004,119.39494],'Elevation':789.1614},{'Point':[26.071600000000004,119.39523000000001],'Elevation':786.3011},{'Point':[26.071350000000002,119.39529],'Elevation':783.7261}]}"; - //string json = "{'Type':'LineString','TotalDistance':22.201689999999992,'List':[{'Point':[32.060793,118.808228],'Elevation':14.5598},{'Point':[32.061604,118.808548],'Elevation':14.3954},{'Point':[32.063085,118.809059],'Elevation':14.0074},{'Point':[32.064306,118.80951],'Elevation':14.2812},{'Point':[32.065217,118.809841],'Elevation':14.701},{'Point':[32.066188,118.810121],'Elevation':15.2048},{'Point':[32.066558,118.810492],'Elevation':15.4843},{'Point':[32.067079,118.810983],'Elevation':15.5637},{'Point':[32.06756,118.811344],'Elevation':15.507},{'Point':[32.067931,118.811574],'Elevation':15.469},{'Point':[32.068451,118.811845],'Elevation':15.5912},{'Point':[32.068852,118.812085],'Elevation':15.6546},{'Point':[32.069433,118.812766],'Elevation':15.8589},{'Point':[32.070115,118.813588],'Elevation':16.2968},{'Point':[32.070646,118.814229],'Elevation':16.9136},{'Point':[32.071368,118.815101],'Elevation':17.4104},{'Point':[32.07228,118.816213],'Elevation':17.7138},{'Point':[32.072561,118.816554],'Elevation':17.9888},{'Point':[32.072821,118.816885],'Elevation':18.502},{'Point':[32.073483,118.817706],'Elevation':19.5909},{'Point':[32.073844,118.818147],'Elevation':20.596},{'Point':[32.074305,118.818729],'Elevation':21.2868},{'Point':[32.074786,118.81927],'Elevation':21.6856},{'Point':[32.074987,118.81951],'Elevation':22.0494},{'Point':[32.075448,118.819991],'Elevation':22.3838},{'Point':[32.075909,118.820492],'Elevation':22.6512},{'Point':[32.076069,118.820662],'Elevation':22.8796},{'Point':[32.07637,118.821003],'Elevation':23.0857},{'Point':[32.07659,118.821133],'Elevation':23.2517},{'Point':[32.076831,118.821384],'Elevation':23.532},{'Point':[32.077212,118.822025],'Elevation':24.0643},{'Point':[32.077494,118.822867],'Elevation':24.8455},{'Point':[32.077645,118.823438],'Elevation':25.8294},{'Point':[32.077756,118.823879],'Elevation':26.909},{'Point':[32.077896,118.82422],'Elevation':28.0635},{'Point':[32.078037,118.82448],'Elevation':29.1886},{'Point':[32.078267,118.824781],'Elevation':30.2586},{'Point':[32.078418,118.824941],'Elevation':31.1856},{'Point':[32.078728,118.825232],'Elevation':31.9239},{'Point':[32.078969,118.825332],'Elevation':32.549},{'Point':[32.079169,118.825322],'Elevation':33.0782},{'Point':[32.079498,118.825202],'Elevation':33.544},{'Point':[32.079958,118.825021],'Elevation':33.9813},{'Point':[32.080328,118.824941],'Elevation':34.3312},{'Point':[32.081018,118.824861],'Elevation':34.4341},{'Point':[32.081618,118.824811],'Elevation':34.2067},{'Point':[32.081948,118.824811],'Elevation':33.8412},{'Point':[32.082178,118.824841],'Elevation':33.428},{'Point':[32.082369,118.824911],'Elevation':33.0365},{'Point':[32.082579,118.825051],'Elevation':32.6545},{'Point':[32.082769,118.825191],'Elevation':32.2689},{'Point':[32.08304,118.825442],'Elevation':31.9885},{'Point':[32.08319,118.825652],'Elevation':31.8223},{'Point':[32.083331,118.825893],'Elevation':31.7163},{'Point':[32.083742,118.826624],'Elevation':31.7409},{'Point':[32.083973,118.826975],'Elevation':31.8967},{'Point':[32.084113,118.827135],'Elevation':32.0943},{'Point':[32.084354,118.827376],'Elevation':32.289},{'Point':[32.084504,118.827496],'Elevation':32.4791},{'Point':[32.084884,118.827727],'Elevation':32.7283},{'Point':[32.085155,118.827887],'Elevation':32.9179},{'Point':[32.085435,118.828047],'Elevation':32.9931},{'Point':[32.085675,118.828198],'Elevation':32.9919},{'Point':[32.085976,118.828348],'Elevation':32.8424},{'Point':[32.086397,118.829079],'Elevation':32.7725},{'Point':[32.086608,118.82946],'Elevation':32.6947},{'Point':[32.086819,118.829821],'Elevation':32.5996},{'Point':[32.086969,118.830122],'Elevation':32.5681},{'Point':[32.08711,118.830472],'Elevation':32.4398},{'Point':[32.087201,118.830753],'Elevation':32.2517},{'Point':[32.087271,118.831033],'Elevation':32.042},{'Point':[32.087402,118.831615],'Elevation':31.912},{'Point':[32.087463,118.831905],'Elevation':31.9259},{'Point':[32.087503,118.832196],'Elevation':32.0906},{'Point':[32.087554,118.832547],'Elevation':32.2625},{'Point':[32.087584,118.832757],'Elevation':32.4019},{'Point':[32.087645,118.833007],'Elevation':32.4994},{'Point':[32.087725,118.833358],'Elevation':32.605},{'Point':[32.087846,118.833609],'Elevation':32.7142},{'Point':[32.088017,118.8344],'Elevation':32.8226},{'Point':[32.08833,118.835633],'Elevation':33.1344},{'Point':[32.08842,118.835994],'Elevation':33.5805},{'Point':[32.088511,118.836384],'Elevation':34.1777},{'Point':[32.088582,118.836615],'Elevation':34.8768},{'Point':[32.088762,118.837006],'Elevation':35.7894},{'Point':[32.089103,118.837386],'Elevation':36.8831},{'Point':[32.089364,118.837667],'Elevation':37.9825},{'Point':[32.090856,118.838889],'Elevation':38.9346},{'Point':[32.091077,118.8391],'Elevation':39.674},{'Point':[32.091227,118.83925],'Elevation':40.1489},{'Point':[32.091377,118.83944],'Elevation':40.3744},{'Point':[32.091628,118.839951],'Elevation':40.1874},{'Point':[32.091899,118.840653],'Elevation':39.8998},{'Point':[32.09205,118.841053],'Elevation':39.9208},{'Point':[32.092492,118.842256],'Elevation':40.4509},{'Point':[32.093045,118.843779],'Elevation':41.4429},{'Point':[32.093327,118.84459],'Elevation':42.4297},{'Point':[32.093709,118.845913],'Elevation':43.2054},{'Point':[32.09379,118.846323],'Elevation':44.124},{'Point':[32.09386,118.846764],'Elevation':45.2302},{'Point':[32.093911,118.847275],'Elevation':46.6257},{'Point':[32.094073,118.848287],'Elevation':46.8993},{'Point':[32.094427,118.850721],'Elevation':46.1525},{'Point':[32.094457,118.850952],'Elevation':45.3749},{'Point':[32.094508,118.851332],'Elevation':44.3658},{'Point':[32.094578,118.851653],'Elevation':43.331},{'Point':[32.094659,118.851953],'Elevation':42.3697},{'Point':[32.094789,118.852344],'Elevation':41.4875},{'Point':[32.09485,118.852875],'Elevation':40.7268},{'Point':[32.094901,118.853396],'Elevation':40.2125},{'Point':[32.094873,118.854378],'Elevation':40.3656},{'Point':[32.094843,118.854818],'Elevation':40.47},{'Point':[32.094794,118.855229],'Elevation':40.2729},{'Point':[32.094695,118.85575],'Elevation':39.6601},{'Point':[32.094545,118.85589],'Elevation':39.1112},{'Point':[32.094355,118.85605],'Elevation':38.6262},{'Point':[32.094035,118.856341],'Elevation':38.203},{'Point':[32.093586,118.856722],'Elevation':38.0209},{'Point':[32.092936,118.857313],'Elevation':38.1629},{'Point':[32.087611,118.861579],'Elevation':41.6177},{'Point':[32.086322,118.862641],'Elevation':44.301},{'Point':[32.085923,118.862992],'Elevation':46.4114},{'Point':[32.085603,118.863352],'Elevation':48.0813},{'Point':[32.085413,118.863603],'Elevation':49.3257},{'Point':[32.085124,118.864203],'Elevation':50.2301},{'Point':[32.084895,118.864704],'Elevation':51.0639},{'Point':[32.084346,118.865836],'Elevation':50.9843},{'Point':[32.083976,118.866466],'Elevation':50.9001},{'Point':[32.083787,118.866747],'Elevation':50.7623},{'Point':[32.083337,118.867298],'Elevation':50.54},{'Point':[32.082738,118.867928],'Elevation':49.9583},{'Point':[32.081359,118.86949],'Elevation':48.6999},{'Point':[32.0808,118.870191],'Elevation':47.4326},{'Point':[32.08061,118.870482],'Elevation':46.2355},{'Point':[32.080221,118.871062],'Elevation':45.0444},{'Point':[32.079941,118.871473],'Elevation':44.0826},{'Point':[32.079362,118.872364],'Elevation':43.6268},{'Point':[32.079072,118.872864],'Elevation':43.3205},{'Point':[32.078663,118.873475],'Elevation':42.8172},{'Point':[32.078163,118.874166],'Elevation':42.6756},{'Point':[32.077674,118.874836],'Elevation':43.0225},{'Point':[32.077554,118.875006],'Elevation':43.3747},{'Point':[32.077124,118.875687],'Elevation':43.5312},{'Point':[32.076765,118.876288],'Elevation':43.4751},{'Point':[32.076545,118.876578],'Elevation':43.3309},{'Point':[32.076365,118.876738],'Elevation':43.0884},{'Point':[32.076175,118.876858],'Elevation':42.8163},{'Point':[32.075985,118.876948],'Elevation':42.5425},{'Point':[32.075505,118.877159],'Elevation':42.4904},{'Point':[32.075235,118.877289],'Elevation':42.5829},{'Point':[32.074865,118.877519],'Elevation':42.5988},{'Point':[32.074455,118.877799],'Elevation':42.3545},{'Point':[32.074006,118.878109],'Elevation':42.0795},{'Point':[32.073166,118.87875],'Elevation':41.5206},{'Point':[32.072926,118.87894],'Elevation':40.9802},{'Point':[32.072686,118.87913],'Elevation':40.536},{'Point':[32.072316,118.879431],'Elevation':40.0109},{'Point':[32.071966,118.879661],'Elevation':39.2338},{'Point':[32.071576,118.879871],'Elevation':38.2732},{'Point':[32.071336,118.879981],'Elevation':37.3074},{'Point':[32.071076,118.880091],'Elevation':36.3334},{'Point':[32.070796,118.880201],'Elevation':35.3149},{'Point':[32.070446,118.880311],'Elevation':34.1848},{'Point':[32.069766,118.880512],'Elevation':32.9739},{'Point':[32.067936,118.881112],'Elevation':31.8529},{'Point':[32.067096,118.881402],'Elevation':30.9703},{'Point':[32.064616,118.882243],'Elevation':30.1171},{'Point':[32.064356,118.882363],'Elevation':29.4573},{'Point':[32.064036,118.882553],'Elevation':29.0123},{'Point':[32.063107,118.883084],'Elevation':28.5364},{'Point':[32.062737,118.883214],'Elevation':28.0861},{'Point':[32.062507,118.883244],'Elevation':27.7072},{'Point':[32.062336,118.882804],'Elevation':27.5764},{'Point':[32.062096,118.882814],'Elevation':27.4923},{'Point':[32.061896,118.882814],'Elevation':27.4974},{'Point':[32.061716,118.882744],'Elevation':27.6248},{'Point':[32.061576,118.882604],'Elevation':27.914},{'Point':[32.061476,118.882394],'Elevation':28.3938},{'Point':[32.061396,118.882103],'Elevation':29.1902},{'Point':[32.061275,118.881903],'Elevation':30.1313},{'Point':[32.061095,118.881873],'Elevation':30.9852},{'Point':[32.060705,118.881883],'Elevation':31.7854},{'Point':[32.060435,118.881883],'Elevation':32.5659},{'Point':[32.060235,118.881913],'Elevation':33.2703},{'Point':[32.059895,118.882124],'Elevation':33.8814},{'Point':[32.059705,118.882214],'Elevation':34.4289},{'Point':[32.059505,118.882194],'Elevation':35.0778},{'Point':[32.058935,118.881653],'Elevation':36.6918},{'Point':[32.058785,118.881523],'Elevation':38.1148},{'Point':[32.058575,118.881333],'Elevation':39.2033},{'Point':[32.058274,118.881003],'Elevation':40.0131},{'Point':[32.058024,118.881013],'Elevation':40.5473},{'Point':[32.057664,118.881073],'Elevation':40.6434},{'Point':[32.057414,118.881103],'Elevation':40.4723},{'Point':[32.057204,118.881073],'Elevation':40.2954},{'Point':[32.057034,118.880993],'Elevation':40.1678},{'Point':[32.056684,118.880793],'Elevation':40.1504},{'Point':[32.056103,118.880393],'Elevation':40.0022},{'Point':[32.055803,118.880103],'Elevation':39.849},{'Point':[32.055653,118.879913],'Elevation':39.7715},{'Point':[32.055213,118.879522],'Elevation':39.9339},{'Point':[32.055072,118.879322],'Elevation':40.4245},{'Point':[32.054982,118.879052],'Elevation':41.3912},{'Point':[32.055052,118.878852],'Elevation':42.5574},{'Point':[32.055222,118.878692],'Elevation':43.6886},{'Point':[32.055362,118.878522],'Elevation':44.7815},{'Point':[32.055192,118.878201],'Elevation':46.5977},{'Point':[32.055071,118.877961],'Elevation':48.8389},{'Point':[32.054961,118.877731],'Elevation':51.3663},{'Point':[32.054921,118.877491],'Elevation':53.8668},{'Point':[32.054941,118.877241],'Elevation':55.89},{'Point':[32.054941,118.87694],'Elevation':57.5183},{'Point':[32.05478,118.87679],'Elevation':58.7643},{'Point':[32.05417,118.87667],'Elevation':59.2835},{'Point':[32.05385,118.8766],'Elevation':59.4259},{'Point':[32.05366,118.87654],'Elevation':59.379},{'Point':[32.0535,118.87642],'Elevation':59.0251},{'Point':[32.053219,118.87611],'Elevation':57.9021},{'Point':[32.053029,118.87592],'Elevation':56.463},{'Point':[32.052819,118.875779],'Elevation':54.8268},{'Point':[32.052369,118.875619],'Elevation':52.9008},{'Point':[32.051839,118.875429],'Elevation':50.7493},{'Point':[32.051418,118.875289],'Elevation':48.4307},{'Point':[32.051218,118.875269],'Elevation':46.2993},{'Point':[32.051008,118.875329],'Elevation':44.3837},{'Point':[32.050828,118.875559],'Elevation':42.7953},{'Point':[32.050639,118.87591],'Elevation':41.6147},{'Point':[32.050489,118.87604],'Elevation':40.5328},{'Point':[32.050289,118.87601],'Elevation':39.3267},{'Point':[32.050158,118.87578],'Elevation':38.044},{'Point':[32.049888,118.875009],'Elevation':36.7717},{'Point':[32.049727,118.874579],'Elevation':35.8602},{'Point':[32.049577,118.874258],'Elevation':35.3608},{'Point':[32.049467,118.874068],'Elevation':35.214},{'Point':[32.049387,118.873868],'Elevation':35.3845},{'Point':[32.049406,118.873618],'Elevation':35.7955},{'Point':[32.049446,118.873407],'Elevation':36.3561},{'Point':[32.049516,118.873167],'Elevation':36.9277},{'Point':[32.049596,118.872957],'Elevation':37.5366},{'Point':[32.049736,118.872687],'Elevation':38.2869},{'Point':[32.049865,118.872436],'Elevation':39.1523},{'Point':[32.050155,118.871866],'Elevation':39.8747},{'Point':[32.050265,118.871606],'Elevation':40.5283},{'Point':[32.050354,118.871215],'Elevation':41.2029},{'Point':[32.050394,118.870995],'Elevation':41.8362},{'Point':[32.050444,118.870705],'Elevation':42.4717},{'Point':[32.050523,118.870054],'Elevation':42.4322},{'Point':[32.050573,118.869733],'Elevation':42.2512},{'Point':[32.050623,118.869433],'Elevation':41.9864},{'Point':[32.050682,118.869173],'Elevation':41.706},{'Point':[32.050732,118.868943],'Elevation':41.4396},{'Point':[32.050792,118.868742],'Elevation':41.1959},{'Point':[32.050931,118.868222],'Elevation':41.0283},{'Point':[32.051071,118.867661],'Elevation':40.8843},{'Point':[32.05117,118.867361],'Elevation':40.7395},{'Point':[32.05129,118.86705],'Elevation':40.5534},{'Point':[32.05144,118.86674],'Elevation':40.3243},{'Point':[32.051659,118.866399],'Elevation':40.1555},{'Point':[32.052239,118.865668],'Elevation':40.3937},{'Point':[32.052378,118.865438],'Elevation':40.8041},{'Point':[32.052458,118.865168],'Elevation':41.3904},{'Point':[32.052478,118.864787],'Elevation':42.3943},{'Point':[32.052437,118.864447],'Elevation':43.6045},{'Point':[32.052397,118.864166],'Elevation':44.7816},{'Point':[32.052317,118.863936],'Elevation':45.8608},{'Point':[32.052005,118.863155],'Elevation':46.5665},{'Point':[32.051905,118.862915],'Elevation':47.0296},{'Point':[32.051795,118.862614],'Elevation':47.2634},{'Point':[32.051704,118.862334],'Elevation':47.258},{'Point':[32.051674,118.862063],'Elevation':47.0684},{'Point':[32.051714,118.861753],'Elevation':46.7497},{'Point':[32.051843,118.861433],'Elevation':46.3441},{'Point':[32.052053,118.861132],'Elevation':45.9732},{'Point':[32.052232,118.860741],'Elevation':45.8251},{'Point':[32.052282,118.860461],'Elevation':45.7824},{'Point':[32.052341,118.85995],'Elevation':46.0983},{'Point':[32.052451,118.85978],'Elevation':46.5503},{'Point':[32.0525,118.859039],'Elevation':47.7787},{'Point':[32.052698,118.857647],'Elevation':50.6302},{'Point':[32.052748,118.857356],'Elevation':53.0522},{'Point':[32.052837,118.857036],'Elevation':55.0985},{'Point':[32.052867,118.856785],'Elevation':56.6775},{'Point':[32.052947,118.856505],'Elevation':57.7743},{'Point':[32.053106,118.856174],'Elevation':58.3203},{'Point':[32.053196,118.855984],'Elevation':58.5045},{'Point':[32.053755,118.855313],'Elevation':58.2366},{'Point':[32.054025,118.854982],'Elevation':57.8621},{'Point':[32.054244,118.854612],'Elevation':57.2615},{'Point':[32.054334,118.854371],'Elevation':56.5957},{'Point':[32.054383,118.854131],'Elevation':55.9891},{'Point':[32.054423,118.85378],'Elevation':55.7191},{'Point':[32.054413,118.85353],'Elevation':55.6271},{'Point':[32.054362,118.853269],'Elevation':55.8101},{'Point':[32.054272,118.852989],'Elevation':56.2213},{'Point':[32.054131,118.852688],'Elevation':56.7635},{'Point':[32.05378,118.852178],'Elevation':57.366},{'Point':[32.05369,118.851957],'Elevation':57.8381},{'Point':[32.05363,118.851727],'Elevation':58.205},{'Point':[32.053599,118.851456],'Elevation':58.4986},{'Point':[32.053609,118.851186],'Elevation':58.5775},{'Point':[32.053668,118.850865],'Elevation':58.495},{'Point':[32.053917,118.850134],'Elevation':58.5475},{'Point':[32.054047,118.849733],'Elevation':58.7532},{'Point':[32.054225,118.848942],'Elevation':59.7503},{'Point':[32.054345,118.848441],'Elevation':61.2328},{'Point':[32.054434,118.8481],'Elevation':62.8705},{'Point':[32.054504,118.84788],'Elevation':64.4278},{'Point':[32.054643,118.847439],'Elevation':66.0025},{'Point':[32.054802,118.846918],'Elevation':67.479},{'Point':[32.055061,118.846307],'Elevation':68.6261},{'Point':[32.055261,118.846006],'Elevation':69.4628},{'Point':[32.05541,118.845856],'Elevation':70.0519},{'Point':[32.0556,118.845746],'Elevation':70.4685},{'Point':[32.05591,118.845616],'Elevation':70.7517},{'Point':[32.05617,118.845475],'Elevation':71.0371},{'Point':[32.05636,118.845355],'Elevation':71.4123},{'Point':[32.056789,118.844954],'Elevation':72.0913},{'Point':[32.057069,118.844684],'Elevation':72.856},{'Point':[32.057079,118.844463],'Elevation':73.4784},{'Point':[32.056968,118.844223],'Elevation':73.9198},{'Point':[32.056787,118.843872],'Elevation':74.2494},{'Point':[32.056557,118.843642],'Elevation':74.3069},{'Point':[32.056307,118.843461],'Elevation':74.1545},{'Point':[32.055045,118.84276],'Elevation':73.7891},{'Point':[32.054765,118.84259],'Elevation':73.3927},{'Point':[32.054545,118.84248],'Elevation':72.8909},{'Point':[32.054304,118.84242],'Elevation':72.2876},{'Point':[32.054094,118.842389],'Elevation':71.6515},{'Point':[32.052293,118.842109],'Elevation':70.238},{'Point':[32.051993,118.841929],'Elevation':68.8369},{'Point':[32.051402,118.841448],'Elevation':67.2371},{'Point':[32.051182,118.841308],'Elevation':65.7595},{'Point':[32.050892,118.841217],'Elevation':64.394},{'Point':[32.050211,118.841037],'Elevation':63.0603},{'Point':[32.049561,118.840877],'Elevation':61.7515},{'Point':[32.0493,118.840777],'Elevation':60.5132},{'Point':[32.04904,118.840526],'Elevation':59.4045},{'Point':[32.0489,118.840326],'Elevation':58.4031},{'Point':[32.048549,118.839835],'Elevation':57.4389},{'Point':[32.048438,118.839625],'Elevation':56.5531},{'Point':[32.048347,118.839254],'Elevation':55.6992},{'Point':[32.048327,118.838943],'Elevation':55.0314},{'Point':[32.048356,118.838592],'Elevation':54.6692},{'Point':[32.048475,118.838081],'Elevation':54.4781},{'Point':[32.048525,118.837861],'Elevation':54.2537},{'Point':[32.048545,118.837641],'Elevation':53.9478},{'Point':[32.048524,118.83743],'Elevation':53.5647},{'Point':[32.048434,118.837099],'Elevation':53.0481},{'Point':[32.048333,118.836899],'Elevation':52.4184},{'Point':[32.048153,118.836629],'Elevation':51.6225},{'Point':[32.047862,118.836368],'Elevation':50.7506},{'Point':[32.047331,118.835867],'Elevation':49.7261},{'Point':[32.045738,118.834404],'Elevation':48.3684},{'Point':[32.044416,118.833192],'Elevation':46.1879},{'Point':[32.044725,118.832661],'Elevation':43.582},{'Point':[32.044814,118.83246],'Elevation':41.1197},{'Point':[32.044814,118.83215],'Elevation':38.818},{'Point':[32.044772,118.831438],'Elevation':36.9364},{'Point':[32.044672,118.831047],'Elevation':35.3809},{'Point':[32.044611,118.830827],'Elevation':34.0358},{'Point':[32.044561,118.830606],'Elevation':32.8016},{'Point':[32.04453,118.830376],'Elevation':31.6582},{'Point':[32.04454,118.830015],'Elevation':30.6528},{'Point':[32.044569,118.829795],'Elevation':29.8453},{'Point':[32.044669,118.829474],'Elevation':29.2324},{'Point':[32.044768,118.829173],'Elevation':28.7181},{'Point':[32.044868,118.828923],'Elevation':28.2765},{'Point':[32.044967,118.828722],'Elevation':27.8548},{'Point':[32.045127,118.828472],'Elevation':27.3276},{'Point':[32.045307,118.828271],'Elevation':26.7065},{'Point':[32.045446,118.828131],'Elevation':26.0557},{'Point':[32.045646,118.828001],'Elevation':25.4439},{'Point':[32.045846,118.827901],'Elevation':24.96},{'Point':[32.046046,118.82782],'Elevation':24.6625},{'Point':[32.046236,118.82778],'Elevation':24.5286},{'Point':[32.046516,118.82776],'Elevation':24.5749},{'Point':[32.046786,118.82778],'Elevation':24.7221},{'Point':[32.047306,118.82787],'Elevation':25.012},{'Point':[32.047717,118.82793],'Elevation':25.3603},{'Point':[32.048067,118.827991],'Elevation':25.6128},{'Point':[32.048327,118.828051],'Elevation':25.7918},{'Point':[32.048678,118.828301],'Elevation':25.7868},{'Point':[32.048938,118.828431],'Elevation':25.5017},{'Point':[32.049248,118.828451],'Elevation':24.9111},{'Point':[32.049368,118.828612],'Elevation':24.4787},{'Point':[32.04999,118.829433],'Elevation':24.4527},{'Point':[32.05018,118.829684],'Elevation':24.5432},{'Point':[32.050491,118.830075],'Elevation':24.7319},{'Point':[32.050792,118.830476],'Elevation':25.1214},{'Point':[32.051102,118.830335],'Elevation':25.3566},{'Point':[32.051402,118.830225],'Elevation':25.5892},{'Point':[32.051622,118.830205],'Elevation':25.9198},{'Point':[32.052002,118.830335],'Elevation':26.4896},{'Point':[32.052231,118.829784],'Elevation':26.9115},{'Point':[32.05241,118.829343],'Elevation':27.2986},{'Point':[32.052619,118.828782],'Elevation':27.5397},{'Point':[32.052898,118.82801],'Elevation':27.316},{'Point':[32.053037,118.827669],'Elevation':27.0054},{'Point':[32.053227,118.827329],'Elevation':26.6792},{'Point':[32.053426,118.827098],'Elevation':26.4358},{'Point':[32.054135,118.826327],'Elevation':26.6587},{'Point':[32.055214,118.825374],'Elevation':27.689},{'Point':[32.055503,118.825044],'Elevation':28.9185},{'Point':[32.055682,118.824703],'Elevation':30.2869},{'Point':[32.056221,118.823771],'Elevation':32.0053},{'Point':[32.05633,118.82358],'Elevation':33.4268},{'Point':[32.05644,118.82321],'Elevation':34.5765},{'Point':[32.056519,118.822739],'Elevation':35.4501},{'Point':[32.056736,118.820995],'Elevation':35.1811},{'Point':[32.056765,118.820694],'Elevation':34.5549},{'Point':[32.056784,118.820344],'Elevation':33.7114},{'Point':[32.056794,118.820093],'Elevation':32.8255},{'Point':[32.056753,118.819782],'Elevation':31.8413},{'Point':[32.056703,118.819442],'Elevation':30.7113},{'Point':[32.056712,118.819161],'Elevation':29.5279},{'Point':[32.056891,118.81871],'Elevation':28.5138},{'Point':[32.056991,118.8185],'Elevation':27.694},{'Point':[32.057111,118.818249],'Elevation':27.2305},{'Point':[32.05728,118.817898],'Elevation':27.2608},{'Point':[32.057469,118.817628],'Elevation':27.8111},{'Point':[32.057679,118.817517],'Elevation':28.844},{'Point':[32.057919,118.817527],'Elevation':30.2369},{'Point':[32.05821,118.817628],'Elevation':31.972},{'Point':[32.05851,118.817848],'Elevation':33.9502},{'Point':[32.058751,118.818069],'Elevation':35.9748},{'Point':[32.058951,118.818269],'Elevation':37.9318},{'Point':[32.059151,118.818439],'Elevation':39.9049},{'Point':[32.059341,118.818479],'Elevation':42.0364},{'Point':[32.059621,118.818339],'Elevation':44.5304},{'Point':[32.059991,118.818028],'Elevation':47.0725},{'Point':[32.06015,118.817858],'Elevation':49.2257},{'Point':[32.06029,118.817698],'Elevation':50.7448},{'Point':[32.06046,118.817447],'Elevation':51.4716},{'Point':[32.060579,118.817237],'Elevation':51.5474},{'Point':[32.060659,118.816846],'Elevation':51.1576},{'Point':[32.060688,118.816525],'Elevation':50.6236},{'Point':[32.060727,118.816124],'Elevation':49.9252},{'Point':[32.060717,118.815844],'Elevation':49.3272},{'Point':[32.060636,118.815413],'Elevation':48.5682},{'Point':[32.060596,118.815192],'Elevation':47.7127},{'Point':[32.060525,118.814812],'Elevation':46.6921},{'Point':[32.060464,118.814461],'Elevation':45.5533},{'Point':[32.060403,118.81406],'Elevation':44.6455},{'Point':[32.060383,118.813749],'Elevation':43.8835},{'Point':[32.060442,118.813038],'Elevation':43.2426},{'Point':[32.060471,118.812627],'Elevation':42.7653},{'Point':[32.060469,118.811855],'Elevation':42.0623},{'Point':[32.060468,118.810933],'Elevation':39.9119},{'Point':[32.060457,118.810452],'Elevation':37.7959},{'Point':[32.060466,118.810092],'Elevation':35.8393},{'Point':[32.060545,118.80933],'Elevation':33.8976},{'Point':[32.060653,118.808178],'Elevation':31.5755},{'Point':[32.060733,118.808208],'Elevation':29.5713}]}"; - //string json = @"{'Type':'LineString','TotalDistance':3.4100999999999995,'List':[{'Point':[31.351249,119.021848],'Elevation':28.3692},{'Point':[31.35127,119.021529],'Elevation':28.4163},{'Point':[31.351322,119.020791],'Elevation':29.5811},{'Point':[31.351364,119.019914],'Elevation':31.2764},{'Point':[31.351458,119.018399],'Elevation':32.102},{'Point':[31.351501,119.017512],'Elevation':32.5486},{'Point':[31.351512,119.017203],'Elevation':33.0451},{'Point':[31.351522,119.016914],'Elevation':33.5963},{'Point':[31.351564,119.016386],'Elevation':34.58},{'Point':[31.351606,119.015788],'Elevation':36.0089},{'Point':[31.351626,119.015539],'Elevation':37.4491},{'Point':[31.351647,119.01529],'Elevation':38.8925},{'Point':[31.351187,119.01521],'Elevation':39.5386},{'Point':[31.350858,119.01514],'Elevation':39.7551},{'Point':[31.350438,119.015051],'Elevation':40.1219},{'Point':[31.350199,119.014891],'Elevation':40.7157},{'Point':[31.350019,119.014742],'Elevation':41.4673},{'Point':[31.34974,119.014622],'Elevation':42.0818},{'Point':[31.34951,119.014553],'Elevation':42.4744},{'Point':[31.349201,119.014363],'Elevation':42.707},{'Point':[31.349051,119.014164],'Elevation':42.9748},{'Point':[31.348563,119.013506],'Elevation':43.4829},{'Point':[31.348384,119.013287],'Elevation':43.7515},{'Point':[31.348095,119.013078],'Elevation':43.711},{'Point':[31.347905,119.012988],'Elevation':43.6298},{'Point':[31.347596,119.012789],'Elevation':43.5441},{'Point':[31.347416,119.012639],'Elevation':43.5661},{'Point':[31.347257,119.01249],'Elevation':43.7661},{'Point':[31.347017,119.012271],'Elevation':44.173},{'Point':[31.346778,119.012071],'Elevation':44.6846},{'Point':[31.346569,119.011932],'Elevation':45.0536},{'Point':[31.346349,119.011862],'Elevation':45.1835},{'Point':[31.346169,119.011822],'Elevation':45.1202},{'Point':[31.34597,119.011573],'Elevation':44.9227},{'Point':[31.345872,119.010926],'Elevation':44.769},{'Point':[31.345823,119.010517],'Elevation':44.825},{'Point':[31.345724,119.010198],'Elevation':45.0025},{'Point':[31.345595,119.009999],'Elevation':45.0965},{'Point':[31.345306,119.00966],'Elevation':44.9105},{'Point':[31.345056,119.009421],'Elevation':44.6363},{'Point':[31.344847,119.009281],'Elevation':44.3001},{'Point':[31.344627,119.009122],'Elevation':43.9679},{'Point':[31.344468,119.008983],'Elevation':43.7442},{'Point':[31.344199,119.008694],'Elevation':43.6926},{'Point':[31.34396,119.008345],'Elevation':43.9002},{'Point':[31.343711,119.007976],'Elevation':44.3907},{'Point':[31.343333,119.007488],'Elevation':45.4845},{'Point':[31.343173,119.007289],'Elevation':46.704},{'Point':[31.342834,119.007109],'Elevation':47.9561},{'Point':[31.342485,119.00698],'Elevation':48.9071},{'Point':[31.342285,119.00687],'Elevation':49.4839},{'Point':[31.342155,119.006721],'Elevation':49.8479},{'Point':[31.342026,119.006472],'Elevation':50.1356},{'Point':[31.342057,119.006253],'Elevation':50.7142},{'Point':[31.342257,119.006223],'Elevation':51.7425},{'Point':[31.342547,119.006332],'Elevation':53.1767},{'Point':[31.342737,119.006213],'Elevation':54.8684},{'Point':[31.342818,119.005894],'Elevation':56.8442},{'Point':[31.342909,119.005625],'Elevation':58.8701},{'Point':[31.342989,119.005415],'Elevation':60.9597},{'Point':[31.343199,119.005276],'Elevation':63.4359},{'Point':[31.34363,119.005166],'Elevation':66.2565},{'Point':[31.34396,119.005087],'Elevation':69.0464},{'Point':[31.34469,119.004897],'Elevation':72.3644},{'Point':[31.34492,119.004817],'Elevation':75.7088},{'Point':[31.345151,119.004578],'Elevation':79.2975},{'Point':[31.345452,119.004329],'Elevation':83.0134},{'Point':[31.345722,119.00413],'Elevation':87.0387},{'Point':[31.345882,119.00397],'Elevation':90.9773},{'Point':[31.346003,119.003701],'Elevation':94.1804},{'Point':[31.346134,119.003492],'Elevation':96.7123},{'Point':[31.346334,119.003412],'Elevation':99.1538},{'Point':[31.346604,119.003522],'Elevation':102.4359},{'Point':[31.346853,119.003552],'Elevation':106.1954},{'Point':[31.347143,119.003502],'Elevation':110.2601},{'Point':[31.347344,119.003432],'Elevation':114.1717},{'Point':[31.347564,119.003313],'Elevation':117.6072},{'Point':[31.347754,119.003103],'Elevation':120.1657},{'Point':[31.347925,119.002874],'Elevation':121.9901},{'Point':[31.348095,119.002765],'Elevation':123.592},{'Point':[31.348285,119.002914],'Elevation':125.0265},{'Point':[31.348434,119.003312],'Elevation':127.3454},{'Point':[31.348573,119.003621],'Elevation':130.5107},{'Point':[31.348782,119.00391],'Elevation':134.3053},{'Point':[31.349021,119.004129],'Elevation':138.0121},{'Point':[31.34935,119.004279],'Elevation':141.3069},{'Point':[31.34952,119.004369],'Elevation':144.2481},{'Point':[31.34974,119.004468],'Elevation':146.7968},{'Point':[31.349909,119.004548],'Elevation':148.9758},{'Point':[31.349989,119.004737],'Elevation':151.0985},{'Point':[31.349759,119.004727],'Elevation':153.2488},{'Point':[31.349539,119.004638],'Elevation':155.3186},{'Point':[31.34922,119.004568],'Elevation':157.3072},{'Point':[31.34896,119.004528],'Elevation':159.1294},{'Point':[31.34876,119.004508],'Elevation':160.7716},{'Point':[31.34857,119.004458],'Elevation':161.9593},{'Point':[31.34832,119.004369],'Elevation':162.7144},{'Point':[31.34816,119.004468],'Elevation':163.5862},{'Point':[31.34821,119.004528],'Elevation':164.466}]}"; - return Newtonsoft.Json.JsonConvert.DeserializeObject(json); + if (mapData != null) + { + var list = mapData.List.Select(p => new GeoJSON.Net.Geometry.GeographicPosition(p.Point[0], p.Point[1])); + LineString lineString = new LineString(list); + var pt1 = Turf.Along(lineString, endDistance); + var ll = ((GeographicPosition)((GeoJSON.Net.Geometry.Point)pt1.Geometry).Coordinates); + return new Vector2d(ll.Latitude, ll.Longitude); + } + else + { + return new Vector2d(0,0); + } } /// /// 海拔图数据 diff --git a/Assets/Scenes/Ride/Scripts/DeviceServiceMonoBase.cs b/Assets/Scenes/Ride/Scripts/DeviceServiceMonoBase.cs index 3038c91e..cc092140 100644 --- a/Assets/Scenes/Ride/Scripts/DeviceServiceMonoBase.cs +++ b/Assets/Scenes/Ride/Scripts/DeviceServiceMonoBase.cs @@ -11,10 +11,15 @@ namespace Assets.Scenes.Ride.Scripts { public void TrackResistance(double grade) { - //if (!ConfigHelper.IsNeedContectedToDevice) - //{ - // return; - //} + if (grade > 10) + { + grade = 10; + } + if (grade <-10 ) + { + grade = -10; + } + var device = (_device as FitDevice); if (device != null) { diff --git a/Assets/Scenes/Ride/Scripts/InitMiniMapProvider.cs b/Assets/Scenes/Ride/Scripts/InitMiniMapProvider.cs index d8ae45bd..b3e4db53 100644 --- a/Assets/Scenes/Ride/Scripts/InitMiniMapProvider.cs +++ b/Assets/Scenes/Ride/Scripts/InitMiniMapProvider.cs @@ -29,7 +29,7 @@ namespace Assets.Scenes.Ride.Scripts { var mapdata = cyclingCotroller.GetMapData(); //初始化map - var point = cyclingCotroller.GetCenterCoordinate(); + //var point = cyclingCotroller.GetCenterCoordinate(); if (_map != null && mapdata !=null) { _map.OnInitialized += _map_OnInitialized; @@ -46,7 +46,7 @@ namespace Assets.Scenes.Ride.Scripts { if (playerController != null) { - _player.transform.localPosition = _map.GeoToWorldPosition(playerController.Nextlatlong); + _player.transform.localPosition = _map.GeoToWorldPosition(playerController.Currentlatlong); } } private bool init = false; diff --git a/Assets/Scenes/Ride/Scripts/MiniMapPlayerController.cs b/Assets/Scenes/Ride/Scripts/MiniMapPlayerController.cs index 17480177..7f212a26 100644 --- a/Assets/Scenes/Ride/Scripts/MiniMapPlayerController.cs +++ b/Assets/Scenes/Ride/Scripts/MiniMapPlayerController.cs @@ -23,7 +23,7 @@ namespace Assets.Scenes.Ride.Scripts { if (_player != null) { - transform.localPosition = _map.GeoToWorldPosition(_player.Nextlatlong); + transform.localPosition = _map.GeoToWorldPosition(_player.Currentlatlong); } t = 1; } diff --git a/Assets/Scenes/Ride/Scripts/Model/CyclingModels/ReviewModel.cs b/Assets/Scenes/Ride/Scripts/Model/CyclingModels/ReviewModel.cs new file mode 100644 index 00000000..8354100b --- /dev/null +++ b/Assets/Scenes/Ride/Scripts/Model/CyclingModels/ReviewModel.cs @@ -0,0 +1,67 @@ +using Assets.Scenes.Ride.Scripts.Model.RiderModels; +using Assets.Scripts; +using Assets.Scripts.Apis.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels +{ + public class ReviewModel : BaseCycling + { + public List rankings; + + public ReviewModel(Route route1, RouteResultParam param) + : base(route1, CyclingModel.Review) + { + riders = new List(); + riders.Add(new OnlineRiderModel() + { + NickName = App.CurrentUser.Nickname, + UserId = App.CurrentUser.Id, + WxHeadImg = App.CurrentUser.WxHeadImg, + Point = new GeoJSON.Net.Geometry.GeographicPosition(this.route.RouteInstance.Point[0], this.route.RouteInstance.Point[1]) + }); + + recorderData = new RecorderDataModel() + { + CurrentUser = App.CurrentUser, + Competitionid = 0, + ContinueIndex = 0, + ContinueMark = Guid.NewGuid().ToString(), + EndDistance = 0, + PreDistance = 0, + IsCompleted = false, + IsNeedRanking = true, + CyclingState = CyclingStateEnum.Prepare, + CurrentRoute = route, + CurrentRouteStartDistance = 0, + }; + this.IsRecord = true; + } + + public override void Run(TargetData targetData) + { + + riders.RemoveAll(r => r.IsSelf == false); + var onlineUsers = MapUDPService.GetOnlineUsers(recorderData.CurrentRoute.RouteInstance.Id).Where(d => d.IsSelf == false) + .ToList(); + foreach (var item in onlineUsers) + { + riders.Add(new OnlineRiderModel() + { + NickName = item.Name, + UserId = item.Id, + WxHeadImg = item.HeadImage, + Point = new GeoJSON.Net.Geometry.GeographicPosition(item.Point[0], item.Point[1]), + EndDistance = item.EndDistance, + PreDistance = item.PreDistance, + }); + } + + base.Run(targetData); + } + } +} diff --git a/Assets/Scenes/Ride/Scripts/Model/CyclingModels/ReviewModel.cs.meta b/Assets/Scenes/Ride/Scripts/Model/CyclingModels/ReviewModel.cs.meta new file mode 100644 index 00000000..f04583ce --- /dev/null +++ b/Assets/Scenes/Ride/Scripts/Model/CyclingModels/ReviewModel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 363f64631c874c84198aa481f8899911 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Ride/Scripts/Model/CyclingModels/SingleModel.cs b/Assets/Scenes/Ride/Scripts/Model/CyclingModels/SingleModel.cs index b356917b..9176a470 100644 --- a/Assets/Scenes/Ride/Scripts/Model/CyclingModels/SingleModel.cs +++ b/Assets/Scenes/Ride/Scripts/Model/CyclingModels/SingleModel.cs @@ -1,4 +1,5 @@ using Assets.Scenes.Ride.Scripts.Model.RiderModels; +using Assets.Scripts.Apis.Models; using System; using System.Collections.Generic; using System.Linq; @@ -9,50 +10,43 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels { public class SingleModel : BaseCycling { - /// - /// - /// - /// - /// - /// - /// - public SingleModel(Route route1) //SelectParamModel param) - : base(route1, CyclingModel.Single) + + public SingleModel(Route route,RouteResultParam param) + : base(route, CyclingModel.Single) { - //recorderData = recorderData1; this.IsRecord = true; recorderData = new RecorderDataModel() { CurrentUser = App.CurrentUser, - //BelongUserId = App.CurrentUser.Id, Competitionid = 0, - ContinueIndex = 0, - ContinueMark = Guid.NewGuid().ToString(), + ContinueIndex = 0, + ContinueMark = Guid.NewGuid().ToString(), EndDistance = 0, IsCompleted = false, IsNeedRanking = true, CyclingState = CyclingStateEnum.Prepare, - //ManufacturerId = manufacturerId, //ManufacturerId, CurrentRoute = route, CurrentRouteStartDistance = 0, - //DeviceNumber = deviceNumber,//DeviceNumber - //AntModelId = antModelId, StartTime = DateTime.Now }; - #region TODO 线路上的人 - //if (param != null) - //{ - // recorderData.EndDistance = param.EndDistance; - // recorderData.CurrentRouteStartDistance = param.EndDistance; - // if (!string.IsNullOrWhiteSpace(param.ContinueMark)) - // { - // recorderData.ContinueMark = param.ContinueMark; - // } - // recorderData.ContinueIndex = param.ContinueIndex.GetValueOrDefault(0); - //} - //recorderData.PreDistance = recorderData.EndDistance; + + if (param != null) + { + recorderData.EndDistance = param.EndDistance; + recorderData.CurrentRouteStartDistance = param.EndDistance; + if (!string.IsNullOrWhiteSpace(param.ContinueMark)) + { + recorderData.ContinueMark = param.ContinueMark; + } + else + { + param.ContinueMark = recorderData.ContinueMark; + } + recorderData.ContinueIndex = param.ContinueIndex.GetValueOrDefault(0); + } + + recorderData.PreDistance = recorderData.EndDistance; - //TODO 附件的人列表加上自己 riders = new List(); var rider = new OnlineRiderModel() { @@ -65,7 +59,7 @@ namespace Assets.Scenes.Ride.Scripts.Model.CyclingModels rider.Point = _turfHelper.Along(rider.EndDistance); riders.Add(rider); - #endregion + } public override void Run(TargetData targetData) diff --git a/Assets/Scenes/Ride/Scripts/Model/RecorderDataModel.cs b/Assets/Scenes/Ride/Scripts/Model/RecorderDataModel.cs index b9174e4f..a0e620d8 100644 --- a/Assets/Scenes/Ride/Scripts/Model/RecorderDataModel.cs +++ b/Assets/Scenes/Ride/Scripts/Model/RecorderDataModel.cs @@ -109,7 +109,7 @@ namespace Assets.Scenes.Ride.Scripts.Model /// /// /// - public JsonResult SaveData(CyclingModel cyclingModel, SelectParamModel selectParam, string imageName = "") + public JsonResult SaveData(CyclingModel cyclingModel, RouteResultParam selectParam, string imageName = "") { if (RiderDatas.Count <= 0) { @@ -124,7 +124,7 @@ namespace Assets.Scenes.Ride.Scripts.Model double TSS = (RiderDatas.Count * NP * IF) / (FTP * 3600) * 100; var averagePower = Helper.AveragePower(RiderDatas); MapInterruptRecordApi service = new MapInterruptRecordApi(); - //AntManufacturer manufacturer = service.GetAntManufacturer(ManufacturerId); + // AntManufacturer manufacturer = service.GetAntManufacturer(ManufacturerId).data; var recordId = Guid.NewGuid().ToString(); var ticks = RiderDatas.Last().Ticks; var interruptRecord = new MapInterruptRecord @@ -133,7 +133,7 @@ namespace Assets.Scenes.Ride.Scripts.Model RouteId = CurrentRoute.RouteInstance.Id, RouteName = CurrentRoute.RouteInstance.Name, TotalDistance = CurrentRoute.RouteInstance.Distance, - UserId = 10688,//BelongUserId, + UserId = BelongUserId, RecordFileName = newFileName + ".txt", Ftp = FTP,//FTP设置 IF = Math.Round(IF, 2), @@ -147,13 +147,13 @@ namespace Assets.Scenes.Ride.Scripts.Model AveragePower = averagePower,//平均功率 MaxPower = RiderDatas.Max(a => a._Power),//最大功率 WeightKg = Math.Round(averagePower / 65, 2), - Weight = 65, //App.CurrentUser.Weight, - BicycleWeight =7, //App.CurrentUser.BicycleWeight, + Weight = App.CurrentUser.Weight, + BicycleWeight = App.CurrentUser.BicycleWeight, ContinueMark = ContinueMark, ContinueIndex = ContinueIndex, IsDelete = false, MapCompetitionId = Competitionid, - ManufacturerName = "TODO",//manufacturer == null ? "" : manufacturer.Name, + ManufacturerName = "",//manufacturer == null ? "" : manufacturer.Name, DeviceNumber = DeviceNumber, IsRanking = IsNeedRanking, CurrentRouteStartDistance = CurrentRouteStartDistance, @@ -163,8 +163,8 @@ namespace Assets.Scenes.Ride.Scripts.Model CreateTime = StartTime.AddSeconds(ticks), Ticks = ticks, Mode = cyclingModel.ToString(), - //Param = Newtonsoft.Json.JsonConvert.SerializeObject(selectParam), - //GlobalCyclingId = selectParam.GlobalCyclingId + Param = Newtonsoft.Json.JsonConvert.SerializeObject(selectParam), + GlobalCyclingId = 0 }; //var range = new MapSpeedRange().GetSpeedRange(RiderDatas, CurrentRoute.RouteInstance.Distance); interruptRecord.SpeedRange = null; //JsonConvert.SerializeObject(range); diff --git a/Assets/Scenes/Ride/Scripts/NearByFactory.cs b/Assets/Scenes/Ride/Scripts/NearByFactory.cs index 49cdc70d..4e9dc773 100644 --- a/Assets/Scenes/Ride/Scripts/NearByFactory.cs +++ b/Assets/Scenes/Ride/Scripts/NearByFactory.cs @@ -41,7 +41,7 @@ namespace Assets.Scenes.Ride.Scripts while (t < 0) { Utils.DestroyChildren(transform); - var nearList = MapUDPService.GetNearRiderData(pageIndex, pageSize, new double[] { playerController.Nextlatlong.x, playerController.Nextlatlong.y }); + var nearList = MapUDPService.GetNearRiderData(pageIndex, pageSize, new double[] { playerController.Currentlatlong.x, playerController.Currentlatlong.y }); for (int i = 0; i < nearList.Count(); i++) { @@ -70,7 +70,7 @@ namespace Assets.Scenes.Ride.Scripts private void RefreshList() { - var nearList = MapUDPService.GetNearRiderData(pageIndex, pageSize, new double[] { playerController.Nextlatlong.x, playerController.Nextlatlong.y }); + var nearList = MapUDPService.GetNearRiderData(pageIndex, pageSize, new double[] { playerController.Currentlatlong.x, playerController.Currentlatlong.y }); for (int i = 0; i < nearList.Count(); i++) { diff --git a/Assets/Scenes/Ride/Scripts/OtherPlayerController.cs b/Assets/Scenes/Ride/Scripts/OtherPlayerController.cs index bb0c39e7..878020b2 100644 --- a/Assets/Scenes/Ride/Scripts/OtherPlayerController.cs +++ b/Assets/Scenes/Ride/Scripts/OtherPlayerController.cs @@ -1,5 +1,6 @@ using Assets.Scenes.Ride.Scripts.Model; using System; +using UnityEngine; namespace Assets.Scenes.Ride.Scripts { @@ -8,16 +9,20 @@ namespace Assets.Scenes.Ride.Scripts public string[] record; public ReviewItemScript _reviewItemScript; public PlayerController _playerController; + + public int tickOffset = 0; protected override void Init() { base.Init(); + _playerController = FindObjectOfType(); + tickOffset = mainController.preticks; } protected override void Compute() { - if (ticks < record.Length) + if (tickOffset + ticks < record.Length) { - var data = TargetData.Read(record[ticks-1]); + var data = TargetData.Read(record[tickOffset + ticks - 1]); distance = data._Speed/3600; totalDistance = data._Distance; } @@ -30,10 +35,9 @@ namespace Assets.Scenes.Ride.Scripts var diff = Math.Round(totalDistance - _playerController.TotalDistance, 3) * 1000; _reviewItemScript.SetDistance(diff); } - public void SetController(ReviewItemScript reviewItemScript, PlayerController playerController) + public void SetController(ReviewItemScript reviewItemScript) { _reviewItemScript = reviewItemScript; - _playerController = playerController; } } diff --git a/Assets/Scenes/Ride/Scripts/PlayerController.cs b/Assets/Scenes/Ride/Scripts/PlayerController.cs index c6b6c863..65511ca1 100644 --- a/Assets/Scenes/Ride/Scripts/PlayerController.cs +++ b/Assets/Scenes/Ride/Scripts/PlayerController.cs @@ -7,6 +7,7 @@ using System.Collections.Generic; using System.Globalization; using Assets.Scenes.Ride.Scripts.Model; using System.IO; +using System.Threading; namespace Assets.Scenes.Ride.Scripts { @@ -17,6 +18,13 @@ namespace Assets.Scenes.Ride.Scripts protected override void Init() { base.Init(); + totalDistance = mainController.selectParamModel.EndDistance; + currentlatlong = mainController.GetCenterCoordinate(); + TrailRenderer trail = FindObjectOfType(); + trail.startWidth = 0.6f; + trail.endWidth = 0.6f; + trail.startColor = new Color(0.9764706f, 0.1882353f, 0.5254902f, 0.65f); + trail.endColor = new Color(0.9764706f, 0.1882353f, 0.5254902f, 0.65f); } TargetData targetData; /// @@ -31,17 +39,17 @@ namespace Assets.Scenes.Ride.Scripts cadance = mainController.UpdateCadence(); weight = App.CurrentUser.Weight; bicycleWeight = App.CurrentUser.BicycleWeight; - Debug.Log(power); + #if UNITY_EDITOR power = 2000;//测试功率 #endif - mainController.TrackResistance(currentSlope); + mainController.TrackResistance(currentSlope);//TODO speed = Helper.CalculateSpeed(elevation, currentSlope, power, weight, bicycleWeight); distance = mainController.UpdateDistance(speed); totalDistance += distance; //记录骑行数据 - var recorderData = cyclingExcutor.recorderData; + var recorderData = mainController.cyclingController.recorderData; targetData = new TargetData { Ticks = ticks, @@ -50,24 +58,31 @@ namespace Assets.Scenes.Ride.Scripts _Distance = totalDistance > mapData.TotalDistance ? mapData.TotalDistance : totalDistance, _Cadence = cadance, _HeartRate = heartRate, - _Lat = nextlatlong.x, - _Lon = nextlatlong.y + _Lat = currentlatlong.x, + _Lon = currentlatlong.y }; recorderData.RiderDatas.Add(targetData); } protected override void SendTcp() { - mainController.cyclingController.Run(null); + if (mainController.cyclingController != null) + { + mainController.cyclingController.Run(null); + } } //上传数据 public override void Upload() { mainController.isStart = false; string imageFileName = base.CaptureCamera(Camera.main, new Rect(Screen.width * 0f, Screen.height * 0f, Screen.width * 0.5f, Screen.height * 0.5f)); - cyclingExcutor.recorderData.IsCompleted = totalDistance == mapData.TotalDistance; - cyclingExcutor.recorderData.EndDistance = totalDistance; - cyclingExcutor.recorderData.SaveData(cyclingExcutor.Mode,null, imageFileName); + mainController.cyclingController.recorderData.StartTime = startTime; + mainController.cyclingController.recorderData.IsCompleted = totalDistance == mapData.TotalDistance; + mainController.cyclingController.recorderData.EndDistance = totalDistance; + mainController.cyclingController.recorderData.AntModelId = mainController.AntModelId; + mainController.cyclingController.recorderData.ManufacturerId = mainController.ManufacturerId; + mainController.cyclingController.recorderData.DeviceNumber = mainController.DeviceNumber; + mainController.cyclingController.recorderData.SaveData(mainController.cyclingModel, mainController.selectParamModel, imageFileName); } #endregion diff --git a/Assets/Scenes/Ride/Scripts/ReviewFactory.cs b/Assets/Scenes/Ride/Scripts/ReviewFactory.cs index 20a348a4..b21193fd 100644 --- a/Assets/Scenes/Ride/Scripts/ReviewFactory.cs +++ b/Assets/Scenes/Ride/Scripts/ReviewFactory.cs @@ -49,18 +49,12 @@ namespace Assets.Scenes.Ride.Scripts { case Model.CyclingModel.Single: singleArea.SetActive(true); - break; - case Model.CyclingModel.Online: + reviewScrollView.SetActive(false); break; case Model.CyclingModel.Review: + singleArea.SetActive(false); InitReview(); break; - case Model.CyclingModel.Competition: - break; - case Model.CyclingModel.GlobalCycling: - break; - default: - break; } } float t = 1; @@ -100,7 +94,7 @@ namespace Assets.Scenes.Ride.Scripts var otherPlayerController = otherPlayerObj.GetComponent(); otherList.Add(otherPlayerController); otherPlayerController.record = item.record; - otherPlayerController.SetController(reviewItemScript, playerController); + otherPlayerController.SetController(reviewItemScript); GameObject miniPlayer = (GameObject)Instantiate(miniMapPlayer, transform.parent.parent.parent); var miniController = miniPlayer.GetComponent(); miniController.SetController(otherPlayerController); diff --git a/Assets/Scenes/Ride/Scripts/RouteController.cs b/Assets/Scenes/Ride/Scripts/RouteController.cs index 8b2af673..8871b2bf 100644 --- a/Assets/Scenes/Ride/Scripts/RouteController.cs +++ b/Assets/Scenes/Ride/Scripts/RouteController.cs @@ -27,6 +27,7 @@ namespace Assets.Scenes.Ride.Scripts GameObject _directionsGO; GameObject _mipMapRoute; + GameObject _pathRoute; CyclingController cyclingCotroller; private bool initComplete = false; @@ -95,6 +96,7 @@ namespace Assets.Scenes.Ride.Scripts { var meshData = new MeshData(); var dat = new List(); + var path = new List(); var mapData = cyclingCotroller.GetMapData(); if (mapData != null) @@ -105,21 +107,33 @@ namespace Assets.Scenes.Ride.Scripts var point = mapData.List[i].Point; Vector3 item = _map.GeoToWorldPosition(new Vector2d(point[0], point[1])); item.y += 0.3f; - if (!posInScreen(item) && i > playerController.CurrentIndex) - { - break; - } - else if (posInScreen(item)) + //if (!posInScreen(item) && i > playerController.CurrentIndex) + //{ + // break; + //} + //else if (posInScreen(item)) + //{ + // dat.Add(item); + //} + //前后取50个点 + decimal diff = i - playerController.CurrentIndex; + decimal diffAbs = Math.Abs(diff); + if (diffAbs <= 50) { dat.Add(item); } + if (diff < 0 && diff > -100) + { + item.y += 0.30001f; + path.Add(item); + } } var feat = new VectorFeatureUnity(); feat.Points.Add(dat); //处理海拔高度的问题 //SnapModifier.Run(feat, meshData, tile); CreatMapRoute(feat);//创建路线 - //CreateMiniMapRoute(feat);//创建小地图路线 + CreatPathRoute(path);//创建骑行过的线路 } } } @@ -129,7 +143,7 @@ namespace Assets.Scenes.Ride.Scripts Vector3 viewPos = Camera.main.WorldToViewportPoint(position); Vector3 dir = (position - camreatra.localPosition).normalized; float dot = Vector3.Dot(camreatra.forward, dir); - if (dot > -0.1 && viewPos.x >= -0.1 && viewPos.x <= 1.1 && viewPos.y >= -0.1 && viewPos.y <= 1.1) + if (dot > 0 && viewPos.x >= 0 && viewPos.x <= 1.5 && viewPos.y >= 0 && viewPos.y <= 1.5) { return true; } @@ -176,23 +190,44 @@ namespace Assets.Scenes.Ride.Scripts lineRender.material = new Material(Shader.Find("Sprites/Default")); var dat = feat.Points[0]; ColorUtility.TryParseHtmlString("#FF2742", out Color c); - lineRender.endColor = c; - lineRender.startColor = c; + lineRender.endColor = new Color(1,1,1,0.65f); + lineRender.startColor = new Color(1, 1, 1, 0.65f); + //设置宽度 - lineRender.SetWidth(0.5f, 0.5f); - lineRender.SetVertexCount(dat.Count); + lineRender.startWidth = 0.6f; + lineRender.endWidth = 0.6f; + lineRender.positionCount = dat.Count; lineRender.SetPositions(feat.Points[0].ToArray()); lineRender.loop = false; lineRender.numCapVertices = 90; - float alpha = 1.0f; - //Gradient gradient = new Gradient(); - //gradient.SetKeys( - // new GradientColorKey[] { new GradientColorKey(Color.green, 0.0f), new GradientColorKey(Color.red, 1.0f) }, - // new GradientAlphaKey[] { new GradientAlphaKey(alpha, 0.0f), new GradientAlphaKey(alpha, 1.0f) } - //); - //lineRender.colorGradient = gradient; lineRender.numCornerVertices = 90; + + } + + void CreatPathRoute(List feat) + { + if (_pathRoute != null) + { + _pathRoute.Destroy(); + } + _pathRoute = new GameObject("MapPathRoute"); + _pathRoute.transform.parent = transform; + var lineRender = _pathRoute.AddComponent(); + lineRender.material = new Material(Shader.Find("Sprites/Default")); + + lineRender.endColor = new Color(0.9764706f, 0.1882353f, 0.5254902f, 0.65f); + lineRender.startColor = new Color(0.9764706f, 0.1882353f, 0.5254902f, 0.65f); + + //设置宽度 + lineRender.startWidth = 0.61f; + lineRender.endWidth = 0.61f; + lineRender.positionCount = feat.Count; + lineRender.SetPositions(feat.ToArray()); + lineRender.loop = false; + lineRender.numCapVertices = 90; + lineRender.numCornerVertices = 90; + } } } diff --git a/Assets/Scenes/Ride/Scripts/SingleUIManager.cs b/Assets/Scenes/Ride/Scripts/SingleUIManager.cs index 0e16ea4e..01d0e9e5 100644 --- a/Assets/Scenes/Ride/Scripts/SingleUIManager.cs +++ b/Assets/Scenes/Ride/Scripts/SingleUIManager.cs @@ -12,6 +12,7 @@ using UnityEngine.SceneManagement; using System.Collections.Generic; using Assets.Cyp.Common; using System.Threading.Tasks; +using UnityEngine.EventSystems; namespace Assets.Scenes.Ride.Scripts { @@ -74,11 +75,14 @@ namespace Assets.Scenes.Ride.Scripts private float timeRemaining = 1f; private int count = 0; - + Image arrow; + AbstractMap map; void Awake() { #region 控件获取与事件绑定 fps = transform.Find("Panel/FPS").GetComponent(); + arrow = transform.Find("Panel/Arrow").GetComponent(); + map = transform.parent.Find("Map").GetComponent(); leftPanel = transform.Find("Panel/ReviewPanel").gameObject; rightPanel = transform.Find("Panel/NearPanel").gameObject; startBtn = transform.Find("Panel/StartButton").GetComponent