
Способностью отслеживать активы для таких услуг, как доставка еды и такси, сложно управлять, потому что показывать точное местоположение довольно болезненно. Местоположение водителя необходимо постоянно публиковать и отображать на экране клиента.
И все разработчики знают, что выполнение любой задачи «в реальном времени» - непростая задача, будь то чат в реальном времени, уведомления в реальном времени, отслеживание в реальном времени.
Есть определенные шаги, которые сделают это проще !!
Шаг 1. Получите местоположение водителя с помощью геолокации HTML.
Шаг 2. Опубликуйте местоположение с помощью библиотеки PubNub JavaScript.
Шаг 3. Получите опубликованное местоположение на странице клиента с помощью PubNub.
Шаг 1. Получение местонахождения водителя
function getLocation(){
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(successHandler,errorHandler,{maximumAge: 50000, timeout: 20000, enableHighAccuracy: true});
} else {
alert("Geolocation is not supported by your browser.");
}
}
Здесь мы использовали службу определения местоположения по умолчанию в браузере. Функция getCurrentPosition принимает аргументы, которые полезны для обработки ответа. Для успешного доступа GPS / чтения местоположения используется (successHandler), а если мы не можем получить местоположение браузера, используется (errorHandler).
function successHandler(response){
window.latitude = response.coords.latitude;
window.longitude = response.coords.longitude;
}
function errorHandler(error){
console.log(error);
}
Обработчик успеха получает один аргумент, содержащий данные ответа. Все данные ответа будут такими, как указано ниже.

То же самое и с функцией обработчика ошибок. Он получает аргумент, содержащий данные об ошибке.

Шаг 2. Опубликуйте местоположение драйвера с помощью PubNub
PubNub предоставляет возможность публиковать данные и подписываться на них в режиме реального времени. Эта функция возможна с использованием node / socket.io или любого стороннего пакета, который предоставляет возможность публикации данных в реальном времени без обновления страницы.
Включите jQuery и библиотеку Pubnub
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.js"></script> <script src="https://cdn.pubnub.com/sdk/javascript/pubnub.4.19.0.js"></script>
Следующие шаги - опубликовать данные о широте и долготе, которые мы получили от getCurrentPosition. Чтобы опубликовать какие-либо данные, нам нужно создать один канал и объект PubNub с ключами, как показано.
window.latitude = '';
window.longitude = '';
var myChannel = "my-channel";
var pubnub = new PubNub({
publishKey: 'pub-c-************************************',
subscribeKey: 'sub-c-************************************'
});
setInterval(function() {
pubnub.publish({channel:myChannel, message:reloadLocation()});
}, 10000);
function reloadLocation(){
getLocation();
return {latitude:window.latitude, longitude:window.longitude};
}
Шаг 3. Считайте местонахождение водителя с помощью PubNub (на странице отслеживания клиентов)
window.latitude = '';
window.longitude = '';
var myChannel = 'my-channel';
var pubnub = new PubNub({
publishKey : 'pub-c-************************************',
subscribeKey : 'sub-c-************************************'
});
pubnub.subscribe({
channels: [myChannel]
})
pubnub.addListener({message:reloadLocation});
function reloadLocation(response){
window.latitude = response.message.latitude;
window.longitude = response.message.longitude;
refreshMap();
}
function refreshMap(){
var myLocation = {lat: window.latitude, lng: window.longitude};
if(map == ''){
map = new google.maps.Map(document.getElementById('map'), {
center: myLocation,
zoom: 16
});
marker = new google.maps.Marker({
position: myLocation,
map: map
});
marker.setMap(map);
} else {
marker.setPosition(new google.maps.LatLng(window.latitude, window.longitude));
}
map.setCenter(marker.getPosition());
}
Я использовал Google Map API, чтобы показать текущее местоположение на карте.
Кредит и любезность https://www.pubnub.com/blog/javascript-mapping-javascript-tracking/
Кодовая ссылка Счастливого кодирования !!