物流運輸管理系統TMS 司機車輛GPS+手機定位設計(C#源碼)
物流運輸管理系統(TMS)
適用於物流運輸公司、各企業下面的運輸車隊等,它主要包括訂單管理、配載作業、調度分配、行車管理、GPS車輛定位系統、車輛管理、人員管理、數據報表、基本信息維護、系統管理等模塊。該系統對車輛、駕駛員、線路等進行全面詳細的統計考核,能大大提高運作效率,降低運輸成本,使您在激烈的市場競爭中處於領先優勢。

TMS系統定位方式
傳統TMS系統采用GPS硬件模塊進行車輛定位,缺點是成本高。
我們的TMS系統采用雙終端定位方式,既車輛定位和APP定位。車輛定位采用中交興路第三方定位服務平台,TMS系統對接中交興路提供的定位服務接口,界面嵌入百度地圖即可實現定位。
TMS系統登錄界面

中交興路車輛定位,根據車牌號碼獲取車輛當前位置,如下圖:

C# Code:
/// <summary>
/// 根據車牌號查詢定位
/// </summary>
/// <param name="carNo"></param>
public void ShowLocation(string carNo)
{
txtCarNo.Text = carNo;
try
{
btnLocate.Enabled = false;
CCursor.ShowWaitCursor();
//調用WebApi接口獲取定位
Firs95155Api.ModelLocation location = Get95155_Location(carNo);
if (location == null) return;
//智運開放平台除以600000得到84系坐標
decimal lon = decimal.Parse(location.lon) / 600000;//經度115.83242333333333333333333333M
decimal lat = decimal.Parse(location.lat) / 600000;//緯度28.036483333333333333333333333M
string add = location.adr;
DateTime locatTime = UtcToDateTime.ToDatetime(double.Parse(location.utc));
locatTime = locatTime.AddHours(-8);
lon = Math.Round(lon, 5);
lat = Math.Round(lat, 5);
//百度地圖顯示定位信息
object[] args0 = { "1", lon, lat, locatTime.ToString("yyyy/MM/dd HH:mm:ss"), add };
//webBrowser1.Refresh(WebBrowserRefreshOption.Normal);
webBrowser1.Document.InvokeScript("clearOldPoints", null);
webBrowser1.Document.InvokeScript("addMarker", args0);
webBrowser1.Document.InvokeScript("setMapCenterPoint", args0);
webBrowser1.Document.InvokeScript("addLine", null);
Application.DoEvents();
//自動生成跟蹤信息
AddYDTraceLog(location.adr);
}
finally
{
btnLocate.Enabled = true;
CCursor.ShowDefaultCursor();
}
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
/// 根據車牌號查詢定位
/// </summary>
/// <param name="carNo"></param>
public void ShowLocation(string carNo)
{
txtCarNo.Text = carNo;
try
{
btnLocate.Enabled = false;
CCursor.ShowWaitCursor();
//調用WebApi接口獲取定位
Firs95155Api.ModelLocation location = Get95155_Location(carNo);
if (location == null) return;
//智運開放平台除以600000得到84系坐標
decimal lon = decimal.Parse(location.lon) / 600000;//經度115.83242333333333333333333333M
decimal lat = decimal.Parse(location.lat) / 600000;//緯度28.036483333333333333333333333M
string add = location.adr;
DateTime locatTime = UtcToDateTime.ToDatetime(double.Parse(location.utc));
locatTime = locatTime.AddHours(-8);
lon = Math.Round(lon, 5);
lat = Math.Round(lat, 5);
//百度地圖顯示定位信息
object[] args0 = { "1", lon, lat, locatTime.ToString("yyyy/MM/dd HH:mm:ss"), add };
//webBrowser1.Refresh(WebBrowserRefreshOption.Normal);
webBrowser1.Document.InvokeScript("clearOldPoints", null);
webBrowser1.Document.InvokeScript("addMarker", args0);
webBrowser1.Document.InvokeScript("setMapCenterPoint", args0);
webBrowser1.Document.InvokeScript("addLine", null);
Application.DoEvents();
//自動生成跟蹤信息
AddYDTraceLog(location.adr);
}
finally
{
btnLocate.Enabled = true;
CCursor.ShowDefaultCursor();
}
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
C# Code:
//定位節點模型
public class ModelTraceNode
{
public ModelTraceNode();
public string agl { get; set; }
public string gtm { get; set; }
public string hgt { get; set; }
public string lat { get; set; }
public string lon { get; set; }
public string mlg { get; set; }
public string spd { get; set; }
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
public class ModelTraceNode
{
public ModelTraceNode();
public string agl { get; set; }
public string gtm { get; set; }
public string hgt { get; set; }
public string lat { get; set; }
public string lon { get; set; }
public string mlg { get; set; }
public string spd { get; set; }
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
中交興路車輛行駛軌跡定位,顯示車輛指定時間區間的行駛軌跡,如下圖:
C# Code:
/// <summary>
/// 顯示車輛行駛定位軌跡
/// </summary>
/// <param name="carNo">車牌號</param>
/// <param name="begin">開始時間</param>
/// <param name="end">結束時間</param>
public void ShowTrace(string carNo, DateTime begin, DateTime end)
{
txtCarNo.Text = carNo;
txtBegin.DateTime = begin;
txtEnd.DateTime = end;
//兼容,只差24小時內
TimeSpan ts = end - begin;
if (ts.TotalHours > 24) begin = end.AddHours(-23);
try
{
btnTrace.Enabled = false;
CCursor.ShowWaitCursor();
List<ModelTraceNode> list = Get95155_Trace(carNo, begin, end);
if (list == null || list.Count == 0) return;
int count = (int)txtCount.Value;
//最多顯示軌跡數量
if (list.Count > count) list = GetList(list, count);
decimal lon; decimal lat;
object[] node;
string addr;
webBrowser1.Document.InvokeScript("clearOldPoints", null);
//循環添加節點
for (int i = 0; i <= count && i <= list.Count - 1; i++)
{
lon = decimal.Parse(list[i].lon) / 600000;
lat = decimal.Parse(list[i].lat) / 600000;
lon = Math.Round(lon, 5);
lat = Math.Round(lat, 5);
addr = "lon:" + (lon.ToString().Length > 11 ? lon.ToString().Substring(0, 11) : lon.ToString())
+ ",lat:" + (lat.ToString().Length > 11 ? lat.ToString().Substring(0, 11) : lat.ToString());
node = new object[] { i, lon, lat, list[i].gtm, addr };
//node = new object[] { i, lon, lat, "", "" };
webBrowser1.Document.InvokeScript("addMarker", node);
}
webBrowser1.Document.InvokeScript("addLine", null);//繪制連接線
if (list.Count > 2)
{
lon = decimal.Parse(list[list.Count / 2].lon) / 600000;
lat = decimal.Parse(list[list.Count / 2].lat) / 600000;
lon = Math.Round(lon, 5);
lat = Math.Round(lat, 5);
object[] args0 = { lon, lat, "11" };//地圖居中顯示,取最中間的定位
webBrowser1.Document.InvokeScript("setMapCenterPoint", args0);
}
}
finally
{
btnTrace.Enabled = true;
CCursor.ShowDefaultCursor();
}
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
/// 顯示車輛行駛定位軌跡
/// </summary>
/// <param name="carNo">車牌號</param>
/// <param name="begin">開始時間</param>
/// <param name="end">結束時間</param>
public void ShowTrace(string carNo, DateTime begin, DateTime end)
{
txtCarNo.Text = carNo;
txtBegin.DateTime = begin;
txtEnd.DateTime = end;
//兼容,只差24小時內
TimeSpan ts = end - begin;
if (ts.TotalHours > 24) begin = end.AddHours(-23);
try
{
btnTrace.Enabled = false;
CCursor.ShowWaitCursor();
List<ModelTraceNode> list = Get95155_Trace(carNo, begin, end);
if (list == null || list.Count == 0) return;
int count = (int)txtCount.Value;
//最多顯示軌跡數量
if (list.Count > count) list = GetList(list, count);
decimal lon; decimal lat;
object[] node;
string addr;
webBrowser1.Document.InvokeScript("clearOldPoints", null);
//循環添加節點
for (int i = 0; i <= count && i <= list.Count - 1; i++)
{
lon = decimal.Parse(list[i].lon) / 600000;
lat = decimal.Parse(list[i].lat) / 600000;
lon = Math.Round(lon, 5);
lat = Math.Round(lat, 5);
addr = "lon:" + (lon.ToString().Length > 11 ? lon.ToString().Substring(0, 11) : lon.ToString())
+ ",lat:" + (lat.ToString().Length > 11 ? lat.ToString().Substring(0, 11) : lat.ToString());
node = new object[] { i, lon, lat, list[i].gtm, addr };
//node = new object[] { i, lon, lat, "", "" };
webBrowser1.Document.InvokeScript("addMarker", node);
}
webBrowser1.Document.InvokeScript("addLine", null);//繪制連接線
if (list.Count > 2)
{
lon = decimal.Parse(list[list.Count / 2].lon) / 600000;
lat = decimal.Parse(list[list.Count / 2].lat) / 600000;
lon = Math.Round(lon, 5);
lat = Math.Round(lat, 5);
object[] args0 = { lon, lat, "11" };//地圖居中顯示,取最中間的定位
webBrowser1.Document.InvokeScript("setMapCenterPoint", args0);
}
}
finally
{
btnTrace.Enabled = true;
CCursor.ShowDefaultCursor();
}
}
//來源:C/S框架網(www.csframework.com) QQ:23404761
APP終端定位,APP實時上報手機定位信息,若用戶關閉手機的定位服務,則不會上傳。

<本文完>

參考文章:
C/S系統開發框架成功案例-物流運輸管理系統(TMS)
WebApi開發框架成功案例-物流行業TMS系統+APP+微信小程序
WebApi開發框架成功案例-智運天下TMS系統APP項目截圖