This version of the page http://mapia.ua/api_docs.html (0.0.0.0) stored by archive.org.ua. It represents a snapshot of the page as of 2009-04-27. The original page over time could change.
Документация MapiaAPI

Документация API Mapia¶

Для того чтобы посетители вашего сайта смогли увидеть карту на вашей странице у них должен быть установлен Flash Player 9.0.115 и выше, а также они должны пользоваться следующими браузерами:

  • Opera 9 и выше
  • FireFox 2 и выше
  • Internet Explorer 6 и выше
  • Safari 3 и выше
  • Google Chrome

Установка¶

Для того, чтоб пользоваться MapiaAPI, необходимо получить ключ по адресу: http://mapia.ua/apikeys/new
В поле хост нужно ввести хост сайта на котором вы хотите использовать API. Для хостов localhost и 127.0.0.1 получать ключ не обязательно.
После получения ключа достаточно подключить в документ скрипт:

<script src="http://mapia.com.ua/api/0.9.0/mapiaapi.js?apikey=ваш_ключ"></script>

Простейший пример использования MapiaAPI

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" style="height:100%;width:100%;margin:0;padding:0;">
    <head>

        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
        <title>Mapia API</title>
        <script src="http://mapia.ua/api/0.9.0/mapiaapi.js?apikey=eea04089860b6e9ed9b6af0fd25591dc" type="text/javascript"></script>
        <script>
          var mapia = new Mapia("map");
        </script>

    </head>

    <body style="margin:0;padding:0;height:100%;width:100%;overflow:hidden;">
      <span id="map"></span>
    </body>
</html>

Конструктор¶

Mapia(elementId, options)

elementId - DomID элемента, который будет заменен на Flash-объект. Флеш-объекту будут установлины заначения with и height 100%, это значит что размер и позиция карты задается размером и позицией контейнера в котором находиться elementId. Пример

options - параметр типа Object с такими аттрибутами:
  • zoom - начальный уровень приближения карты. Число от 6(далеко) до 18(близко)
  • center - точка в которую будет цетрирована карта. Это может быть либо объект с аттрибутами lat, lon - где lat и lon - это широта и долгота соответственно; либо строка c почтовым адресом.
  • lang - язык на котором будут отображаться названия на карте (доступные варианты "ru" и "ua")
  • wmode - параметр wmode будет установлен флеш объекту при вставлении в документ

Пример 1.

var map = new Mapia('mapia', {center:'площадь Победы 1', zoom:15})

Пример 2.

var map = new Mapia('mapia', {center:{lat:50.45759, lon:30.38898}, zoom:15})

Методы¶

getCenter

Возвращает координаты центра карты в объекте {lat:... , lon:...}. Этот метод вернет null, если карта еще не инитиализирована

setCenter(latlonOrString)

Задает координаты карты. Как и в конструкторе - это может быть latlon объект или строка с адресом.

setCity(cityTitle)

Устанавливает город в контексте которого будет осуществляться поиск адресов для установки маркера или центрирования карты

getZoom

Возвращает зум карты

setZoom(number)

Задает зум карты. Возможные значения - от 6 до 18.

addMarker(markerId, latlonOrString, popupData)

Устанавливает маркер с идентификатором markerId в место у казаное координатами или адресом во втором параметре. Если такой идентификатор уже был использован другим маркером, маркер не добавится. Объект popupData содерит данные, которые должен отображать попап, может содержать следующие аттрибуты:

  • title - заголовок. Отображается в подсказке при наведении на маркер. (Обязательное поле)
  • icon_url - url иконки маркера. Если иконка находится не на mapia.ua, то адресс должен быть указан полностью, и на сервере с которого загружается иконка, должен быть файл /crossdomain.xml, разрешающий доступ домену mapia.ua (Обязательное поле)
  • nopopup - true|false. Установите true если не хотите чтоб отображался попап при клике на маркер.
  • custom_content - url *.swf файла, который является Flex-модулем, который будет подгружен и отображен в попапе. Если не указан, то будет использован стандартный модуль. Подробнее о создании модулей содеримого попапа ниже.

Все остальные поля будут переданы в модуль, отображающий содержимое попапа. Для стандартного модуля можно передавать такие поля:

  • title - Отображается большими буквами.
  • category_name - Отображается в попапе над заголовком.
  • logo - url логотипа, картинка 100x100.
  • address - адрес.
  • phone - телефон.
  • url - адрес веб-сайта. Протокол в url должен быть указан обязательно. Например: http://example.com
  • note - текст, который отображается в попапе под адресом, телефоном, е-мейлом.
  • description - текст в попапе.

Внимание!

Есть 3 распространенные ошибки, при добавлении маркера:

  1. не указан icon_url, или указан относительный урл, который интерпритируется относительно http://mapia.com.ua/, а не относительно урла страницы, в которую включена карта
  2. указан не уникальный идентификатор маркера
  3. На сервере, с которого скачивается иконка для маркера, не лежит файл crossdomain.xml

    Возможное решение проблемы: иконки для маркеров разместить на своем сервере, и
    в корень положить файл crossdomain.xml например такого содержания:

    
    <?xml version="1.0"?>
    <cross-domain-policy>
    
      <site-control permitted-cross-domain-policies="master-only"/>
      <allow-access-from domain="*" />
    </cross-domain-policy>
      

    Пример всегда можно посмотреть здесь: http://mapia.ua/crossdomain.xml

    Это относится только к иконкам маркера, и не относиться к логотипам.

removeMarker(markerId)

Удаляет маркер с указаным идентификатором.

События¶

На любом экземпляре класса Mapia можно подписываться на события. В обработчик события будет передан аргумент event в котором поле target - это экземпляр класса Mapia, и type - произошедшее событие. Остальные поля в зависят от произошедшего события.

Пример использования событий¶

var i = 0;
var mapia = new Mapia('mapia');
mapia.addEventListener('mapClick', function(event){
  event.target.addMarker((i++).toString(), event.loc, {title:i.toString(), icon_url:'http://example.com/icons/'+i.toString()+'.png'})
});

initialized

Происходит, когда флеш-объект Mapia создан, загружен, и готов выполнять команды от Mapia API. Все методы экземпляра класса Mapia, вызваные до этого события, складываются в очередь, и выполняются непосредственно перед этим событием.

zoomChanged

Происходит когда изменено значение zoom. Параметр event содержит дополнительное поле zoom

centerChanged

Происходит когда изменен центр карты. Параметр event содержит дополнительное поле center

mapClick

Происходит когда пользователь кликает мышкой по карте. Параметр event содержит дополнительное поле loc - точка на карте в которую кликнул пользователь

markerClick

Происходит когда пользователь кликает на маркере. Параметр event содержит дополнительные поля:

  • markerId - идентификатор маркера
  • loc - долгота и широта маркера (lat, lon)
  • popupData - даные для попапа маркера

geocodeSuccess, geocodeFailure

Когда в методах setCenter и addMarker используется строка вместо LatLon объекта, то для этой строки будет отправлен на сервер поисковый запрос. Если адрес найден, то произойдет geocodeSuccess, в противном случае - geocodeFailure.

Создание модуля, отображающего содержимое попапа.¶

Модуль должен имплементировать интерфейс com.mapia.IPopupContent. IPopupContent.swc

Вот этот интерфейс:

public interface IPopupContent
{
  function get popupData():Object;
  function set popupData(value:Object):void;
}

Пример простого модуля, которому можно указать цвет фона и цвет текста.

<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" implements="ua.mapia.IPopupContent">
    <mx:Script>

        <![CDATA[
            private var _popupData:Object

            [Bindable]
            public function get popupData():Object
            {
                return _popupData;
            }

            public function set popupData(value:Object):void
            {
                _popupData = value;
            }
        ]]>
    </mx:Script>
    <mx:Box backgroundColor="{popupData.bgColor}">
        <mx:Label text="{popupData.title}" color="{popupData.color}" />
    </mx:Box>
</mx:Module>

Подробнее о том как создавать и компилировать Flex-модули можно почитать здесь

Вы можете оптимизировать ваш модуль для использования его только в приложнии Mapia , вырезав из него все те компоненты, которые уже есть в Mapia.swf (размер модуля может уменьшиться до 30k). Для этого при компиляции используйте аргумент -load-externs, с нашим report.xml