Это делается для обработки информации на стороне ftp-сервера (на host) и визуализации мест обращения к системе Эйдос на карте мира. Картографическая визуализация мест расположения пользователей, запускавших систему «Эйдос»: http://aidos.byethost5.com/map3.php (уникальные IP-адреса, только метки), http://aidos.byethost5.com/map4.php (уникальные IP-адреса, метки с надписями), http://aidos.byethost5.com/map5.php (все IP-адреса, кластеры).
- Код: Выделить всё
<!DOCTYPE html>
<html>
<head>
<?php
$content = file_get_contents("map3_strings.txt");
$content = explode("\r\n",$content);
foreach ($content as $key=>$record) {
$content[$key] = explode(",", $record);
}
?>
<meta charset="utf-8">
<title>AIDOS map</title>
<link href="styles.css" rel="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width, initial-scale = 1.0, user-scalable = no">
<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>
<script type="text/javascript">
var aMap;
ymaps.ready(function(){
aMap = new ymaps.Map("main", {
center: [29.00, 7.00],
zoom: 3.3
});
aMap.container.fitToViewport();
// Создаем геообъект с типом геометрии "Точка".
gObj = new ymaps.GeoObject({
// Описание геометрии.
geometry: {
type: "Point",
coordinates: [<?=$content[0][10];?>, <?=$content[0][11];?>]
},
// Свойства.
properties: {
// Контент метки.
// iconContent: '<?=$content[0][0].", ".$content[0][1];?>',
// hintContent: '<?=$content[0][2];?>'
hintContent: '<?=$content[0][0].", ".$content[0][1];?>: <?=$content[0][2];?>'
}
}, {
// Опции.
// Иконка метки будет растягиваться под размер ее содержимого.
// preset: 'islands#blackStretchyIcon',
preset: 'islands#icon',
});
aMap.geoObjects
.add(gObj)
<?php
for ($i = 1; $i<count($content);$i++){
echo ".add(new ymaps.Placemark([" . $content[$i][10].",".$content[$i][11]."], {";
//echo " iconContent: '".$content[$i][0].", ".$content[$i][1]."',";
//echo " hintContent: '".$content[$i][2]."'}, { preset: 'islands#blackStretchyIcon' }))";
//echo " iconContent: '".$content[$i][0].", ".$content[$i][1]."',";
echo " hintContent: '" . $content[$i][0].", ".$content[$i][1]. ": ".$content[$i][2]."'},
{ preset: 'islands#icon' }))";
}
?>
});
</script>
</head>
<body>
<div id="wrapper">
<div id="main">
</div>
</div>
<script>
</script>
</body>
</html>
- Код: Выделить всё
<?php
$content = file_get_contents("test_strings.txt");
$content = explode("\r\n",$content);
foreach ($content as $key=>$record) {
$content[$key] = explode(",", $record);
}
?>
<!DOCTYPE html>
<html>
<head>
<title>AIDOS map</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&apikey=cd8ea9fa-fe7f-4372-b657-4ebabd18118d" type="text/javascript"></script>
<script type="text/javascript">
ymaps.ready(function () {
var myMap = new ymaps.Map('map', {
center: [0, 0],
zoom: 1,
behaviors: ['default', 'scrollZoom'],
}, {
searchControlProvider: 'yandex#search'
}),
/**
* Создадим кластеризатор, вызвав функцию-конструктор.
* Список всех опций доступен в документации.
* @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Clusterer.xml#constructor-summary
*/
clusterer = new ymaps.Clusterer({
/**
* Через кластеризатор можно указать только стили кластеров,
* стили для меток нужно назначать каждой метке отдельно.
* @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/option.presetStorage.xml
*/
preset: 'islands#invertedVioletClusterIcons',
/**
* Ставим true, если хотим кластеризовать только точки с одинаковыми координатами.
*/
groupByCoordinates: false,
/**
* Опции кластеров указываем в кластеризаторе с префиксом "cluster".
* @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/ClusterPlacemark.xml
*/
clusterDisableClickZoom: true,
clusterHideIconOnBalloonOpen: false,
geoObjectHideIconOnBalloonOpen: false
}),
/**
* Функция возвращает объект, содержащий данные метки.
* Поле данных clusterCaption будет отображено в списке геообъектов в балуне кластера.
* Поле balloonContentBody - источник данных для контента балуна.
* Оба поля поддерживают HTML-разметку.
* Список полей данных, которые используют стандартные макеты содержимого иконки метки
* и балуна геообъектов, можно посмотреть в документации.
* @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/GeoObject.xml
*/
getPointData = function (index) {
return {
balloonContentHeader: '<font size=3><b>Метка №'+index+'</b></font>',
balloonContentBody: '<p>Дата посещения: '+times[index]+'</p><p>Местоположение: '+ips[index]+'</p>',
clusterCaption: 'Метка №<strong>' + index + '</strong>'
};
},
/**
* Функция возвращает объект, содержащий опции метки.
* Все опции, которые поддерживают геообъекты, можно посмотреть в документации.
* @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/GeoObject.xml
*/
getPointOptions = function () {
return {
preset: 'islands#violetIcon',
balloonMaxWidth: 300
};
},
//Массив точек
points = [
<?php
for ($i = 1; $i<count($content);$i++){
if(($content[$i][10]=="" || $content[$i][10]=="Unknown" ) || ($content[$i][11]=="" || $content[$i][11]=="Unknown"))
continue;
echo "[" . $content[$i][10].",".$content[$i][11]."],";
}
?>
],
//Массив дат посещения
times = [
<?php
for ($i = 1; $i<count($content);$i++){
if(($content[$i][10]=="" || $content[$i][10]=="Unknown" ) || ($content[$i][11]=="" || $content[$i][11]=="Unknown"))
continue;
echo '["' . $content[$i][0]." - ".$content[$i][1].'"],';
}
?>
],
//Массив местоположений
ips = [
<?php
for ($i = 1; $i<count($content);$i++){
if(($content[$i][10]=="" || $content[$i][10]=="Unknown" ) || ($content[$i][11]=="" || $content[$i][11]=="Unknown"))
continue;
echo '["' . $content[$i][2].' - '.$content[$i][6].' - '.$content[$i][7].'"],';
}
?>
],
geoObjects = [];
/**
* Данные передаются вторым параметром в конструктор метки, опции - третьим.
* @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Placemark.xml#constructor-summary
*/
for(var i = 0, len = points.length; i < len; i++) {
geoObjects[i] = new ymaps.Placemark(points[i], getPointData(i), getPointOptions());
}
/**
* Можно менять опции кластеризатора после создания.
*/
clusterer.options.set({
gridSize: 80,
clusterDisableClickZoom: true
});
/**
* В кластеризатор можно добавить javascript-массив меток (не геоколлекцию) или одну метку.
* @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Clusterer.xml#add
*/
clusterer.add(geoObjects);
myMap.geoObjects.add(clusterer);
/**
* Спозиционируем карту так, чтобы на ней были видны все объекты.
*/
myMap.setBounds(clusterer.getBounds(), {
checkZoomRange: true
});
});
</script>
<style>
html, body, #map {
width: 100%; height: 100%; padding: 0; margin: 0;
}
a {
color: #04b; /* Цвет ссылки */
text-decoration: none; /* Убираем подчеркивание у ссылок */
}
a:visited {
color: #04b; /* Цвет посещённой ссылки */
}
a:hover {
color: #f50000; /* Цвет ссылки при наведении на нее курсора мыши */
}
</style>
</head>
<body>
<div id="map"></div>
</body>
</html>
А для определения IP-адресов пользователей системы Эйдос используется PHP. Он приведен здесь: http://lc.kubagro.ru/aidos/Presentation ... online.pdf