基于百度地图JS开源库开发网页应用

最近在百度云虚拟主机上面搭建网站,基于JS、PHP和MySQL开发了一个网页版的地图应用 。该系统模拟车机数据上报到数据库,实时更新道路交通状况。根据道路状况来计算导航时间。使用JS开发前端函数,PHP操作数据库。JS函数和PHP文件之间使用AJAX方法进行调用和反馈。

index.php

<html xmlns="http://lingtuotech.bj01.bdysite.com">  //你的网址
<head>
    <title>基于实时路况进行导航路线规划</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=百度地图JS平台密钥"></script>
</head>
<body style="background:#CBE1FF">
    <div style="width:730px; margin:auto; margin-left:100px;">
        设置起点:<input id="text_" type="text" value="外环罗山路立交桥" style="margin-right:100px;"/>
        设置终点:<input id="result_" type="text" value="华夏西路立交"/>
        <input type="button" value="查询" onclick="getPlannedRoute();"/>
        <div id="container" 
            style="position: absolute;
                margin-top:20px; 
                width: 730px; 
                height: 630px; 
                top: 40; 
                border: 1px solid gray;
                overflow:hidden;">
        </div>
    </div>
</body>
<body style="background:#CBE1FF">
    <div style="width:500px; margin-top:50px; margin-left:900px;">
        Report Vehicle Data
		</br>
		</br>
		Data ID:<input id="DataID" type="text" value="" style="width:100px;"/>
		Data Flag:<input id="DataFlag" type="text" value="" style="width:100px;"/>
		</br>
		Previous Position:<input id="PreviousPosition" type="text" value="" style="width:100px;"/>
		Previous Speed:<input id="PreviousSpeed" type="text" value="" style="width:100px;"/>
		</br>
		Current Position:<input id="CurrentPosition" type="text" value="" style="width:100px;"/>
		Current Speed:<input id="CurrentSpeed" type="text" value="" style="width:100px;"/>
		</br>
		</br>
		<input type="button" value="Submit" onclick="ReportVehicleData();"/>
		<input type="button" value="Reset" onclick="getPlannedRoute();"/>
    </div>
</body>
<body style="background:#CBE1FF">
    <div style="width:500px; margin-top:70px; margin-left:900px;">
        Get Road Condition Data
		</br>
		</br>
		Data ID:<input id="GetDataID" type="text" value="" style="width:100px;"/>
		RoadSegment Number:<input id="RoadSegmentNumber" type="text" value="" style="width:100px;"/>
		</br>
		</br>
		<input type="button" value="Refresh" onclick="GetRoadConditionData();"/>
    </div>
</body>
<body style="background:#CBE1FF">
    <div style="width:500px; margin-top:100px; margin-left:900px;">
		路线规划查询结果
		</br>
		<div id = "routeUpdate1">			
		</br>			
		路线一:全程 (  )km,耗时( )h。
		</br>
		路线二:全程 (  )km,耗时( )h。
		</br>
		路线三:全程 (  )km,耗时( )h。
		</br>
		</div>
		</br>
		<input type="button" value="刷新路况" onclick="getUpdateRoute();displayUpdateRoute();"/>
		<input type="button" value="显示距离最短路线" onclick="getUpdateRoute();displayMinDistance();"/>
		<input type="button" value="显示时间最短路线" onclick="getUpdateRoute();displayMinTime();"/>
    </div>
</body>
<body style="background:#CBE1FF">
    <div style="width:500px; margin-top:400px; margin-left:900px;">
	</div>
	<div id="webpage">
	</div>
</body>
<script type="text/javascript">
    var map = new BMap.Map("container");
    map.centerAndZoom(new BMap.Point(121.629371,31.188212), 12);//这里是初始地图所显示的区域,即Demo显示区域
    map.enableScrollWheelZoom();    //启用滚轮放大缩小,默认禁用
    map.enableContinuousZoom();    //启用地图惯性拖拽,默认禁用
 
    map.addControl(new BMap.NavigationControl());  //添加默认缩放平移控件
    map.addControl(new BMap.OverviewMapControl()); //添加默认缩略地图控件
    map.addControl(new BMap.OverviewMapControl({ isOpen: true, anchor: BMAP_ANCHOR_BOTTOM_RIGHT }));   //右下角,打开
 
     //单击获取点击的经纬度
    map.addEventListener("click",function(e){
        alert(e.point.lng + "," + e.point.lat);
    });

    var localSearch = new BMap.LocalSearch(map);
    localSearch.enableAutoViewport(); //允许自动调节窗体大小
function getPlannedRoute() {
    map.clearOverlays();//清空原来的标注
	
    //创建起点、终点、经过点
    var ptStart = new BMap.Point(121.601178,31.153162);
    //将icon的坐标点绑定
    var startIcon = new BMap.Icon("./icon/Icon_start.png", new BMap.Size(38, 52), {anchor: new BMap.Size(19, 52)}); 
    var markerStart = new BMap.Marker(ptStart,{icon:startIcon});  // 创建标注
    map.addOverlay(markerStart);              // 将标注添加到地图中

    var pt1 = new BMap.Point(121.632201,31.159215);
    var Icon1 = new BMap.Icon("./icon/Icon_mark1.png", new BMap.Size(32, 47), {anchor: new BMap.Size(16, 47)});
    var markerIcon1 = new BMap.Marker(pt1,{icon:Icon1});  // 创建标注
    map.addOverlay(markerIcon1);              // 将标注添加到地图中

    var pt2 = new BMap.Point(121.654101,31.161641);
    var Icon2 = new BMap.Icon("./icon/Icon_mark2.png", new BMap.Size(32, 47), {anchor: new BMap.Size(16, 47)});
    var markerIcon2 = new BMap.Marker(pt2,{icon:Icon2});  // 创建标注
    map.addOverlay(markerIcon2);    

    var pt3 = new BMap.Point(121.592307,31.175406);
    var Icon3 = new BMap.Icon("./icon/Icon_mark3.png", new BMap.Size(32, 47), {anchor: new BMap.Size(16, 47)});
    var markerIcon3 = new BMap.Marker(pt3,{icon:Icon3});  // 创建标注
    map.addOverlay(markerIcon3);              // 将标注添加到地图中

    var pt4 = new BMap.Point(121.628976,31.187779);
    var Icon4 = new BMap.Icon("./icon/Icon_mark4.png", new BMap.Size(32,	 47), {anchor: new BMap.Size(16, 47)});
    var markerIcon4 = new BMap.Marker(pt4,{icon:Icon4});  // 创建标注
    map.addOverlay(markerIcon4);              // 将标注添加到地图中

    var ptEnd = new BMap.Point(121.652597,31.195359);
    var endIcon = new BMap.Icon("./icon/Icon_end.png", new BMap.Size(38, 52), {anchor: new BMap.Size(19, 52)});
    var markerEnd = new BMap.Marker(ptEnd,{icon:endIcon});  // 创建标注
    map.addOverlay(markerEnd);              // 将标注添加到地图中
}
var xmlHttp;				//定义XMLHttpRequest对象
function createXmlHttpRequestObject(){
	//如果在internet Explorer下运行
	if(window.ActiveXObject){
		try{
			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
		}catch(e){
			xmlHttp=false;
		}

	}else{
	//如果在Mozilla或其他的浏览器下运行
		try{
			xmlHttp=new XMLHttpRequest();
		}catch(e){
			xmlHttp=false;
		}
	}
	 //返回创建的对象或显示错误信息
	if(!xmlHttp)
		alert("返回创建的对象或显示错误信息");
		else
		return xmlHttp;
}
function ReportVehicleData(){
	createXmlHttpRequestObject();
	var VehicleData='';
	var DataID = document.getElementById("DataID").value;
	if(DataID==""){
		alert('Data ID不能为空!');
		return false;
	}
	VehicleData+=DataID+' ';
	
	var DataFlag = document.getElementById("DataFlag").value;
	if(DataFlag==""){
		alert('Data Flag不能为空!');
		return false;
	}
	VehicleData+=DataFlag+' ';
	
	var PreviousPosition = document.getElementById("PreviousPosition").value;
	if(PreviousPosition==""){
		alert('Previous Position不能为空!');
		return false;
	}
	VehicleData+=PreviousPosition+' ';
	
	var PreviousSpeed = document.getElementById("PreviousSpeed").value;
	if(PreviousSpeed==""){
		alert('Previous Speed不能为空!');
		return false;
	}	
	VehicleData+=PreviousSpeed+' ';
	
	var CurrentPosition = document.getElementById("CurrentPosition").value;
	if(CurrentPosition==""){
		alert('Current Position不能为空!');
		return false;
	}	
	VehicleData+=CurrentPosition+' ';
	
	var CurrentSpeed = document.getElementById("CurrentSpeed").value;
	if(CurrentSpeed==""){
		alert('Current Speed不能为空!');
		return false;
	}
	VehicleData+=CurrentSpeed+' ';
	
	xmlHttp.onreadystatechange=StatHandler;	//判断URL调用的状态值并处理
	xmlHttp.open("GET",'ReportVehicleData.php?VehicleData='+VehicleData,false);
	xmlHttp.send(null);	
}
function GetRoadConditionData(){
	createXmlHttpRequestObject();

	var GetDataID = document.getElementById("GetDataID").value;
	if(GetDataID==""){
		alert('GetData ID不能为空!');
		return false;
	}
	
	xmlHttp.onreadystatechange=RoadDataHandler;	//判断URL调用的状态值并处理
	xmlHttp.open("GET",'GetRoadData.php?GetDataID='+GetDataID,false);
	xmlHttp.send(null);
}
function StatHandler(){
	if(xmlHttp.readyState==4 && xmlHttp.status==200){
		alert(xmlHttp.responseText);
	}
}
var RoadSegmentSpeed = new Array();
function RoadDataHandler(){
	if(xmlHttp.readyState==4 && xmlHttp.status==200){
		var RoadSegmentSpeedStr = xmlHttp.responseText;
		alert(RoadSegmentSpeedStr);
		RoadSegmentSpeed = RoadSegmentSpeedStr.split(" ");
		/***坐标从1开始
		alert(RoadSegmentSpeed[1]);
		alert(RoadSegmentSpeed[2]);
		alert(RoadSegmentSpeed[3]);
		alert(RoadSegmentSpeed[4]);
		alert(RoadSegmentSpeed[5]);
		alert(RoadSegmentSpeed[6]);
		alert(RoadSegmentSpeed[7]);
		***/	
	}
}
//根据两个途径点,在地图上显示导航路线。

function getSDRouteTest(p2, p3) {

    map.clearOverlays();
	var myP1 = new BMap.Point(121.601178,31.153162);
    var myP2 = p2;
	var myP3 = p3;
	var myP4 = new BMap.Point(121.652597,31.195359);
	
    //var pts = driving.getResults().getPlan(0).getRoute(0).getPath();     
    var polyline1 = new BMap.Polyline([myP1, myP2], {strokeColor:"red",strokeWeight:6,strokeOpacity:0.5});
	var polyline2 = new BMap.Polyline([myP2, myP3], {strokeColor:"red",strokeWeight:6,strokeOpacity:0.5});
	var polyline3 = new BMap.Polyline([myP3, myP4], {strokeColor:"red",strokeWeight:6,strokeOpacity:0.5});
	
    map.addOverlay(polyline1); 
	map.addOverlay(polyline2);
	map.addOverlay(polyline3);
	
	var startIcon = new BMap.Icon("./icon/Icon_start.png", new BMap.Size(38, 52), {anchor: new BMap.Size(19, 52)});
	var markerStart = new BMap.Marker(myP1,{icon:startIcon});
	var Icon1 = new BMap.Icon("./icon/Icon_mark1.png", new BMap.Size(32, 47), {anchor: new BMap.Size(16, 47)});
    var markerIcon1 = new BMap.Marker(myP2,{icon:Icon1});
	var Icon2 = new BMap.Icon("./icon/Icon_mark2.png", new BMap.Size(32, 47), {anchor: new BMap.Size(16, 47)});
    var markerIcon2 = new BMap.Marker(myP3,{icon:Icon2});
	var endIcon = new BMap.Icon("./icon/Icon_end.png", new BMap.Size(38, 52), {anchor: new BMap.Size(19, 52)});
    var markerEnd = new BMap.Marker(myP4,{icon:endIcon});
    
	map.addOverlay(markerStart);       
    map.addOverlay(markerIcon1);       
    map.addOverlay(markerIcon2);
    map.addOverlay(markerEnd);    

    setTimeout(function(){            map.setViewport([myP1,myP2,myP3,myP4]);        },1000);

}
var sum;
function getUpdateRoute(){
	var speed = RoadSegmentSpeed;
var sRoute=
[
{
	routeId        : 0,
	routeDistance  : 3.1,
    routeSpeed     : speed[1],
	routeTime      :  0
},
{
	routeId        : 1,
	routeDistance  : 2,
    routeSpeed     : speed[2],
	routeTime      :  0
},
{
	routeId        : 2,
	routeDistance  : 4,
    routeSpeed     : speed[3],
	routeTime      :  0
},
{
	routeId        : 3,
	routeDistance  : 3.5,
    routeSpeed     : speed[7],
	routeTime      :  0
},
{
	routeId        : 4,
	routeDistance  : 2.6,
    routeSpeed     : speed[6],
	routeTime      :  0
},
{
	routeId        : 5,
	routeDistance  : 2.7,
    routeSpeed     : speed[4],
	routeTime      :  0
},
{
	routeId        : 6,
	routeDistance  : 4.1,
    routeSpeed     : speed[5],
	routeTime      :  0
}
];

var sSumRoute =
[
{
	sumRouteId        : 0,
	sumDistance       : 0,
	sumTime           : 0,
    routePoint0       : new BMap.Point(121.632201,31.159215),
	routePoint1       : new BMap.Point(121.654101,31.161641)
},
{
	sumRouteId        : 1,
	sumDistance       : 0,
	sumTime           : 0,
    routePoint0       : new BMap.Point(121.632201,31.159215),
	routePoint1       : new BMap.Point(121.628976,31.187779)
},
{
	sumRouteId        : 2,
	sumDistance       : 0,
	sumTime           : 0,
    routePoint0       : new BMap.Point(121.592307,31.175406),
	routePoint1       : new BMap.Point(121.628976,31.187779)
}
];
	for (var i = 0; i < sRoute.length; i++)
	{
		sRoute[i].routeTime = sRoute[i].routeDistance / sRoute[i].routeSpeed; // 1,2,1,1.5,1.75,2.5,1
	}	
    sSumRoute[0].sumDistance = sRoute[0].routeDistance + sRoute[1].routeDistance + sRoute[2].routeDistance; // 60
	sSumRoute[1].sumDistance = sRoute[0].routeDistance + sRoute[3].routeDistance + sRoute[4].routeDistance; // 50
	sSumRoute[2].sumDistance = sRoute[4].routeDistance + sRoute[5].routeDistance + sRoute[6].routeDistance; // 60

	sSumRoute[0].sumTime = sRoute[0].routeTime + sRoute[1].routeTime + sRoute[2].routeTime; // 4
	sSumRoute[1].sumTime = sRoute[0].routeTime + sRoute[3].routeTime + sRoute[4].routeTime; // 3.5
	sSumRoute[2].sumTime = sRoute[4].routeTime + sRoute[5].routeTime + sRoute[6].routeTime; // 5.25 
	sum = sSumRoute;
    // return sSumRoute;	
}
function displayUpdateRoute()
{
	//var sumdist = getUpdateRoute(); 
	var sumdist = sum;
	document.getElementById("routeUpdate1").innerHTML = "</br>" + "路线一:全程 (" +sumdist[0].sumDistance.toFixed(2) + ")km, 耗时(" + sumdist[0].sumTime.toFixed(2) + ")h";	
    document.getElementById("routeUpdate1").innerHTML += "</br>" + "路线二:全程 (" +sumdist[1].sumDistance.toFixed(2) + ")km, 耗时(" + sumdist[1].sumTime.toFixed(2) + ")h";
	document.getElementById("routeUpdate1").innerHTML += "</br>" + "路线三:全程 (" +sumdist[2].sumDistance.toFixed(2) + ")km, 耗时(" + sumdist[2].sumTime.toFixed(2) + ")h";
}

//var sMinDistance;
function displayMinDistance()
{
var sumDist = sum;
var sMinDistanceContent =
{
	minDistance       : 0,
	routePoint0       : new BMap.Point(121.601178,31.153162),
	routePoint1       : new BMap.Point(121.601178,31.153162)
};

	if (sumDist[0].sumDistance < sumDist[1].sumDistance)
	{
		sMinDistanceContent.minDistance = sumDist[0].sumDistance;
		sMinDistanceContent.routePoint0 = sumDist[0].routePoint0;
		sMinDistanceContent.routePoint1 = sumDist[0].routePoint1;
	}
	else
	{
		sMinDistanceContent.minDistance = sumDist[1].sumDistance;
		sMinDistanceContent.routePoint0 = sumDist[1].routePoint0;
		sMinDistanceContent.routePoint1 = sumDist[1].routePoint1;
	}
	
	if (sumDist[2].sumDistance < sMinDistanceContent.minDistance)
	{
		sMinDistanceContent.minDistance = sumDist[2].sumDistance;
		sMinDistanceContent.routePoint0 = sumDist[2].routePoint0;
		sMinDistanceContent.routePoint1 = sumDist[2].routePoint1;
	}

	getSDRouteTest(sMinDistanceContent.routePoint0, sMinDistanceContent.routePoint1);
	//document.getElementById("routeUpdate1").innerHTML += "</br>" + "路线四:全程 (" +sMinDistanceContent.minDistance + ")km, 耗时(" + sMinDistanceContent.routePoint0 + ")h";
    //sMinDistance = sMinDistanceContent;
    //alert("最短距离:" + sMinDistanceContent.minDistance + ",定点0:" + sMinDistanceContent.routePoint0 + ",定点1:" + sMinDistanceContent.routePoint1);	
}
//var sMinTime;
function displayMinTime()
{
var sumDist = sum;
var sMinTimeContent =
{
	minTime           : 0,
	routePoint0       : new BMap.Point(121.601178,31.153162),
	routePoint1       : new BMap.Point(121.601178,31.153162)
};
	if (sumDist[0].sumTime < sumDist[1].sumTime)
	{
		sMinTimeContent.minTime = sumDist[0].sumTime;
		sMinTimeContent.routePoint0 = sumDist[0].routePoint0;
		sMinTimeContent.routePoint1 = sumDist[0].routePoint1;
	}
	else
	{
		sMinTimeContent.minTime = sumDist[1].sumTime;
		sMinTimeContent.routePoint0 = sumDist[1].routePoint0;
		sMinTimeContent.routePoint1 = sumDist[1].routePoint1;
	}
	
	if (sumDist[2].sumTime < sMinTimeContent.minTime)
	{
		sMinTimeContent.minTime = sumDist[2].sumTime;
		sMinTimeContent.routePoint0 = sumDist[2].routePoint0;
		sMinTimeContent.routePoint1 = sumDist[2].routePoint1;
	}

	getSDRouteTest(sMinTimeContent.routePoint0, sMinTimeContent.routePoint1);
	//sMinTime = sMinTimeContent;

	//alert("最短时间:" + sMinTimeContent.minTime + ",定点0:" + sMinTimeContent.routePoint0 + ",定点1:" + sMinTimeContent.routePoint1);	
}
</script>
</html>

conn/conn.php

<?php
$conn = mysqli_connect("数据库地址", "登录名", "登录密码", "数据库名字") or die("连接数据库服务器失败!".mysqli_error()); //连接MySQL服务器,选择数据库
mysqli_query($conn,"set names utf8");						//设置数据库编码格式utf8
?>

ReportVehicleData.php

<?php
	header('Content-type: text/html;charset=GB2312'); 				//指定发送数据的编码格式
	include_once 'conn/conn.php';								//连接数据库

	$VehicleData = $_GET['VehicleData'];	
	$VehicleArray = explode(" ",$VehicleData);    //使用" "将几个数据进行拆分	
	
	$DataID = $VehicleArray[0];
	$DataFlag = $VehicleArray[1];
	$PreviousPosition = $VehicleArray[2];
	$PreviousSpeed = $VehicleArray[3];
	$CurrentPosition = $VehicleArray[4];
	$CurrentSpeed = $VehicleArray[5];

	if($DataID != "0x5aa5")
	{
		echo "Data ID != 0x5aa5";
		exit;
	}
	
	if($DataFlag == 0x1a)      //导航开始第一帧数据
	{
		$sql = "select * from `Real-time_Road_Condition` where RoadSegmentNumber = ".$CurrentPosition;	//定义SQL语句
		$result=mysqli_query($conn,$sql);					//执行模糊查询		
		if(mysqli_num_rows($result)>0)      //执行结果>0,说明数据获取成功。
		{
			$rows = mysqli_fetch_array($result);   //根据CurrentPosition路段号,获取这一行的数据
			
			$rows['AverageSpeed']= ($rows['AverageSpeed']*$rows['VehiclesNumber']+$CurrentSpeed)/($rows['VehiclesNumber']+1);
			
			$rows['VehiclesNumber']=$rows['VehiclesNumber']+1;
			
			$sql = "update `Real-time_Road_Condition` set AverageSpeed=".$rows['AverageSpeed'].", VehiclesNumber=".$rows['VehiclesNumber']." where RoadSegmentNumber = ".$CurrentPosition;	//定义SQL语句
			$result=mysqli_query($conn,$sql);
		}
	}
	elseif($DataFlag == 0x2a)  //导航进行中的数据
	{
		if($PreviousPosition == $CurrentPosition)
		{
			$sql = "select * from `Real-time_Road_Condition` where RoadSegmentNumber = ".$CurrentPosition;	//定义SQL语句
			$result=mysqli_query($conn,$sql);					//执行模糊查询		
			if(mysqli_num_rows($result)>0)      //执行结果>0,说明数据获取成功。
			{
				$rows = mysqli_fetch_array($result);   //根据CurrentPosition路段号,获取这一行的数据				
				$rows['AverageSpeed']= ($rows['AverageSpeed']*$rows['VehiclesNumber']+$CurrentSpeed-$PreviousSpeed)/$rows['VehiclesNumber'];
								
				$sql = "update `Real-time_Road_Condition` set AverageSpeed=".$rows['AverageSpeed'].", VehiclesNumber=".$rows['VehiclesNumber']." where RoadSegmentNumber = ".$CurrentPosition;	//定义SQL语句
				$result=mysqli_query($conn,$sql);
			}			
		}
		else
		{
			$sql = "select * from `Real-time_Road_Condition` where RoadSegmentNumber = ".$PreviousPosition;	//定义SQL语句
			$result=mysqli_query($conn,$sql);					//执行模糊查询		
			if(mysqli_num_rows($result)>0)      //执行结果>0,说明数据获取成功。
			{
				$rows = mysqli_fetch_array($result);   //根据PreviousPosition路段号,获取这一行的数据				
				$rows['AverageSpeed']= ($rows['AverageSpeed']*$rows['VehiclesNumber']-$PreviousSpeed)/($rows['VehiclesNumber']-1);
				$rows['VehiclesNumber']=$rows['VehiclesNumber']-1;
								
				$sql = "update `Real-time_Road_Condition` set AverageSpeed=".$rows['AverageSpeed'].", VehiclesNumber=".$rows['VehiclesNumber']." where RoadSegmentNumber = ".$PreviousPosition;	//定义SQL语句
				$result=mysqli_query($conn,$sql);
			}
			
			$sql = "select * from `Real-time_Road_Condition` where RoadSegmentNumber = ".$CurrentPosition;	//定义SQL语句
			$result=mysqli_query($conn,$sql);					//执行模糊查询		
			if(mysqli_num_rows($result)>0)      //执行结果>0,说明数据获取成功。
			{
				$rows = mysqli_fetch_array($result);   //根据CurrentPosition路段号,获取这一行的数据				
				$rows['AverageSpeed']= ($rows['AverageSpeed']*$rows['VehiclesNumber']+$CurrentSpeed)/($rows['VehiclesNumber']+1);
				$rows['VehiclesNumber']=$rows['VehiclesNumber']+1;
				
				$sql = "update `Real-time_Road_Condition` set AverageSpeed=".$rows['AverageSpeed'].", VehiclesNumber=".$rows['VehiclesNumber']." where RoadSegmentNumber = ".$CurrentPosition;	//定义SQL语句
				$result=mysqli_query($conn,$sql);
			}
		}			
	}
	elseif($DataFlag == 0xaa)   //导航结束最后一帧数据 最后一帧数据,当前速度设置为0
	{
		$sql = "select * from `Real-time_Road_Condition` where RoadSegmentNumber = ".$PreviousPosition;	//定义SQL语句
		$result=mysqli_query($conn,$sql);					//执行模糊查询		
		if(mysqli_num_rows($result)>0)      //执行结果>0,说明数据获取成功。
		{
			$rows = mysqli_fetch_array($result);   //根据CurrentPosition路段号,获取这一行的数据				
			$rows['AverageSpeed']= ($rows['AverageSpeed']*$rows['VehiclesNumber']-$PreviousSpeed)/($rows['VehiclesNumber']-1);				
			$rows['VehiclesNumber']=$rows['VehiclesNumber']-1;				
			$sql = "update `Real-time_Road_Condition` set AverageSpeed=".$rows['AverageSpeed'].", VehiclesNumber=".$rows['VehiclesNumber']." where RoadSegmentNumber = ".$PreviousPosition;	//定义SQL语句
			$result=mysqli_query($conn,$sql);
		}		
	}
	else               //无效的数据Flag
	{
		echo "Data Flag is invalid.";
		exit;		
	}
	
	/***
	$sql = "select * from `Real-time_Road_Condition` where RoadSegmentNumber = ".$CurrentPosition;	//定义SQL语句
	$result=mysqli_query($conn,$sql);					//执行模糊查询
	if(mysqli_num_rows($result)>0)      //执行结果>0,说明数据获取成功。
	{				//获取查询结果
		$rows = mysqli_fetch_array($result);
		
		if ($DataFlag == 0)
		{
			echo $DataFlag;
			echo "***";
			$rows[2]=$rows[2]+1;
			echo $rows[2];
		}
		elseif ($DataFlag == 2)
		{
			echo $DataFlag;
			$rows[2]=$rows[2]-1;
		}
		else
		{
			echo $DataFlag;
			$rows[4]= ($rows[2]*($rows[4]+1)+$CurrentSpeed)/$rows[4];
		}
		
		$sql = "update `Real-time_Road_Condition` set AverageSpeed=".$rows[4].", VehiclesNumber=".$rows[2]." where RoadSegmentNumber = ".$CurrentPosition;	//定义SQL语句
		$result=mysqli_query($conn,$sql);
	}
	***/
	/***
	else
	{
		echo "插入一个新路段";
		$sql = "insert into `Real-time_Road_Condition` (RoadSegmentNumber) value (".$CurrentPosition.")";
		$result=mysqli_query($conn,$sql);			
	}
	***/	
?>

GetRoadData.php

<?php
	header('Content-type: text/html;charset=GB2312'); 				//指定发送数据的编码格式
	include_once 'conn/conn.php';								//连接数据库

	$GetDataID = $_GET['GetDataID'];
	$sql = "select AverageSpeed from `Real-time_Road_Condition`";	//定义SQL语句
	$result=mysqli_query($conn,$sql);	
	$rowcount=mysqli_num_rows($result);
	$averagespeedstr = "";
	
	for($i=1; $i<=$rowcount; $i++)
	{
		$rows = mysqli_fetch_array($result);
		$averagespeedstr = $averagespeedstr." ".$rows[0];
	}
	
	echo $averagespeedstr;
?>

下图就是网页界面:

猜你喜欢

转载自blog.csdn.net/xikangsoon/article/details/88592412
今日推荐