>  기사  >  백엔드 개발  >  PHP 및 Amap API를 사용하여 지도의 실시간 트랙 추적 생성

PHP 및 Amap API를 사용하여 지도의 실시간 트랙 추적 생성

WBOY
WBOY원래의
2023-07-29 11:06:301478검색

PHP 및 Amap API를 사용하여 지도의 실시간 추적 만들기

기술의 발전과 지리적 위치 정보에 대한 사람들의 수요가 증가함에 따라 지도는 우리 삶에 없어서는 안 될 부분이 되었습니다. 실시간 궤적 추적 기능은 물류, 교통관리 등 다양한 분야에서 널리 활용되고 있다. 이 기사에서는 PHP와 Amap API를 사용하여 지도에서 실시간 트랙 추적 기능을 만드는 방법을 소개합니다.

시작하기 전에 필요한 도구와 환경을 준비해야 합니다. 먼저 Amap Map API용 개발 키를 얻으려면 Amap 개발자 계정이 필요합니다. 둘째, PHP와 아파치 서버 등 관련 운영 환경을 설치해야 합니다.

먼저 기본 지도 페이지를 만들어 보겠습니다. 새 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>

위 코드에서는 소켓.io.js를 도입하고 웹소켓 연결을 생성했습니다. 소켓.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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.