БД mssql
Но не суть.
Согласен, что ответ далек от идеала, но что есть, то есть.
В общем получилось вроде все, выглядит как-то так:
function getAlarms() {
$.ajax({
type: "GET",
url: url,
dataType: 'json',
headers: {"Authorization": token},
cache: false,
success: function (data) {
var usersArray = [];
var locationsArray = [];
var usersIdArray = [];
$.each(data.data, function(index, e) {
locationsArray.push({
userId: e.user.id,
userName: e.user.username,
userPhone: e.user.phone,
lat: e.lat,
lon: e.lon
});
if($.inArray(e.user.id, usersIdArray) == -1) {
usersIdArray.push(e.user.id);
usersArray.push({
id: e.user.id,
name: e.user.username,
phone: e.user.phone,
color: getRandomColor()
});
}
});
console.log(usersIdArray);
console.log(usersArray);
console.log(locationsArray);
createTable(usersArray);
showOnMap(locationsArray, usersArray);
},
error: function (e) {
console.log("Error: " + e);
}
});
}
function showOnMap(locationsArray, usersArray) {
var myMap = new ymaps.Map('jmap', {
center: [56.838011, 60.597465], // ekb
zoom: 12
});
$.each(locationsArray, function(i, e){
var color = getColor(usersArray, e.userId);
console.log(color);
var myPlace = new ymaps.Placemark([e.lat, e.lon], {
balloonContent: e.userName + " " + e.userPhone
}, {
preset: 'islands#blackCircleDotIcon',
iconColor: color
});
myMap.geoObjects.add(myPlace);
});
}
function createTable(usersArray) {
var table = $('<table id="users"/>')
var rows = usersArray.length;
for (var i = 0; i < rows; i++) {
var row = $('<tr style=background-color:' + usersArray[i].color + '/>')
var cell = $('<td/>')
cell.html(usersArray[i].id);
row.append(cell)
var cell = $('<td/>')
cell.html(usersArray[i].name);
row.append(cell)
var cell = $('<td/>')
cell.html(usersArray[i].phone);
row.append(cell)
table.append(row)
}
table.appendTo('#table');
}
function getColor(usersArray, userId) {
var color;
$.each(usersArray, function(i, e){
if(e.id == userId) {
color = e.color;
return false;
}
});
return color;
}
function getRandomColor() {
var letters = '0123456789ABCDEF';
var color = '#';
for (var i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
$(document).ready(function() {
ymaps.ready(getAlarms);
});