/// <summary> /// 谷歌硬件解析 /// </summary> /// <param name="entity"></param> /// <returns></returns> public static LocData GetLatLngFromGoogleLBSWIFIRequestEntity(GoogleLBSWIFIRequestEntity entity) { LocData locReturn = null; try { HttpUtil httpUtil = new HttpUtil(); var postData = JsonHelper.ToJson(entity); string Key = ConfigurationManager.AppSettings["GoogleGeoKey"].ToString(); string url = "https://www.googleapis.com/geolocation/v1/geolocate?key=" + Key; var responseData = httpUtil.PostRequest(url, postData); log4net.LogManager.GetLogger(typeof(GoogleParse).FullName).Info(responseData); GoogleLoction loca = JsonHelper.JSONToObject <GoogleLoction>(responseData); if (loca != null && loca.location != null) { locReturn = new LocData(); locReturn.lat = loca.location.lat; locReturn.lng = loca.location.lng; locReturn.accuracy = loca.accuracy; } } catch (Exception ex) { log4net.LogManager.GetLogger(typeof(GoogleParse).FullName).Error("GetLatLngFromGoogleLBSWIFIRequestEntity 操作失败:" + ex.Message, ex); } return(locReturn); }
/// <summary> /// lbs wifi混合转换 /// </summary> /// <param name="imei"></param> /// <param name="LbsItem"></param> /// <param name="WifiItems"></param> /// <returns></returns> public LocData GaoDeWIFILBSAnalysisPosition(String imei, List <LBSDataItem> LbsItem, List <WiFiItem> WifiItems) { String url = ""; try { string Key = ConfigurationManager.AppSettings["AmapPosition"].ToString(); var smac = ""; var mmac = ""; var macs = ""; var nearbts = ""; var bts = ""; WifiItems = WifiItems.OrderByDescending(d => d.SignalValue).ToList(); for (int i = 0; i < WifiItems.Count; i++) { if (WifiItems[i].SignalValue > 0)//信号为负值 { WifiItems[i].SignalValue = 0 - WifiItems[i].SignalValue; } if (String.IsNullOrEmpty(smac)) { smac = WifiItems[i].Mac; } else { if (String.IsNullOrEmpty(mmac)) { mmac = WifiItems[i].ToString(); } macs += String.Format("{0},{1},{2}|", WifiItems[i].Mac, WifiItems[i].SignalValue, WifiItems[i].Name); } } macs = macs.Trim('|'); foreach (var item in LbsItem) { if (item.signal > 0)//信号为负值 { item.signal = 0 - item.signal; } if (String.IsNullOrEmpty(bts)) { bts = String.Format("{0},{1},{2},{3},{4}", item.mcc, item.mnc, item.lac, item.cellid, item.signal); } else { nearbts += String.Format("{0},{1},{2},{3},{4}|", item.mcc, item.mnc, item.lac, item.cellid, item.signal); } } nearbts = nearbts.Trim('|'); url = String.Format("http://apilocate.amap.com/position?accesstype=1&imei={0}&smac={1}&mmac={2}&macs={3}&cdma=0&network=GSM&bts={4}&nearbts={5}&output=json&key={6}", imei, smac, mmac, macs, bts, nearbts, Key); HttpUtil httpu = new HttpUtil(); JObject obj = JsonHelper.FromJson(httpu.GetRequest(url)); if (obj != null && obj["status"] != null && obj["status"].ToString().Equals("1")) { JObject result = JObject.Parse(obj["result"].ToString()); if (result != null && !result["type"].ToString().Equals("0")) { string location = result["location"].ToString(); LocData lbsdat = new LocData(); lbsdat.lng = Convert.ToDouble(location.Split(',')[0]); lbsdat.lat = Convert.ToDouble(location.Split(',')[1]); //纬度 lbsdat.Type = int.Parse(result["type"].ToString()); double radius = 0; if (result["radius"] != null) { radius = Convert.ToDouble(result["radius"].ToString()); } lbsdat.accuracy = radius; if (result["desc"] != null) { lbsdat.address = string.Format("{0}附近约{1}米", result["desc"].ToString().Replace(" ", ""), radius); } if (result["radius"] != null) { radius = Convert.ToDouble(result["radius"].ToString()); } if (result["country"] != null) { lbsdat.country = result["country"].ToString(); } if (result["province"] != null) { lbsdat.province = result["province"].ToString(); } if (result["city"] != null) { lbsdat.city = result["city"].ToString(); } if (result["road"] != null) { lbsdat.road = result["road"].ToString(); } if (result["poi"] != null) { lbsdat.poi = result["poi"].ToString(); } return(lbsdat); } else { return(null); } } else { if (obj != null && obj["info"] != null) { log4net.LogManager.GetLogger("定位失败").Error("调用高德lbs数据解析地址错误 code:" + obj["info"].ToString() + " url:" + url); } return(null); } } catch (Exception ex) { Type classt = this.GetType(); string typeName = classt.ToString(); //空间名.类名 string tname = new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name; //方法名 string Title = typeName + "." + tname; log4net.LogManager.GetLogger(Title).Error("调用高德Wifi数据解析地址错误:" + ex.Message + " url:" + url, ex); return(null); } }
/// <summary> /// 基站转换 /// </summary> /// <param name="dataItem"></param> /// <returns></returns> public LocData LBSAnalysisPosition(String imei, List <LBSDataItem> dataItem) { String url = ""; try { string IMEI = imei; string SMAC = ""; //手机MAC地址 string MMAC = ""; //已连热点 mac信 string Bts = ""; //接入 基站信息 string NearBts = ""; //周边基站信息 (不 含接入 基站 信息 mcc,mnc,lac,cellid,signal) string OutPut = "json"; //返回数据格式 xml json for (int i = 0; i < dataItem.Count; i++) { if (dataItem[i].signal > 0)//信号为负值 { dataItem[i].signal = 0 - dataItem[i].signal; } //默认第一位当前接入的基站 if (i == 0) { Bts = dataItem[i].mcc + "," + dataItem[i].mnc + "," + dataItem[i].lac + "," + dataItem[i].cellid + "," + dataItem[i].signal; } else { NearBts += dataItem[i].mcc + "," + dataItem[i].mnc + "," + dataItem[i].lac + "," + dataItem[i].cellid + "," + dataItem[i].signal + "|"; } } if (NearBts.Trim().Length > 0) { NearBts = NearBts.Substring(0, NearBts.Length - 1); } string Key = ConfigurationManager.AppSettings["AmapPosition"].ToString(); url = String.Format("http://apilocate.amap.com/position?accesstype=0&network=GSM&imei={0}&smac={1}&cdma=0&bts={2}&nearbts={3}&output={4}&key={5}", IMEI, SMAC, Bts, NearBts, OutPut, Key); HttpUtil httpu = new HttpUtil(); JObject obj = JsonHelper.FromJson(httpu.GetRequest(url)); if (obj != null && obj["status"] != null && obj["status"].ToString().Equals("1")) { JObject result = JObject.Parse(obj["result"].ToString()); if (result != null && !result["type"].ToString().Equals("0")) { string location = result["location"].ToString(); LocData lbsdat = new LocData(); lbsdat.lng = Convert.ToDouble(location.Split(',')[0]); lbsdat.lat = Convert.ToDouble(location.Split(',')[1]); //纬度 lbsdat.Type = int.Parse(result["type"].ToString()); double radius = 0; if (result["radius"] != null) { radius = Convert.ToDouble(result["radius"].ToString()); } lbsdat.accuracy = radius; if (result["desc"] != null) { lbsdat.address = string.Format("{0}附近约{1}米", result["desc"].ToString().Replace(" ", ""), radius); } if (result["radius"] != null) { radius = Convert.ToDouble(result["radius"].ToString()); } if (result["country"] != null) { lbsdat.country = result["country"].ToString(); } if (result["province"] != null) { lbsdat.province = result["province"].ToString(); } if (result["city"] != null) { lbsdat.city = result["city"].ToString(); } if (result["road"] != null) { lbsdat.road = result["road"].ToString(); } if (result["poi"] != null) { lbsdat.poi = result["poi"].ToString(); } return(lbsdat); } else { return(null); } } else { if (obj != null && obj["info"] != null) { log4net.LogManager.GetLogger("定位失败").Error("调用高德lbs数据解析地址错误 code:" + obj["info"].ToString() + " url:" + url); } return(null); } } catch (Exception ex) { Type classt = this.GetType(); string typeName = classt.ToString(); //空间名.类名 string tname = new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name; //方法名 string Title = typeName + "." + tname; log4net.LogManager.GetLogger(Title).Error("调用高德LBS数据解析地址错误:" + ex.Message + " url:" + url, ex); return(null); } }
/// <summary> /// wifi 转换 /// </summary> /// <param name="WiFiItems"></param> /// <returns></returns> public LocData WiFiAnalysisPosition(String imei, List <WiFiItem> WiFiItems) { String url = ""; try { //List<WiFiItem> WiFiItems = new List<WiFiItem>(); //WiFiItems.Add(new WiFiItem("22:27:1d:20:08:d5", -55, "CMCC-EDU")); //WiFiItems.Add(new WiFiItem("5c:63:bf:a4:bf:56", -86, "TP-LINK")); //WiFiItems.Add(new WiFiItem("d8:c7:c8:a8:1a:13", -42, "TP-LINK")); //--============ if (WiFiItems == null || WiFiItems.Count <= 0) { return(null); } string IMEI = imei; string SMAC = WiFiItems.First().Mac; //手机MAC地址 string MMAC = ""; //已连热点 mac信 string MACS = ""; //wifi列表中信息"f0:7d:68:9e:7d:18,-41,TPLink" string OutPut = "json"; //返回数据格式 WiFiItems = WiFiItems.OrderByDescending(d => d.SignalValue).ToList(); string Key = ConfigurationManager.AppSettings["AmapPosition"].ToString(); for (int i = 0; i < WiFiItems.Count; i++) { if (WiFiItems[i].SignalValue != 0) { if (WiFiItems[i].SignalValue > 0) //信号为负值 { WiFiItems[i].SignalValue = 0 - WiFiItems[i].SignalValue; } if (String.IsNullOrEmpty(MMAC)) { MMAC = WiFiItems[i].ToString(); } MACS += WiFiItems[i].ToString() + "|"; } } if (MACS.Length > 0) { MACS = MACS.Substring(0, MACS.Length - 1); } url = String.Format("http://apilocate.amap.com/position?accesstype=1&imei={0}&network=GSM&cdma=0&smac={1}&mmac={2}&macs={3}&output={4}&key={5}", IMEI, SMAC, MMAC, MACS, OutPut, Key); HttpUtil httpu = new HttpUtil(); JObject obj = JsonHelper.FromJson(httpu.GetRequest(url)); if (obj != null && obj["status"] != null && obj["status"].ToString().Equals("1")) { JObject result = JObject.Parse(obj["result"].ToString()); if (result != null && !result["type"].ToString().Equals("0")) { string location = result["location"].ToString(); LocData lbsdat = new LocData(); lbsdat.lng = Convert.ToDouble(location.Split(',')[0]); lbsdat.lat = Convert.ToDouble(location.Split(',')[1]); //纬度 lbsdat.Type = int.Parse(result["type"].ToString()); double radius = 0; if (result["radius"] != null) { radius = Convert.ToDouble(result["radius"].ToString()); } lbsdat.accuracy = radius; if (result["desc"] != null) { lbsdat.address = string.Format("{0}附近约{1}米", result["desc"].ToString().Replace(" ", ""), radius); } if (result["radius"] != null) { radius = Convert.ToDouble(result["radius"].ToString()); } if (result["country"] != null) { lbsdat.country = result["country"].ToString(); } if (result["province"] != null) { lbsdat.province = result["province"].ToString(); } if (result["city"] != null) { lbsdat.city = result["city"].ToString(); } if (result["road"] != null) { lbsdat.road = result["road"].ToString(); } if (result["poi"] != null) { lbsdat.poi = result["poi"].ToString(); } return(lbsdat); } else { return(null); } } else { if (obj != null && obj["info"] != null) { log4net.LogManager.GetLogger("定位失败").Error("调用高德lbs数据解析地址错误 code:" + obj["info"].ToString() + " url:" + url); } return(null); } } catch (Exception ex) { Type classt = this.GetType(); string typeName = classt.ToString(); //空间名.类名 string tname = new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name; //方法名 string Title = typeName + "." + tname; log4net.LogManager.GetLogger(Title).Error("调用高德Wifi数据解析地址错误:" + ex.Message + " url:" + url, ex); return(null); } }