<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
|
<%Session.CodePage=65001%>
|
<% Response.charset = "utf-8" %>
|
<!--#include virtual="/inc/odbc.asp"-->
|
<!--#include file="JsonPost.gds"-->
|
<script language="JScript" runat="Server">
|
function toObject(json) {
|
eval("var o=" + json);
|
return o;
|
}
|
function toArray(s){
|
var dic = Server.CreateObject("Scripting.Dictionary")
|
eval("var a=" + json);
|
for(var i=0;i<a.length;i++){
|
var obj = Server.CreateObject("Scripting.Dictionary")
|
for(x in a[i]) obj.Add(x,a[i][x])
|
dic.Add(i, obj);
|
}
|
return dic
|
}
|
</script>
|
|
<script language="jscript" runat="server">
|
Array.prototype.get = function(i)
|
{
|
return this[i];
|
};
|
function getjson(str){
|
try{
|
eval("var jsonStr = (" + str + ")");
|
}catch(ex){
|
var jsonStr = null;
|
}
|
return jsonStr;
|
}
|
</script>
|
<%
|
CarID = trim(request("CarID"))
|
DispatchOrdID = trim(request("DispatchOrdID"))
|
DispatchOrdState = trim(request("DispatchOrdState"))
|
If CarID="" Then Response.Redirect "/"
|
Set rs = Server.CreateObject("ADODB.Recordset")
|
sql="select CarLicense,GPS_IMEI from CarData where CarID="&CarID
|
rs.open Sql,objConn,1,1
|
If not rs.Eof Then
|
CarLicense = rs("CarLicense")
|
imeis = rs("GPS_IMEI")
|
End If
|
rs.close()
|
|
If imeis<>"" Then
|
'调度任务当前理应所在地坐标/距离
|
CarTra_lng = 0
|
CarTra_lat = 0
|
If DispatchOrdID<>"" And DispatchOrdState<>"" Then
|
sql="select DispatchOrdTraStreet,DispatchOrdTraVia,DispatchOrdTraEnd from DispatchOrd where DispatchOrdID="&DispatchOrdID
|
rs.open Sql,objConn,1,1
|
If not rs.Eof Then
|
If DispatchOrdState="6" Then
|
CarTra = rs("DispatchOrdTraVia") '途经地
|
If CarTra="" Then
|
CarTra=rs("DispatchOrdTraStreet")
|
End If
|
ElseIf DispatchOrdState="7" Then
|
CarTra = rs("DispatchOrdTraEnd") '目的地
|
Else
|
CarTra = rs("DispatchOrdTraStreet")'机构起点
|
End If
|
If InStr(CarTra,"|")>1 Then CarTra=Mid(CarTra,1,InStr(CarTra,"|")-1)
|
End If
|
rs.close()
|
If CarTra<>"" Then
|
sql="select HopsProvince+HopsCity+HopsArea+HospAddress from HospData where HospName='"&CarTra&"'"
|
rs.open Sql,objConn,1,1
|
If not rs.Eof Then
|
CarTraAddress=rs(0)
|
Else
|
CarTraAddress=CarTra
|
End If
|
rs.close()
|
End If
|
If CarTraAddress<>"" Then
|
appUrl="https://api.map.baidu.com/geocoding/v3/"
|
args1="address="&CarTraAddress&"&output=json&ak=rGQBbHKGjAtVQy23OckafQkC6nNlaGmi"
|
HTMLCODE= GetBody(appUrl,args1)
|
'Response.Write HTMLCODE
|
'Response.End
|
json = HTMLCODE
|
str=json
|
set obj = getjson(str)
|
status = obj.status
|
If status=0 Then
|
CarTra_lng = obj.result.location.lng
|
CarTra_lat = obj.result.location.lat
|
End if
|
End If
|
End If
|
|
'车辆当前坐标
|
appUrl="http://api.gpsoo.net/1/devices/tracking"
|
args1="access_token="&access_token
|
args1=args1&"&imeis="&imeis&"&map_type=BAIDU&time="&ToUnixTime(now(),0)
|
'args1=args1&"&map_type=BAIDU" '如果要显示在百度地图上,map_type=BAIDU此时返回的经纬度将经过baidu校准方式校准,如果要显示在google地图上,map_type=GOOGLE,此时返回的经纬度将经过google校准方式校准,map_type如果不填,则返回原始经纬度
|
|
HTMLCODE= GetBody(appUrl,args1)
|
json = HTMLCODE
|
str=json
|
str=right(str,len(str)-instr(str,"[")+1)
|
str=left(str,InstrRev(str,"]"))
|
set obj = getjson(str)
|
for i=0 to obj.length-1
|
data_imei = obj.get(i).imei '设备IMEI
|
If data_imei=imeis Then
|
data_imei = obj.get(i).imei '设备IMEI
|
device_info = obj.get(i).device_info '0:正常数据 1:设备未上线 2:设备已过期 3:设备离线
|
data_lng = obj.get(i).lng '经度
|
data_lat = obj.get(i).lat '纬度
|
data_course = obj.get(i).course '航向
|
data_speed = obj.get(i).speed '速度
|
End if
|
Next
|
|
'车辆所在位置地址
|
appUrl="http://api.gpsoo.net/1/tool/address"
|
args1="access_token="&access_token
|
args1=args1&"&lng="&data_lng&"&lat="&data_lat&"&map_type=BAIDU&account="&account&"&time="&ToUnixTime(now(),0)
|
'args1=args1&"&map_type=BAIDU" '如果要显示在百度地图上,map_type=BAIDU此时返回的经纬度将经过baidu校准方式校准,如果要显示在google地图上,map_type=GOOGLE,此时返回的经纬度将经过google校准方式校准,map_type如果不填,则返回原始经纬度
|
HTMLCODE= GetBody(appUrl,args1)
|
|
'计算两点之间的直线距离
|
If CarTra_lng<>0 And CarTra_lat<>0 And data_lng<>0 And data_lat<>0 Then
|
sql="select (cast((6378137.0*ACOS(SIN("&data_lat&"/180*PI())*SIN(cast("&CarTra_lat&" as decimal(15,10))/180*PI())+COS("&data_lat&"/180*PI())*COS(cast("&CarTra_lat&" as decimal(15,10))/180*PI())*COS(("&data_lng&"-cast("&CarTra_lng&" as decimal(15,10)))/180*PI()))) as decimal(15,0)))"
|
rs.open Sql,objConn,1,1
|
Distance=clng(rs(0))
|
rs.close()
|
If Distance>2000 Then
|
DistanceTXT=int(Distance/1000)&"公里"
|
Else
|
DistanceTXT=Distance&"米"
|
End If
|
'Response.Write Distance &"<br>"
|
If Distance<=2000 then
|
HTMLCODE=Replace(HTMLCODE,".",".离"&CarTra&"约"&DistanceTXT&"##")
|
Else
|
HTMLCODE=Replace(HTMLCODE,".",".<font color=#f44336>离"&CarTra&"约"&DistanceTXT&"</font>##")
|
End If
|
HTMLCODE=Mid(HTMLCODE,1,InStr(HTMLCODE,"##")-1)&"""}"
|
End If
|
|
GPS=Replace(HTMLCODE,"{","{""imei"":"""&data_imei&""",""data_lng"":"""&data_lng&""",""data_lat"":"""&data_lat&""",""course"":"""&data_course&""",""speed"":"""&data_speed&""",")
|
Else
|
GPS="{""ret"":4}"
|
End If
|
Response.Write GPS
|
Response.end
|
%>
|