Карты построены на основе библиотеки OpenLayers.
За дополнительной информацией можно обратится к ресурсу http://dev.openlayers.org/apidocs/
Преобразования проекций
Картографическая проекция — математически определенный способ отображения поверхности эллипсоида на плоскости.
Суть проекций связана с тем, что фигуру Земли — эллипсоид (геоид), не развертываемый в плоскость, заменяют на другую фигуру, развёртываемую на плоскость.
При этом с эллипсоида на другую фигуру переносят сетку параллелей и меридианов. Вид этой сетки бывает разный в зависимости от того, какой фигурой заменяется эллипсоид.
Для представления карты во вьюпорте используется проекция широта-долгота, она же EPSG:4326.
Внутреннее представление объектов хранится в проекции "меркатор на сфере", она же EPSG:3857, она же EPSG:900913, она же EPSG:3785.
Метрическая, а не в угловых координатах.
Для корректного отображения географических объектов на карте требуется преобразования между проекциями.
Для этого служат методы transform() объектов LonLat и Bounds.
Пример преобразования из географических координат в координаты карты:
var ll = new OpenLayers.LonLat(31.2, 48.5).transform(map.displayProjection, map.projection);
Пример обратного преобразования:
var ll2 = ll.clone().transform(map.projection, map.displayProjection);
См. также
Map
Конструктор
| Конструктор |
Описание |
MetaMapsOL.Map({DOMElement|String}: HTMLelement, Object: options) |
Создает новую карту внутри данного HTML элемента. HTMLelement - значение атрибута id или DOMElement |
Методы
| Метод |
Возвращаемое значение |
Описание |
setOptions: function(Object: options) |
null |
Изменяет настройки карты |
getLayersByName: function(String: match) |
Array(Layer) |
Получить список слоев с названиями, соответствующих указанным именам |
addLayer: function(Layer: layer) |
null |
Добавить слой на карту |
addLayers: function(Array(Layer): layers) |
null |
Добавить несколько слоёв на карту |
removeLayer: function(Layer: layer) |
null |
Удаляет слой с карты |
getNumLayers: function() |
Int |
Количество слоев карты |
addControl: function(Control: control, Pixel: ?px) |
null |
Добавить элемент управления на карту |
addControls: function(Array(Control): controls, Array(Pixel): ?pixels) |
null |
Добавить несколько элементов управления на карту |
removeControl: function(Control: control) |
null |
Удалить элемент управления с карты |
addPopup: function(Popup: popup, Boolean: exclusive) |
null |
Добавляет попап на карту. Если exclusive = true - удаляет другие попапы с карты |
removePopup: function(Popup: popup) |
null |
Удалить попап с карты |
getSize: function() |
Size |
Возвращает размер карты в пикселях |
updateSize: function() |
null |
Эта функция должна быть вызвана любым внешним кодом, который динамически изменяет размер контейнера карты (потому что Mozilla не позволяет поймать "onresize" для элемента) |
getCenter: function() |
LonLat |
Возвращает центр карты |
getZoom: function() |
Integer |
Возвращает зум карты |
pan: function(Integer: dx, Integer: dy, Object: options) |
null |
Позволяет переместить карту на указанное кол-во пикселей.
options = { animate: true, dragging:false}
|
panTo: function(Lonlat:lonlat) |
null |
Позволяет переместить карту к указанным lonlat |
setCenter: function(LonLat: lonlat, Integer: zoom, Boolean: dragging, Boolean: forceZoomChange) |
null |
Устанавливает центр карты (и, опционально, масштаб). dragging - запускает событие movestart/end. forceZoomChange - запускает событие zoomend |
getMaxExtent: function() |
Bounds |
Возвращает максимальные границы карты |
getNumZoomLevels: function() |
Integer |
Возвращает кол-во уровней зума |
getExtent: function() |
Bounds |
Возвращает lon/lat границы текущего вьюпорта |
getZoomForExtent: function(Bounds: bounds, Boolean: closest) |
Integer |
Возвращает уровень зума для заданных границ. Если closest = true - ищет уровень зума, наиболее близко соответствующий указанным границам |
zoomTo: function(Integer: zoom) |
null |
Установить указанный уровень зума |
zoomIn: function() |
null |
Увеличить уровень зума |
zoomOut: function() |
null |
Уменьшить уровень зума |
zoomToExtent: function(Bounds: bounds, Boolean: closest) |
null |
Приблизить к указанным границам, центрировать |
zoomToMaxExtent: function() |
null |
Установить уровень зума, который впишет maxExtent |
Вверх
Свойства
| Свойство |
Тип |
Описание |
events |
Events |
Объект events, который обрабатывает все события карты |
div |
DOMElement |
Элемент, который содержит карту |
layers |
Array(Layer) |
Упорядоченный список слоев в карты |
units |
String |
Единицы измерения карты (‘degrees’ или ‘dd’, ‘m’, ‘ft’, ‘km’, ‘mi’, ‘inches’). по умолчанию ‘m’ |
restrictedExtent |
Bounds |
Границы навигации карты |
fallThrough |
Boolean |
Должна ли карта позволять событиям "проходить" сквозь неё. По умолчанию true |
eventListeners |
Object |
Если передан в качестве опции конструктора, eventListener`ы будут зарегистрированы с помощью OpenLayers.Events.on |
controls |
Array(Control) |
Массив элементов управления. Если передан в качестве опции конструктора, элементы управления будут добавлены на карту |
enableKeyboard |
Boolean |
Если параметр равен true - картой можно управлять при помощи клавиатуры. Стрелками осуществляется перемещение карты, +/- управляет зумом. По умолчанию false |
zoomWheelEnabled |
Boolean |
Должна ли карта менять масштаб при прокрутке колеса мыши. По умолчанию true |
panEnabled |
Boolean |
Должна ли карта позволять перемещение мышью. По умолчанию true |
Вверх
Элементы управления
Permalink
Элемент управления Permalink добавляет на карту ссылку с текущим положением и типом карты. По умолчанию отображается в нижнем правом углу карты. Ссылка автоматически обновляется при смене зума, перемещении смене типа карты (карта, спутник)
Конструктор
| Конструктор |
Описание |
OpenLayers.Control.Permalink() |
Создает новый элемент управления Permalink |
Вверх
PanZoomBar
Элемент управления PanZoomBar добавляет на карту компас и шкалу зума
Конструктор
| Конструктор |
Описание |
MetaMapsOL.Control.PanZoomBar() |
Создает новый элемент управления PanZoomBar |
Вверх
PanZoom
Элемент управления PanZoom добавляет на карту стрелки перемещения карты и кнопки изменения зума
Конструктор
| Конструктор |
Описание |
MetaMapsOL.Control.PanZoom() |
Создает новый элемент управления PanZoom |
Вверх
ScaleLine
Элемент управления ScaleLine добавляет на карту линейку масштаба
Конструктор
| Конструктор |
Описание |
OpenLayers.Control.ScaleLine() |
Создает новый элемент управления ScaleLine |
Вверх
LayerSwitcher
Элемент управления LayerSwitcher предназначен для переключения типа карты (карта, спутник) и управления слоями наложения
Конструктор
| Конструктор |
Описание |
MetaMapsOL.Control.LayerSwitcher(Object: options) |
Создает новый элемент управления LayerSwitcher |
Свойства
| Свойство |
Тип |
Описание |
overlaysList |
String |
Текстовый ярлык для слоёв наложения. Показывается только в случае, если есть хотя бы один слой наложения |
Вверх
OverviewMap
Элемент управления OverviewMap добавляет на карту окно просмотра карты с более крупным масштабом
Конструктор
| Конструктор |
Описание |
MetaMapsOL.Control.OverviewMap(Object: options) |
Создает новый элемент управления OverviewMap |
Свойства
| Свойство |
Тип |
Описание |
size |
Size |
Размер контейнера |
maxRatio |
Float |
Максимальный коэффициент уменьшения основной карты к карте предпросмотра |
minRatio |
Float |
Минимальный коэффициент уменьшения основной карты к карте предпросмотра |
maximized |
Boolean |
Стартовать открытым? |
Вверх
Geocoder
Класс Geocoder служит для получения географических координат объекта по его адресу.
Конструктор
| Конструктор |
Описание |
MetaMapsOL.geoCoder() |
Создает новый объект Geocoder |
Методы
| Метод |
Возвращаемое значение |
Описание |
search: function(String: addres, Function: func) |
Object |
Ищет объекты по запросу addres. По окончанию поиска вызывает функцию func и передаёт ей в качестве первого параметра результаты поиска. |
point: function(String: addres, Function: func) |
LonLat |
Обёртка для метода search, которая передаёт в функцию обратного вызова первый найденный объект, преобразованный к LonLat. В случае, если не найдено ни одного объекта, возвращает false |
Структура объекта результатов поиска:
Object = {
array: [
0: {
item.type: "city", // Тип объекта. Принимает значения: addr, city, street, railway или road.
item.detailed_type: "city1", // Важность объекта в пределах его родителя (карты страны или города) city[1..3], street[1..6]
scale: 12, // Оптимальный масштаб для позиционирования на данный объект
title: "г. Харьков", // Название объекта
subtitle: "Харьковская обл., Харьковский горсовет", // Дополняет название
match: "exact", // Совпадение со строкой поиска. Принимает значения: exact, near, normal, secondary или approximate
ll: { // Координаты центра объекта
x: 36.2696301202, // X-координата (lon)
y: 49.9822624738 // Y-координата (lat)
},
ll1: { // Присутствует у не точечных объектов (street или road). Верхний левый угол
x: {Float}, // X-координата (lon)
y: {Float} // Y-координата (lat)
},
ll2: { // Присутствует у не точечных объектов (street или road). Нижний правый угол
x: {Float}, // X-координата (lon)
y: {Float} // Y-координата (lat)
},
},
1: ...
],
count: 6 // Количество результатов
}
Расшифровка значений поля item.type:
- addr - адрес. Например, дом или площадь
- city - населённый пункт
- street - улица, переулок, въезд...
- railway - железнодорожная станция
- road - дороги между населёнными пунктами
Расшифровка значений поля match:
-
exact - точное совпадение, однозначно можно позиционироваться на данный результат. Как правило 1-2 первых в выдаче.
-
near - бывает в случае поиска по адресам, если нет ни одного exact'a. Точного номера дома не существует у нас в базе, предлагает наиболее
близкий к указанному. Например, искали "Ленина 89А" Его не существует и будет предложен "Ленина 87"
-
normal - обычные более-менее равные между собой результаты поиска.
Например, по запросу "Донецк Ленина" может найти и "переулок Ленина" и "улицу Ленина" и "проспект Ленина". Ни один из объектов не имеет сильного отрыва от
других в весе, все результаты будут normal. В любом случае идет ранжирование по приоритетности улиц (проспекты первые и т.д.).
-
secondary - попавшие в выдачу объекты, имеющие очень малый (или искусственно задавленный) вес. Как правило - ЖД станции, названия
трасс и т.д. в случае если есть совпадения и среди улиц (которые будут выше в выдаче).
-
approximate - очень удаленные совпадения (в основном города). Например, по запросу "Киев улица Путина 123В" не найдет ни улицы, ни дома,
единственным вариантом будет сам город Киев, который и получит этот статус.
Слои наложения
Markers.Movable
Конструктор
| Конструктор |
Описание |
MetaMapsOL.Layer.Markers.Movable(String: name, Object: options, String: movableClassName, String: selectableClassName, String: activeClassName) |
Наследует класс OpenLayers.Layer.Markers. Создает новый объект слоя Markers.Movable.
movableClassName - класс элемента DOM для маркеров, которые можно двигать
selectableClassName - класс элемента DOM для маркеров, которые можно выделять
activeClassName - класс элемента DOM для выделенного маркера
|
Методы
| Метод |
Возвращаемое значение |
Описание |
activate: function() |
null |
Активирует возможность выделения и перемещения маркеров на слое |
deactivate: function() |
null |
Деактивирует возможность выделения и перемещения маркеров на слое |
onDragStart: function(Event: evt, <Marker>: marker) |
Boolean |
Функция обратного вызова. Вызывается перед началом перетаскивания маркера. Если результат функции равен false - перетаскивание не происходит |
onDragEnd: function(Event: evt, <Marker>: marker) |
null |
Функция обратного вызова. Вызывается в конце перетаскивания маркера |
onSelect: function(Event: evt, <Marker>: marker) |
Boolean |
Функция обратного вызова. Вызывается перед выделением маркера. Если результат функции равен false - выделение не происходит |
onUnselect: function(Event: evt, <Marker>: marker) |
Boolean |
Функция обратного вызова. Вызывается перед снятием выделения с маркера. Если результат функции равен false - снятие выделения не происходит |
selectMarker: function(<Marker>: marker) |
Boolean |
Выделяет переданный маркер. Если удалось - возвращает true |
unselectMarker: function(<Marker>: marker) |
Boolean |
Снимает выделение с переданного маркера. Если удалось - возвращает true |
Вверх
Marker
Объект маркера. Добавляется на слой наложения.
Конструктор
| Конструктор |
Описание |
MetaMapsOL.Marker(LonLat: lonlat, Icon: icon, Boolean: isSelectable, Boolean: isMovable) |
Создает маркер в позиции lonlat с иконкой icon. Необязательные параметры isSelectable и isMovable по умолчанию равны false |
Методы
| Метод |
Возвращаемое значение |
Описание |
destroy: function() |
null |
Уничтожить маркер |
isDrawn: function() |
Boolean |
Маркер отрисован? |
setMovable: function(Boolean: isMovable) |
null |
Устанавливает, можно ли перемещать маркер |
setSelectable: function(Boolean: isSelectable) |
null |
Устанавливает можно ли выделять маркер |
createPopup: function(Boolean: closeBox) |
null |
Создает попап для маркера. См. свойства. Если параметр closeBox передан и равен true - попап создаётся с кнопкой для его закрытия |
destroyPopup: function() |
null |
Уничтожить попап маркера |
setPopupOpacity: function(Float: opacity) |
null |
Устанавливает прозрачность попапа. Параметр opacity принимает значения от 0 (полностью прозрачен) до 1 (полностью непрозрачен) |
Свойства
| Свойство |
Тип |
Описание |
selected |
Boolean |
Выделен ли маркер? |
popupClass |
<popupClass> |
Класс попапа маркера. По умолчанию MetaMapsOL.Popup.FramedCloud |
popupSize |
Size |
Размер в пикселях по умолчанию для открываемого попапа. Равен 200х200 |
popupContent |
String |
Содержимое для попапа. По умолчанию пусто |
popupOverflow |
null | Sting |
Значение Overflow для попапа. По умолчанию null |
title |
null | Sting |
Текст всплывающей подсказки. По умолчанию null |
Вверх
Icon
Конструктор
| Конструктор |
Описание |
OpenLayers.Icon(url, size, offset) |
Создает иконкy размером size с изображением url. Параметр offset задаёт смещение центра. |
Методы
| Метод |
Возвращаемое значение |
Описание |
isDrawn: function() |
Boolean |
Иконка отрисована? |
Вверх
Popup
Конструктор
| Конструктор |
Описание |
MetaMapsOL.Popup.FramedCloud(String: id, LonLat: lonlat, Size: contentSize, String: contentHTML, Object: anchor, Boolean: closeBox, Function: closeBoxCallback) |
Создает попап в точке lonlat с указателем в точке anchor. Если closeBox равен true
- попап создаётся с кнопкой для его закрытия. closeBoxCallback будет вызвана при клике на closeBox |
Методы
| Метод |
Возвращаемое значение |
Описание |
destroy: function() |
null |
Уничтожить попап |
setSize:function(Size: contentSize) |
null |
Задаёт новый размер в пикселях для содержимого попапа. |
show: function() |
null |
Отрисовывает попап на карте |
updateSize: function() |
null |
Корректирует позицию попапа на карте согласно новым значениям lonlat и anchor |
Свойства
| Свойство |
Тип |
Описание |
contentDisplayClass |
String |
Класс для дива с содержимым попапа. По умолчанию popupContent |
autoSize |
Boolean |
Автоподстройка размера всплывающих окон под содержание |
minSize |
Size |
Минимальный допустимый размер содержимого попапа |
maxSize |
Size |
Максимально допустимый размер содержимого попапа |
panMapIfOutOfView |
Boolean |
При отрисовке попапа сдвигает вьюпорт так, чтобы попап всегда находился внутри вьюпорта |
Вверх
Events
Конструктор
| Конструктор |
Описание |
OpenLayers.Events(Object: object, DOMElement: element, Array(String): eventTypes, Boolean: fallThrough, Object: options) |
Создает объект events.
object - JS объект, к которому этот объект добавляется
element - Дом элемент для прослушивания событий браузера
eventTypes - Массив пользовательских событий
fallThrough - Должны ли события "проходить" сквозь element
options - Дополнительные опции
|
Методы
| Метод |
Возвращаемое значение |
Описание |
destroy: function() |
null |
Уничтожить объект events |
addEventType: function(String: eventName) |
null |
Добавить новый тип события для этого объекта events |
on: function(Object: object) |
null |
Простой метод для регистрации обработчиков с общей областью видимости
Примеры:
events.on({"loadstart", loadStartListener});
events.on({
"loadstart": loadStartListener,
"loadend": loadEndListener,
scope: object
});
|
register: function (String: type, Object: obj, Function: func) |
null |
Зарегистрировать обработчик func для события type в контексте obj |
registerPriority: function (String: type, Object: obj, Function: func) |
null |
То же, что и register(), но ставит обработчик события в начало очереди обработчиков |
un: function(Object: object) |
null |
Простой метод для отмены регистрации обработчиков с общей областью видимости
Примеры:
events.un({"loadstart", loadStartListener});
events.un({
"loadstart": loadStartListener,
"loadend": loadEndListener,
scope: object
});
|
unregister: function (String: type, Object: obj, Function: func) |
null |
Отменяет регистрацию обработчика |
triggerEvent: function (String: type, Event: evt) |
Boolean |
Вызывает указанное событие. Возвращает результат последнего обработчика. |
clearMouseCache: function() |
null |
Очищает информацию о позиции мыши |
Свойства
| Свойство |
Тип |
Описание |
fallThrough |
Boolean |
|
includeXY |
Boolean |
Должно ли .xy свойство автоматически создаваться для событий мыши? |
Вверх
Базовые классы
LonLat
Конструктор
| Конструктор |
Описание |
OpenLayers.LonLat(Number: lon, Number: lat) |
Создает новый объект LonLat |
Методы
| Метод |
Возвращаемое значение |
Описание |
toShortString:function() |
String |
Сокращенное String представление LonLat объекта |
clone:function() |
LonLat |
Возвращает новый объект LonLat с такими же значениями lon и lat |
add:function(Number: lon, Number: lat) |
LonLat |
Новый объект LonLat с добавленными lon и lat |
equals:function(LonLat: ll) |
Boolean |
Проверяет равенство с переданным объектом LonLat |
transform: function(Projection: source, Projection: dest) |
LonLat, инстанс на себя |
Преобразует себя из проекции source в проекцию dest. Если нужен новый LonLat - нужно сначала использовать clone() |
Свойства
| Свойство |
Тип |
Описание |
lon |
Float |
X-координата в единицах карты |
lat |
Float |
Y-координата в единицах карты |
Вверх
Bounds
Конструктор
| Конструктор |
Описание |
OpenLayers.Bounds(Number: left, Number: bottom, Number: right, Number: top) |
Создает новый объект Bounds |
Методы
| Метод |
Возвращаемое значение |
Описание |
clone:function() |
Bounds |
Возвращает новый объект Bounds с такими же значениями left, bottom, right, и top |
toString:function() |
String |
Строковое представление границ |
toArray: function(Boolean: reverseAxisOrder) |
Array |
Возвращает значение объекта, приведённое к типу Array |
toGeometry: function() |
Geometry.Polygon |
Создаёт новый многоугольник с координатами этих границ |
getWidth:function() |
Float |
Возвращает ширину границ |
getHeight:function() |
Float |
Возвращает высоту границ |
getSize:function() |
Size |
Возвращает размеры границ |
getCenterPixel:function() |
Pixel |
Возвращает центральный пиксел границ |
getCenterLonLat:function() |
LonLat |
Возвращает центральную точку границ |
add:function(Float: x, Float: y) |
Bounds |
Возвращает новый объект границ, координаты которого смещены на значения x и y соответственно |
extend:function(Object: object) |
null |
Расширяет объект границ, чтобы он содержал переданный в параметре объект (может быть LonLat, Point, или Bounds) |
containsLonLat:function(LonLat: ll, Boolean: inclusive) |
Boolean |
Переданий LonLat находится в пределах границ? Параметр inclusive определяет нужно ли учитывать в вычислениях границы объекта. По умолчанию равен true |
containsPixel:function(Pixel: px, Boolean: inclusive) |
Boolean |
То же, что containsLonLat(), но для пикселя |
contains:function(Float: x, Float: y, Boolean: inclusive) |
Boolean |
То же, что containsLonLat(), но отдельных x и y |
intersectsBounds:function(Bounds: bounds, Boolean: inclusive) |
Boolean |
Определяет, пересекает ли переданный объект границ текущий объект границ |
containsBounds:function(Bounds: bounds, Boolean: partial, Boolean: inclusive) |
Boolean |
Определяет, содержит ли переданный объект границ текущий. Если параметр partial равен true - проверяет хотя бы частичное вхождение. По умолчанию равен false |
transform: function(Projection: source, Projection: dest) |
Bounds |
Преобразует себя из проекции source в проекцию dest. Если нужен новый Bounds - нужно сначала использовать clone() |
Вверх
Pixel
Конструктор
| Конструктор |
Описание |
OpenLayers.Pixel(Number: x, Number: y) |
Создает новый объект Pixel |
Методы
| Метод |
Возвращаемое значение |
Описание |
clone:function() |
Pixel |
Возвращает новый объект Pixel с такими же значениями x и y |
equals:function(Pixel: px) |
Boolean |
Проверяет равенство с переданным объектом Pixel |
add:function(Integer: x, Integer: y) |
Pixel |
Новый объект Pixel с добавленными x и y |
offset:function(Pixel: px) |
Pixel |
То же, что и add(), только для пикселя |
Свойства
| Свойство |
Тип |
Описание |
x |
Number |
Х координата |
y |
Number |
Y координата |
Вверх
Size
Конструктор
| Конструктор |
Описание |
OpenLayers.Size(Number: w, Number: h) |
Создает новый объект Size |
Методы
| Метод |
Возвращаемое значение |
Описание |
clone:function() |
Size |
Возвращает новый объект Size с такими же значениями w и h |
equals:function(Size: sz) |
Boolean |
Проверяет равенство с переданным объектом Size |
Свойства
| Свойство |
Тип |
Описание |
w |
Number |
ширина |
h |
Number |
высота |
Вверх