Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Gunakan PHP dan API Amap untuk mencipta penjejakan trek masa nyata bagi peta

Gunakan PHP dan API Amap untuk mencipta penjejakan trek masa nyata bagi peta

WBOY
WBOYasal
2023-07-29 11:06:301471semak imbas

Gunakan API PHP dan Amap untuk mencipta penjejakan trek masa nyata bagi peta

Dengan perkembangan teknologi dan peningkatan permintaan orang ramai untuk maklumat lokasi geografi, peta telah menjadi bahagian yang amat diperlukan dalam kehidupan kita. Fungsi penjejakan trajektori masa nyata telah digunakan secara meluas dalam banyak bidang, seperti logistik, pengurusan trafik, dsb. Artikel ini akan memperkenalkan cara menggunakan PHP dan API Amap untuk mencipta fungsi penjejakan trek masa nyata pada peta.

Sebelum kita mula, kita perlu menyediakan beberapa alatan dan persekitaran yang diperlukan. Pertama, anda memerlukan akaun pembangun Amap untuk mendapatkan kunci pembangunan untuk API Peta Amap. Kedua, kita perlu memasang php dan persekitaran operasi yang berkaitan, seperti pelayan Apache, dsb.

Mula-mula, mari buat halaman peta asas. Cipta fail php baharu, namakannya map.php dan tambahkan kod berikut pada fail:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>实时轨迹追踪</title>
    <style>
        #container{
            width: 100%;
            height: 500px;
            position: relative;
        }
    </style>
</head>
<body>
    <div id="container"></div>
<script src="https://webapi.amap.com/maps?v=1.4.15&key=yourkey"></script>
<script>
    //创建地图对象
    var map = new AMap.Map('container', {
        resizeEnable: true,
        center: [116.397428, 39.90923], //地图中心点
        zoom: 11 //地图显示的缩放级别
    });
</script>
</body>
</html>

Dalam kod di atas, kami menggunakan AMap.Map untuk mencipta objek peta dan menetapkan titik tengah dan tahap zum peta . Kunci di sini perlu diganti dengan kunci pembangunan API Amap anda sendiri.

Simpan dan buka map.php, anda akan melihat halaman peta yang mudah.

Seterusnya, kami akan menambah fungsi pengesanan trajektori. Mula-mula, anda perlu memperkenalkan gaya dan skrip yang diperlukan untuk penjejakan trek dalam teg kepala html. Ubah suai kod pengepala map.php seperti berikut:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>实时轨迹追踪</title>
    <style>
        #container{
            width: 100%;
            height: 500px;
            position: relative;
        }
    </style>
    <link rel="stylesheet" href="https://a.amap.com/jsapi_demos/static/demo-center/css/demo-center.css"/>
</head>
<body>
    <div id="container"></div>
    <script src="https://webapi.amap.com/maps?v=1.4.15&key=yourkey"></script>
    <script src="https://a.amap.com/jsapi_demos/static/demo-center/js/socket.io.js"></script>
    <script>
        //创建地图对象
        var map = new AMap.Map('container', {
            resizeEnable: true,
            center: [116.397428, 39.90923], //地图中心点
            zoom: 11 //地图显示的缩放级别
        });

        //创建websocket连接
        var socket = io.connect('http://yourserver.com:3000');

        //接收服务器发送的实时位置数据
        socket.on('location', function(data){
            var lnglat = data.split(',');
            var marker = new AMap.Marker({
                position: lnglat,
                map: map
            });
            map.setCenter(lnglat);
        });
    </script>
</body>
</html>

Dalam kod di atas, kami memperkenalkan socket.io.js dan mencipta sambungan websocket. Dengar data lokasi masa nyata yang dihantar oleh pelayan melalui kaedah socket.on dan tambahkan penanda pada peta.

Seterusnya, kita perlu menolak data lokasi masa nyata pada bahagian pelayan. Cipta fail php baharu, namakannya server.php, dan tambah kod berikut:

<?php
error_reporting(E_ALL);
set_time_limit(0);

$address = 'yourserver.com';
$port = 3000;

//创建一个Socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket
");

//绑定Socket到指定地址和端口
$result = socket_bind($socket, $address, $port) or die("Could not bind to socket
");

//开始监听Socket
$result = socket_listen($socket, 3) or die("Could not set up socket listener
");

//接受来自客户端的连接,并通过Socket发送实时位置数据
while (true) {
    $client = socket_accept($socket) or die("Could not accept incoming connection
");
    
    $location = getRealtimeLocation(); //获取实时位置数据的方法
    
    socket_write($client, $location, strlen($location)) or die("Could not write output
");
    socket_close($client);
}

//关闭Socket连接
socket_close($socket);

//获取实时位置数据的方法
function getRealtimeLocation(){
    //这里可以通过其他方式获取实时位置数据,例如从GPS设备、手机传感器等
    
    //这里简化演示,直接返回一个随机生成的经纬度坐标
    $lng = mt_rand(116000000, 117000000) / 1000000;
    $lat = mt_rand(39000000, 40000000) / 1000000;
    
    return $lng . ',' . $lat;
}
?>

Dalam kod di atas, kami mencipta pelayan Soket dan menerima sambungan daripada pelanggan dalam gelung sementara. Dapatkan data lokasi masa nyata dengan menghubungi kaedah getRealtimeLocation dan hantar data kepada pelanggan.

Simpan dan jalankan server.php.

Kini, anda boleh membuka halaman map.php dalam penyemak imbas, anda akan melihat peta, dan titik penanda yang dijana secara rawak akan dipaparkan pada peta dalam masa nyata, menunjukkan lokasi masa nyata objek. Anda boleh mengubah suai kaedah getRealtimeLocation untuk mendapatkan data lokasi sebenar mengikut keperluan anda.

Melalui langkah di atas, kami berjaya mencipta fungsi penjejakan trek masa nyata peta menggunakan PHP dan API Amap. Anda boleh mengubah suai dan mengembangkannya mengikut keperluan anda sendiri, seperti menambah lebih banyak paparan data masa nyata, mengoptimumkan logik kod, dsb. Semoga artikel ini dapat membantu anda!

Atas ialah kandungan terperinci Gunakan PHP dan API Amap untuk mencipta penjejakan trek masa nyata bagi peta. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn