Maison  >  Article  >  développement back-end  >  Utilisez PHP et l'API Amap pour créer un suivi en temps réel de la carte

Utilisez PHP et l'API Amap pour créer un suivi en temps réel de la carte

WBOY
WBOYoriginal
2023-07-29 11:06:301424parcourir

Utilisez PHP et l'API Amap pour créer un suivi en temps réel des cartes

Avec le développement de la technologie et la demande croissante d'informations de localisation géographique, les cartes sont devenues un élément indispensable de nos vies. La fonction de suivi de trajectoire en temps réel a été largement utilisée dans de nombreux domaines, comme la logistique, la gestion du trafic, etc. Cet article explique comment utiliser PHP et l'API Amap pour créer une fonction de suivi de trace en temps réel sur la carte.

Avant de commencer, nous devons préparer certains outils et environnements nécessaires. Tout d'abord, vous avez besoin d'un compte développeur Amap pour obtenir la clé de développement de l'API Amap Map. Deuxièmement, nous devons installer PHP et les environnements d'exploitation associés, tels que le serveur Apache, etc.

Tout d’abord, créons une page de carte de base. Créez un nouveau fichier php, nommez-le map.php et ajoutez le code suivant au fichier :

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

Dans le code ci-dessus, nous avons utilisé AMap.Map pour créer un objet cartographique et définir le point central et le niveau de zoom de la carte. . La clé ici doit être remplacée par votre propre clé de développement API Amap.

Enregistrez et ouvrez map.php, vous verrez une simple page de carte.

Ensuite, nous ajouterons la fonction de suivi de trajectoire. Tout d’abord, vous devez introduire les styles et les scripts requis pour le suivi des pistes dans la balise head du HTML. Modifiez le code d'en-tête de map.php comme suit :

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

Dans le code ci-dessus, nous avons introduit socket.io.js et créé une connexion websocket. Écoutez les données de localisation en temps réel envoyées par le serveur via la méthode socket.on et ajoutez des marqueurs sur la carte.

Ensuite, nous devons transmettre les données de localisation en temps réel côté serveur. Créez un nouveau fichier php, nommez-le server.php et ajoutez le code suivant :

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

Dans le code ci-dessus, nous créons un serveur Socket et recevons les connexions des clients dans une boucle while. Obtenez des données de localisation en temps réel en appelant la méthode getRealtimeLocation et envoyez les données au client.

Enregistrez et exécutez server.php.

Maintenant, vous pouvez ouvrir la page map.php dans le navigateur, vous verrez une carte et des points de repère générés aléatoirement seront affichés sur la carte en temps réel, indiquant l'emplacement en temps réel de l'objet. Vous pouvez modifier la méthode getRealtimeLocation pour obtenir des données de localisation réelles en fonction de vos besoins.

Grâce aux étapes ci-dessus, nous avons réussi à créer la fonction de suivi des traces en temps réel de la carte à l'aide de PHP et de l'API Amap. Vous pouvez le modifier et l'étendre en fonction de vos propres besoins, comme ajouter davantage d'affichage de données en temps réel, optimiser la logique du code, etc. J'espère que cet article vous sera utile !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn