File: /var/www/html/punjabcabs/resources/views/admin/map/index.blade.php
@extends('admin.layout.base')
@section('title', 'Map View ')
@section('content')
<div class="content-area py-1">
<div class="container-fluid">
<div class="row bg-title">
<div class="col-lg-6 col-md-6 col-sm-6 col-xs-12">
<h4 class="page-title">@lang('admin.member.map_view')</h4>
</div>
<div class="col-lg-6 col-sm-6 col-md-6 col-xs-12">
<ol class="breadcrumb">
<li><a href="{{ route('admin.dashboard') }}">@lang('admin.dashboard')</a></li>
<li class="active">@lang('admin.member.map_view')</li>
</ol>
</div>
</div>
<div class="box box-block bg-white">
<div class="row">
<div class="col-xs-12">
<div id="map"></div>
<div id="legend"><h3>@lang('admin.member.note'): </h3></div>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('styles')
<style type="text/css">
#map {
height: 100%;
min-height: 500px;
}
#legend {
font-family: Arial, sans-serif;
background: rgba(255,255,255,0.8);
padding: 10px;
margin: 10px;
border: 2px solid #f3f3f3;
}
#legend h3 {
margin-top: 0;
font-size: 16px;
font-weight: bold;
text-align: center;
}
#legend img {
vertical-align: middle;
margin-bottom: 5px;
}
</style>
@endsection
@section('scripts')
<script>
var map;
var users;
var providers;
var ajaxMarkers = [];
var googleMarkers = [];
var mapIcons = {
user: '{{ asset("asset/img/marker-user.png") }}',
active: '{{ asset("asset/img/marker-car.png") }}',
riding: '{{ asset("asset/img/marker-car.png") }}',
offline: '{{ asset("asset/img/marker-home.png") }}',
unactivated: '{{ asset("asset/img/marker-plus.png") }}'
}
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 0, lng: 0},
zoom: 2,
minZoom: 1
});
setInterval(ajaxMapData, 3000);
var legend = document.getElementById('legend');
var div = document.createElement('div');
div.innerHTML = '<img src="' + mapIcons['user'] + '"> ' + '@lang("admin.user")';
legend.appendChild(div);
var div = document.createElement('div');
div.innerHTML = '<img src="' + mapIcons['offline'] + '"> ' + '@lang("admin.unavailable_driver")';
legend.appendChild(div);
var div = document.createElement('div');
div.innerHTML = '<img src="' + mapIcons['active'] + '"> ' + '@lang("admin.available_driver")';
legend.appendChild(div);
var div = document.createElement('div');
div.innerHTML = '<img src="' + mapIcons['unactivated'] + '"> ' + '@lang("admin.unactivated_driver")';
legend.appendChild(div);
map.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push(legend);
google.maps.Map.prototype.clearOverlays = function() {
for (var i = 0; i < googleMarkers.length; i++ ) {
googleMarkers[i].setMap(null);
}
googleMarkers.length = 0;
}
}
function ajaxMapData() {
map.clearOverlays();
$.ajax({
url: '/admin/map/ajax',
dataType: "JSON",
headers: {'X-CSRF-TOKEN': window.Laravel.csrfToken },
type: "GET",
success: function(data) {
console.log('Ajax Response', data);
ajaxMarkers = data;
}
});
ajaxMarkers ? ajaxMarkers.forEach(addMarkerToMap) : '';
}
function addMarkerToMap(element, index) {
var lat = parseFloat(element.latitude);
var lng = parseFloat(element.longitude);
marker = new google.maps.Marker({
position: {
lat: lat,
lng: lng
},
id: element.id,
map: map,
title: element.first_name + " " +element.last_name,
icon : mapIcons[element.service ? element.service.status : element.status],
});
googleMarkers.push(marker);
google.maps.event.addListener(marker, 'click', function() {
window.location.href = '/admin/' + element.service ? 'provider' : 'user' + '/' +element.user_id;
});
}
</script>
<script src="//maps.googleapis.com/maps/api/js?key={{ env('GOOGLE_MAP_KEY') }}&libraries=places&callback=initMap" async defer></script>
@endsection