Для того чтобы посетители вашего сайта смогли увидеть карту на вашей странице у них должен быть установлен Flash Player 9.0.115 и выше, а также они должны пользоваться следующими браузерами:
Для того, чтоб пользоваться 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>
<!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
будет установлен флеш объекту при вставлении в документvar map = new Mapia('mapia', {center:'площадь Победы 1', zoom:15})
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 распространенные ошибки, при добавлении маркера:
icon_url
, или указан относительный урл, который интерпритируется относительно http://mapia.com.ua/
, а не относительно урла страницы, в которую включена картаВозможное решение проблемы: иконки для маркеров разместить на своем сервере, и
в корень положить файл 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
содержит дополнительные поля:
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