ホームページ  >  記事  >  バックエンド開発  >  PHP と Amap API を使用して、地図のリアルタイム トラック追跡を作成します

PHP と Amap API を使用して、地図のリアルタイム トラック追跡を作成します

WBOY
WBOYオリジナル
2023-07-29 11:06:301471ブラウズ

PHP と Amap API を使用して地図のリアルタイム トラック追跡を作成する

テクノロジーの発展と地理的位置情報に対する人々の需要の増大により、地図は私たちの生活に欠かせないものになりました。リアルタイム軌跡追跡機能は、物流、交通管理などの多くの分野で広く使用されています。この記事では、PHP と Amap API を使用して、地図上にリアルタイムの軌跡追跡機能を作成する方法を紹介します。

始める前に、必要なツールと環境を準備する必要があります。まず、Amap Map API の開発キーを取得するには、Amap 開発者アカウントが必要です。次に、php と、Apache サーバーなどの関連オペレーティング環境をインストールする必要があります。

まず、基本的なマップ ページを作成しましょう。新しい php ファイルを作成し、map.php という名前を付け、次のコードをファイルに追加します。

<!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>

上記のコードでは、AMap.Map を使用してマップ オブジェクトを作成し、マップの中心を設定しました。ポイントとズームレベル。ここのキーは独自の Amap API 開発キーに置き換える必要があります。

map.php を保存して開くと、単純な地図ページが表示されます。

次に、軌跡追跡機能を追加します。まず、トラック追跡に必要なスタイルとスクリプトを HTML の head タグに導入する必要があります。 map.php のヘッダー コードを次のように変更します。

<!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>

上記のコードでは、socket.io.js を導入し、WebSocket 接続を作成しました。サーバーからsocket.onメソッドを通じて送信されたリアルタイムの位置データをリッスンし、地図上にマーカーを追加します。

次に、リアルタイムの位置データをサーバー側にプッシュする必要があります。新しい php ファイルを作成し、server.php という名前を付け、次のコードを追加します。

<?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;
}
?>

上記のコードでは、ソケット サーバーを作成し、while ループでクライアントからの接続を受信します。 getRealtimeLocation メソッドを呼び出してリアルタイムの位置データを取得し、そのデータをクライアントに送信します。

server.php を保存して実行します。

これで、ブラウザで map.php ページを開くことができます。地図が表示され、ランダムに生成されたマーカー ポイントがリアルタイムで地図上に表示され、オブジェクトのリアルタイムの位置が示されます。 。必要に応じて getRealtimeLocation メソッドを変更して、実際の位置データを取得できます。

上記の手順により、PHP と Amap API を使用して地図のリアルタイム追跡機能を作成することができました。リアルタイム データ表示の追加、コード ロジックの最適化など、独自のニーズに応じて変更および拡張できます。この記事がお役に立てば幸いです!

以上がPHP と Amap API を使用して、地図のリアルタイム トラック追跡を作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。