コード例 #1
0
    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();
    }
コード例 #2
0
    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();
    }