protected void Page_Load(object sender, EventArgs e) { B_Admin.CheckIsLogged(); if (Gid < 1) { function.WriteErrMsg("请指定需要关联的景点"); } DataTable modelDT = SqlHelper.JoinQuery("TOP 1 A.GeneralID,A.ItemID,A.Title,B.dtzb,B.Price", "ZL_CommonModel", "ZL_C_jdmx", "A.ItemID=B.ID", "A.GeneralID=" + Gid); if (modelDT.Rows.Count < 1 || string.IsNullOrEmpty(DataConvert.CStr(modelDT.Rows[0]["dtzb"]))) { function.WriteErrMsg("请先为景点设定坐标数据"); } double lng = 0; // 104.873626 double lat = 0; // 26.587309 if (!GetPointByStr(DataConvert.CStr(modelDT.Rows[0]["dtzb"]), out lng, out lat)) { function.WriteErrMsg("景点坐标不正确"); } string nids = "1"; DataTable nodeDT = nodeBll.SelByPid(1, true);//景点的父节点为1 foreach (DataRow dr in nodeDT.Rows) { nids += "," + dr["NodeID"]; } //---------------------------------------------------------- string where = "A.NodeID IN (" + nids + ")AND A.GeneralID!=" + Gid + " AND dtzb IS NOT NULL AND dtzb!=''"; DataTable dt = SqlHelper.JoinQuery("A.GeneralID,A.ItemID,A.Title,B.dtzb,B.Price", "ZL_CommonModel", "ZL_C_jdmx", "A.ItemID=B.ID", where); dt.Columns.Add(new DataColumn("distance", typeof(double))); for (int i = 0; i < dt.Rows.Count; i++) { DataRow dr = dt.Rows[i]; string json = dr["dtzb"].ToString(); if (string.IsNullOrEmpty(json) || json.Equals("[]")) { continue; } double lng2, lat2; if (GetPointByStr(json, out lng2, out lat2)) { dr["distance"] = BaiduMap.GetShortDistance(lng, lat, lng2, lat2); } } dt.Columns.Remove("dtzb"); dt.DefaultView.Sort = "distance ASC"; dt = dt.DefaultView.ToTable(); DataTable result = dt.Clone(); for (int i = 0; i < 50 && i < dt.Rows.Count; i++) { result.Rows.Add(dt.Rows[i].ItemArray); } //result.DefaultView.Sort = "distance ASC"; RPT.DataSource = result; RPT.DataBind(); }
protected void Page_Load(object sender, EventArgs e) { //double distance = BaiduMap.GetShortDistance(121.467113, 37.480563, 121.467926, 37.480591); //function.WriteErrMsg(distance.ToString()); double lng = 104.873626; double lat = 26.587309;//105.67933,26.02647 string nids = "1"; DataTable nodeDT = nodeBll.SelByPid(1, true); foreach (DataRow dr in nodeDT.Rows) { nids += "," + dr["NodeID"]; } DataTable dt = SqlHelper.JoinQuery("A.GeneralID,A.ItemID,A.Title,B.dtzb,B.Price", "ZL_CommonModel", "ZL_C_jdmx", "A.ItemID=B.ID", "A.NodeID IN (" + nids + ") AND dtzb IS NOT NULL AND dtzb!=''"); dt.Columns.Add(new DataColumn("distance", typeof(double))); for (int i = 0; i < dt.Rows.Count; i++) { DataRow dr = dt.Rows[i]; string json = dr["dtzb"].ToString(); if (string.IsNullOrEmpty(json) || json.Equals("[]")) { continue; } if (json.StartsWith("["))//完全地图 { List <M_Map_Marker> list = JsonConvert.DeserializeObject <List <M_Map_Marker> >(json); if (list.Count < 1) { continue; } //取第一坐标与其对比 dr["distance"] = BaiduMap.GetShortDistance(lng, lat, Convert.ToDouble(list[0].mark.lng), Convert.ToDouble(list[0].mark.lat)); } else { double lng2 = Convert.ToDouble(json.Split(',')[0]); double lat2 = Convert.ToDouble(json.Split(',')[1]); dr["distance"] = BaiduMap.GetShortDistance(lng, lat, lng2, lat2); } } dt.DefaultView.Sort = "distance ASC"; DataTable result = dt.Clone(); for (int i = 0; i < 50 && i < dt.Rows.Count; i++) { result.Rows.Add(dt.Rows[i].ItemArray); } //移除数据,避免json过大 result.Columns.Remove("dtzb"); RPT.DataSource = result; RPT.DataBind(); }