Утилиты
Расчет расстояния между двумя географическими точками
Возвращает расстояние между двумя заданными точками (в метрах).
DG.Utils.getDistance(geoPoint1, geoPoint2)Параметры:
Имя | Тип | Обязательный | Описание |
---|---|---|---|
geoPoint1 | DG.GeoPoint | Да | Первая точка |
geoPoint2 | DG.GeoPoint | Да | Вторая точка |
Возвращает:
Тип | Описание |
---|---|
Number | Расстояние между заданными точками, в метрах |
Пример использования:
var kiev = new DG.GeoPoint(30.523333, 50.450001);
var moscow = new DG.GeoPoint(37.617634, 55.755787);
var distance = DG.Utils.getDistance(kiev, moscow);
Метод getAdaptiveIcon()
Метод getAdaptiveIcon() создает иконку типа DG.Icon наиболее подходящую под данный тип экрана. В качестве параметра, функция принимает объект, атрибутами которого являются необходимые данные для создания иконки как для компьютера так и для мобильного устройства.
Первым атрибутом входящего объекта является массив "desktop", который содержит 4 значения: url
, width
, height
, calculateOffset
.
Значения массива:
Имя | Тип | Обязательный | Описание |
---|---|---|---|
url | Number | Да | Адрес картинки. |
width | Number | Да | Точная ширина картинки в пикселях. |
height | Number | Да | Точная высота картинки в пикселях. |
calculateOffset | Function | Нет | Функция аналогична функции calculateOffset, описываемая в классе DG.Icon |
Пример массива "desktop":
desktop: ['desktop-standard.png', 27, 27, function() { return new DG.Point(-14, -14)}]
Вторым атрибутом входящего объекта, является массив "mobile", который предназначен для создания иконки под мобильные устройства. Массив "mobile" подобен массиву "desktop" но имеет следующие правила:
- в url иконки необходимо вставить тег {density}, который будет автоматически заменен на одно из следующих значений: ldpi, mdpi, hdpi, xhdpi (в зависимости от плотности экрана устройства).
- значения width и height должны содержать значения ширины и высоты иконки под mdpi-устройство(эталона). Все последующие размеры иконок будут вычислены опираясь на это значение.
Пример массива "mobile":
mobile: ['{density}-standard.png',34, 34]
Правила создания иконок под мобильные устройства
Экраны мобильных устройств условно разделены на 4 группы: ldpi, mdpi, hdpi, xhdpi. Иконки под разные мобильные экраны, необходимо готовить в следующих пропорциях: 0.75/1/1.5/2.
То есть, если Вы создали иконку 100х100, то ldpi-иконка будет иметь размер 75х75, mdpi-иконка 100х100, hdpi-иконка 150х150, а xhdpi-иконка будет иметь размер 200х200.
Пример:
- ldpi: 24 × 24 для экранов низкой плотности (т.е. × 0,75);
- mdpi: 32 × 32 для экранов средней плотности (наш базовый 1 × 1 );
- hdpi: 48 × 48 для экранов с высокой плотностью (× 1,5);
- xhdpi: 64 × 64 для экранов очень высокой плотности (× 2,0).
Полный пример инициализации функции getAdaptiveIcon()
DG.Utils.getAdaptiveIcon({
desktop: ['desktop-standard.png',27, 27],
mobile: ['{density}-standard.png',34, 34]
});
Ниже дан пример скрипта создания маркера, использующего функцию getAdaptiveIcon для создания иконки маркера, подстраивающегося под размер экрана устройства пользователя:
// Создаем обработчик загрузки страницы:
DG.autoload(function() {
// Создаем объект карты, связанный с контейнером:
var myMap = new DG.Map('myMapId');
// Устанавливаем центр карты, и коэффициент масштабирования:
myMap.setCenter(new DG.GeoPoint(82.927810142519,55.028936234826), 15);
// Добавляем элемент управления коэффициентом масштабирования:
myMap.controls.add(new DG.Controls.Zoom());
// Создадим адаптивную иконку для разных девайсов
var myAdaptiveIcon = DG.Utils.getAdaptiveIcon({
desktop: ['images/desktop-standard.png',27, 27],
mobile: ['images/{density}-standard.png',34, 34]
});
// Создаем маркер:
var marker = new DG.Markers.MarkerWithBalloon({
geoPoint: point,
icon: myAdaptiveIcon,
balloonOptions: {
hasOwnBalloon: false,
shouldHideIcon: false,
adjustMapCenterToBalloon: true
}
});
// Добавить маркер на карту:
myMap.markers.add(marker);
});
Открыть пример в новом окне