Пока я работаю дальше над редактором Яндекс.Карт, решил написать небольшую заметку о том, как добавить flash-видео в балун с известных сервисов видео хостинга (YouTube, Яндекс Видео, video.mail.ru и т.д.).
Я рассмотрю два способа:
— добавление HTML-кода в балун используйте метод setBalloonContent();
— использование файла в формате YMapsML.
Рассмотрим первый способ.
Реализация его очень простая.
С начала мы берем пример кода для вывода метки на карту с определенным значком, из стандартных стилей для значков меток Справочнике по программному интерфейсу.
Пример кода:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>API Яндекс.Карт - размещаем flash-видео в балуне</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://api-maps.yandex.ru/1.1/index.xml?key=ACuF2EkBAAAAzahYCgIASLsFm9n8EPvNjaTc8nAWiETKgYcAAAAAAAAAAAC-q61vWtIK3Kzt2yQ9qFaGJGKzXw==" type="text/javascript"></script>
<script type="text/javascript">
// Создание обработчика для события window.onLoad
YMaps.jQuery(function () {
// Создание экземпляра карты и его привязка к созданному контейнеру
map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);
// Установка для карты ее центра и масштаба
map.setCenter(new YMaps.GeoPoint(36.646229,56.601733), 13);
map.addControl(new YMaps.Zoom());
map.addControl(new YMaps.TypeControl());
map.addControl(new YMaps.ToolBar());
var point = new YMaps.GeoPoint(36.646229,56.601733);
var placemark = new YMaps.Placemark(point, {style: "default#cinemaIcon"});
map.addOverlay(placemark);
});
</script>
</head>
<body>
<div id="YMapsID" style="width:800px;height:600px"></div>
</body>
</html> |
В этот код необходимо добавить строку для определения содержимого балуна с помощью метода setBalloonContent().
Содержимым балуна могут быть любые HTML-конструкции, в частности это может быть код для встраивания видео.
Например, на YouTube Вы получили такой код для встраивания видео:
<object width="200" height="175"><param name="movie" value="http://www.youtube.com/v/pDoziw0E5Bk&hl=ru_RU&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/pDoziw0E5Bk&hl=ru_RU&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="200" height="175"></embed></object> |
Для его размещения в балуне необходим следующий код:
placemark.setBalloonContent('<div style="font-weight:bold;padding-bottom:5px;color:#ff0000; text-align: center;">Пелагея - Розы (Нашествие 2010)<br/><br/><object width="200" height="175"><param name="movie" value="http://www.youtube.com/v/pDoziw0E5Bk&hl=ru_RU&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/pDoziw0E5Bk&hl=ru_RU&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="200" height="175"></embed></object></div>'); |
Вы можете добавить заголовок для видео, дописав в начале код:
<div style="font-weight:bold;padding-bottom:5px;color:#ff0000; text-align: center;">Пелагея — Розы (нашествие 2010)<br/><br/>
Можно сразу открыть балун на карте, добавив строку
placemark.openBalloon();
Посмотреть полный код и пример в действии
Второй способ использовать для вывода на карту файл в формате YMapsML.
Здесь наш код для встраивания видео можно поместить в тег description, т.к. в нем можно использовать html-код, в остальных тегах html-разметка экранируется.
Посмотреть пример (видео с различных семинаров Яндекса на карте)
Код примера
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>API Яндекс.Карт - размещаем flash-видео в балуне используя файл YMapsML</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://api-maps.yandex.ru/1.1/index.xml?key=ACuF2EkBAAAAzahYCgIASLsFm9n8EPvNjaTc8nAWiETKgYcAAAAAAAAAAAC-q61vWtIK3Kzt2yQ9qFaGJGKzXw==" type="text/javascript"></script>
<script language="JavaScript" type="text/javascript">
// Создание обработчика для события window.onLoad
YMaps.jQuery(function () {
// Создание экземпляра карты и его привязка к созданному контейнеру
var map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);
// Установка для карты ее центра и масштаба
map.setCenter(new YMaps.GeoPoint(55.09735,51.768099), 4);
map.addControl(new YMaps.Zoom());
map.addControl(new YMaps.TypeControl());
map.addControl(new YMaps.ToolBar());
// Создание и добавление YMapsML-документа на карту
var ml = new YMaps.YMapsML("http://webmap-blog.ru/xml/semyandexvideo.xml");
map.addOverlay(ml);
// Обработчик неудачной загрузки YMapsML
YMaps.Events.observe(ml, ml.Events.Fault, function (ml, error) {
alert('Ошибка: ' + error);
});
});
</script>
</head>
<body>
<div id="YMapsID" style="width:800px; height:600px;"></div>
</body>
</html> |


В вашей статье рассмотрен вариант размещения статического flash-ролика. Если необходимо генерировать flash-объект динамически, то можно воспользоваться библиотекой swfobject (http://api.yandex.ru/jslibs/libs.xml#swfobject).
В клубе разработчиков API Яндекс.Карт уже обсуждался подобный вопрос: http://clubs.ya.ru/mapsapi/replies.xml?item_no=6556
Хорошая статья. Но не как не могу понять, как вставить свою флешку в карту.
Первым способом все работает, флешка вставляется и управляется.
Второй способ (который нужен), флеш не отображается хоть тресни! Может кто ниб помочь, подсказать что не так?
Здравствуйте, не имею специального образования, но почитав Ваш блог сделал сайт с картой газовых заправок. Теперь хочу сделать базу установщиков газового оборудования, хочу чтобы в балуне на карте была ссылка на страницу сайта.
Адреса хочу хранить в базе данных, не могу сделать вывод ссылки в балун.
Код запроса информации из бд, нужная строка web
$result = mysql_query(«SELECT * FROM stopoint»);
if(mysql_num_rows($result)>0)
{
while ($mar = mysql_fetch_array($result))
{
$exp_str1 = explode(«», $mar[‘descriptions’]);
$mar[‘descriptions’] = implode($exp_str1, «, «);
echo »;
echo », $mar[‘name’], »;
echo »;
echo »;
echo htmlspecialchars (stripslashes($mar[«$web»] ));
echo », $mar[‘phone’], »;
код балуна
Телефон: $[metaDataProperty.AnyMetaData.phone]
Инфо
email: $[metaDataProperty.AnyMetaData.email]
Подскажите что не так делаю пожалуйста
Похожая проблема обсуждалась в клубе Яндекс.Карт ссылка
к сожалению код исказился 🙁
А в Google Maps такое возможно?
Да, в балун можно добавить любой html-код.