使用PHP与百度地图API实现车辆信息展示与打点标注
作者:开源拾贝时间:2026-10-28 10:35:59浏览:82
本文介绍如何利用PHP后端连接数据库,获取最新车辆数据,并通过百度地图API在前端网页实现地图加载、动态打点及点击弹窗显示详细信息的功能。通过map.php、info.php等文件配合,完成车联网信息的可视化展示。
项目需求与页面布局概述
近期项目需求开发一个网页,布局为顶部标题栏,下方分为左右两栏:左侧为地图区域,地图上需显示两个标记点,点击标记点可弹出提示框,展示数据库中最新两条数据;右侧为文字说明区域。本文档记录了初步实现过程,供参考。
最终实现的页面效果如下图所示:
地图页面map.php实现与数据库交互
首先创建map.php文件,用于处理地图显示与数据交互,核心代码如下:
map.php文件完整代码:
<!DOCTYPE html>
<?php
/*
// 建立数据库连接
*/
$conn=mysql_connect("","","") or die("can not connect to server");
mysql_select_db("hdm0410292_db",$conn);
mysql_query("set names utf8");
// 查询两辆车插入的最新数据,并将SQL语句存入数组
$sql0="select * from car_info where carID='20140508'order by id desc limit 1";
$sql1="select * from car_info where carID= '20140510' order by id desc limit 1";
$sql=array($sql0,$sql1);
?>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>车联网信息展示</title>
<style type="text/css">
html{
height:99%}
body{
height:99.9%;
width:99%;
font-family:楷体_GB2312;
font-size:25px}
#container {height: 100%}
</style>
<script type="text/javascript"
src="http://api.map.baidu.com/api?v=1.5&ak=你申请的秘钥"></script>
</head>
<body BGCOLOR="#CAFFFF">
<div id="container"></div>
<script type="text/javascript">
var lon_center = 0;
var lat_center = 0;
var map = new BMap.Map("container");
<!-- 添加标注的函数,参数包括,点坐标,车ID,以及数据库里的其他信息-->
function addMarker(point,index,s){
var fIcon = new BMap.Icon("car1.png", new BMap.Size(55, 43), {
});
var sIcon = new BMap.Icon("car2.png", new BMap.Size(55, 43), {
});
var myIcon = "";
// 创建标注对象并添加到地图
if(index == 20140508)
myIcon=fIcon;
else
myIcon=sIcon;
var marker = new BMap.Marker(point, {icon: myIcon});
map.addOverlay(marker);
marker.addEventListener("click",function(){
var opts={width:450,height:500,title:"详细信息"};
var infoWindow = new BMap.InfoWindow(s,opts);
map.openInfoWindow(infoWindow,point);
});
}
<?php
//遍历数组里的两条sql语句
foreach ($sql as &$value) {
$query=mysql_query($value);
$row=mysql_fetch_array($query);
?>
var lon= <?php echo $row[longitude] ?>;
var lat= <?php echo $row[latitude] ?>;
<!-- 计算两个点的中心点,并将其作为地图初始化时的中心位置-->
lon_center += lon;
lat_center += lat;
var id=<?php echo $row[id] ?>;
var info="<br/>"+"carID: " + "<?php echo $row[carID]?>" + " <br/> " +
"经度: " + "<?php echo $row[longitude]?>" + " <br/> " +
"纬度: " + "<?php echo $row[latitude]?>" + " <br/> " +
"速度: " + "<?php echo $row[speed]?>" + "Km/h" + " <br/> " +
"加速度: " + "<?php echo $row[acceleration]?>" + " <br/> " +
"方向: " + "<?php echo $row[direction]?>" + " <br/> " +
"油量: " + "<?php echo $row[oil]?>" +"<br/>" +
"地址: " + "<?php echo $row[street]?>";
var point = new BMap.Point(lon, lat);
addMarker(point,<?php echo $row[carID] ?>,info);
<?php
}
?>
<!-- 计算两个点的中心点,并将其作为地图初始化时的中心位置-->
var center = new BMap.Point(lon_center/2,lat_center/2);
map.centerAndZoom(center, 17);
map.enableScrollWheelZoom();
</script>
</body>
</html> map.php文件主要功能是显示数据库中的两条信息,并将这两条信息在地图上的相应位置显示出来。
标题页面title.php与详细信息页info.php构建
接着创建title.php,该文件仅用于显示页面标题,实现较为简单。
title.php文件代码如下:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>信息展示</title>
<style type="text/css">
html{
height:100%;}
body{
height:10%;
width:99%;
font-family:楷体_GB2312;
font-size:25px}
</style>
</head>
<body BGCOLOR="#CAFFFF">
<H1 ALIGN="CENTER"> 信息展示 </H1>
</body>
</html> 随后建立详细信息说明模块info.php,代码如下:
info.php文件完整代码:
<!DOCTYPE html>
<?php
$conn=mysql_connect("","","") or die("can not connect to server");
mysql_select_db("",$conn);
mysql_query("set names utf8");
$sql0="select * from car_info where carID='20140508'order by id desc limit 1";
$sql1="select * from car_info where carID= '20140510' order by id desc limit 1";
$sql=array($sql0,$sql1);
function htmtocode($content){
$content=str_replace("\n", "<br>", str_replace(" ", " ", $content));
return $content;
}
?>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>信息展示</title>
<style type="text/css">
html{
height:90%;}
body{
height:90%;
width:90%;
font-family:楷体_GB2312;
font-size:20px}
</style>
</head>
<body BGCOLOR="#CAFFFF">
<H1 ALIGN="CENTER"> 信息展示 </H1>
<?php foreach ($sql as &$value) {
$query=mysql_query($value);
$row=mysql_fetch_array($query);
?>
<H2>car <?php echo $row[carID]?> 详细信息</H2>
<HR>
CAR ID: <?php echo $row[carID]?><br>
经度: <?php echo $row[longitude]?> <br>
纬度: <?php echo $row[latitude]?> <br>
速度: <?php echo $row[speed]?> Km/h <br>
加速度: <?php echo $row[acceleration]?><br>
方向: <?php echo $row[direction]?> <br>
油量: <?php echo $row[oil]?><br>
地址: <?php echo $row[street]?><br>
时间: <?php echo $row[date]?>
<?php } ?>
</body>
</html> 主页面vanet.php整合与框架调用
最后编写vanet.php文件,该文件负责调用上述三个页面进行整合展示。
vanet.php文件代码如下:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>信息展示</title>
</head>
<FRAMESET ROWS="10%,90%" FRAMEBORDER=1 >
<FRAME SRC="title.php"></FRAME>
<FRAMESET COLS="70%,30%">
<FRAME SRC="map.php">
<FRAME SRC="info.php">
</FRAMESET>
</FRAMESET>
</html>作者最新文章
JS 怎么使用 pako.js 解压 gzip 数据流
2026-11-05 15:54:33
零基础先学JavaScript还是Python?对比学习难度与上手曲线
2026-11-05 14:47:40
JS代码反混淆:主流在线工具与本地软件推荐
2026-11-04 19:28:41
浏览器控制台查看格式化JSON有哪些实用技巧
2026-11-04 16:56:53
JS控制台打印基础:console.log语法与多参数用法
2026-11-04 09:23:11
