Клуб API Карт

сентябрь 2010
Хочу панораму улиц на сайт. Это возможно?
Anodonta
1 сентября 2010, 10:26

Здравствуйте.

У киевского клуба боевого САМБО братьев Питык, на сегодняшний день, нет своего постоянного спортивного зала, поэтому адреса залов для тренировок время от времени меняются.

На сайте клуба http://www.sambo.kiev.ua/ для удобства пользователей добавляю Яндекс-карты, чтобы легче было найти тренировочный зал при смене его адреса. Это действительно удобно.

Но теперь хочется ещё и вставить в сайт панораму улиц.

Конкретный объект: Киев, улица Заслонова, 18. Ссылка на панораму и карту на сервисе Яндекс-карты: http://maps.yandex.ru/-/CNGt7zc

Саму карту, спасибо коллективу Яндекса, теперь можно встроить в сайт не прибегая к техническим сложностям: выбрал -> посмотрел -> получил результат (карту на сайт).

Данный объект присутствует на "Панорамах улиц". Очень хочется этот "кусочек" панорамы вставить на сайт.

Это возможно?

Спасибо.

4 комментария
панорамы,API 1.x
Макет всплывающей подсказки
mplagiat
1 сентября 2010, 12:13

Долго пытался применить макет к всплывающей подсказке как здесь

http://api.yandex.ru/maps/jsapi/examples/mapballoonlayout.html Как сделать что бы при наведении на маркер всплывала подсказка с этим стилем?

4 комментария
хинт
Подписи к меткам, полученным с помощью множественного геокодирования
SkyCat
3 сентября 2010, 00:36

Здравствуйте.

Подскажите, пожалуйста, как выводить подписи (адреса) у меток, полученных с помощью множественного геокодирования.

Я брал за основу этот пример.

Вот мой адаптированный вариант вышеуказанного примера.

<script type="text/javascript">
 // Создание обработчика для события window.onLoad
 YMaps.jQuery(function () {

 // Создание экземпляра карты и его привязка к созданному контейнеру
 var map = new YMaps.Map(YMaps.jQuery("#YMapsIDd")[0]);
 map.setCenter(new YMaps.GeoPoint(39.887714, 57.622506), 10);
 var traffic = new YMaps.Traffic.Control();
 var zoom = new YMaps.Zoom({smooth: true});
 map.addControl(new YMaps.Zoom(), new YMaps.ControlPosition(YMaps.ControlPosition.TOP_LEFT), new YMaps.Point(10, 10));
 map.addControl(traffic, new YMaps.ControlPosition(YMaps.ControlPosition.TOP_RIGHT, new YMaps.Point(5, 5)));
 traffic.setState({
 shown: true, // элемент управления развернут, пробки показаны
 infoLayerShown: true
 });

 // Координаты или адреса географических объектов
 var data = ["г. Ярославль, Ленинградский пр-т, 49а", "г. Ярославль, Московский пр-т, д. 108" ];

 var geocoder = new MultiplyGeocoder(data);

 map.addOverlay(geocoder);

 YMaps.Events.observe(geocoder, "Load", function (geocoder) {

 });

 });

 // Реализует наследование прототипа без исполнения конструктора родителя
 // Подробнее о наследовании: http://javascript.ru/tutorial/object/inheritance
 function extend (child, parent) {
 var c = function () {};
 c.prototype = parent.prototype;
 c.prototype.constructor = parent;
 return child.prototype = new c;
 };

 // Множественный геокодер
 // requests - массив адресов
 function MultiplyGeocoder (requests) {

 // Вызов родительского конструктора
 YMaps.GeoObjectCollection.call(this);
 var _this = this,

 // Количество вызовов геокодера
 geocodeCallCount = 0,

 // Обработчики событий
 listeners = [];

 // Последовательно геокодируем все переданные адреса
 for (var i = 0, l = requests.length; i < l; i++) {
 geocode(requests[i]);
 }

 // Функция, отвечающая за геокодировании одного адреса
 function geocode (request) {
	 
 // Геокодируем
 var geocoder = new YMaps.Geocoder(request);

 // Счетчик вызовов геокодирования увеличиваем
 geocodeCallCount++;

 // Сохраняем ссылки на обработчики событий
 listeners = listeners.concat(

 // Обработка событий Load и Fault
 YMaps.Events.observe(geocoder, [geocoder.Events.Load, geocoder.Events.Fault], function (geocoder) {
 if (geocoder.length()) {
 _this.add(geocoder.get(0));
 }

 geocodeCallCount--;
 isFinish();
 })
 );
 }

 // Функция для проверки окончания процесса геокодирования
 function isFinish () {

 // Если все объекты сгеокодированы, то генерируем событие завершения
 if (!geocodeCallCount) {

 // Событие о завершении геокодирования
 YMaps.Events.notify(_this, "Load", _this);

 // Удаление обработчиков событий
 for (var i = 0, l = listeners.length; i < l; i++) {
 listeners[i].cleanup();
 }
 }
 }
 }

 var ptp = extend(MultiplyGeocoder, YMaps.GeoObjectCollection);
</script>

Данные для геокодирования задаются динамически. Адреса берутся из базы данных.

11 комментариев
метка,множественное геокодирование,геокодирование
Свой контрол или как изменить размер области bounds?
joni-jones
3 сентября 2010, 05:44

Написал, свой контрол. Он перекрывает существенную область карты. Если сделать просто map.setBounds(bounds) то часть меток может оказаться под контролом и будет не видна. Как изменить размер этой области?

5 комментариев
элементы управления,область видимости
Как получить ToolBar
livestalker
3 сентября 2010, 11:00

Всем привет.

как у объекта YMaps.Map получить текущий тулбар?

4 комментария
элементы управления,панель инструментов
Полный набор стандартных значков (пиктограмм) яндекс-карт
tzhe
4 сентября 2010, 08:05

Наткнулся на день города на яндекс-афишах: http://afisha.yandex.ru/msk/cityday/

Что примечательно, не все значки событий содержатся в стандартном наборе пиктограмм: http://api.yandex.ru/maps/jsapi/doc/ref/reference/styles.xml

Например, значки концертов, салютов.

Вопрос: где находится полный и обновляемый набор значков яндекс-карт?

9 комментариев
метка
div поверх карты
tzhe
5 сентября 2010, 08:46

Пытаюсь расположить блок поверх карты. Блоку присвоил z-index:2. Блок все равно не отображается поверх карты.

Пример: http://tzhe.narod.ru/ymaps-api/question1/

11 комментариев
API 1.x
Не отображаются яндекс карты. фообще ничего.
D-Kard-Kain
5 сентября 2010, 19:04

Пытаюсь выложить яндекс карты (тупо сгенерированный конструктором код ) на сайте  http://www.makston.ru/pages_5/index.html

на этой странице. в редактор записываю

 <!-- Этот блок кода нужно вставить в ту часть страницы, где вы хотите разместить карту  (начало) -->
<script src="http://api-maps.yandex.ru/1.1/?key=тут мой ключ==&wizard=constructor" type="text/javascript"></script>
<script type="text/javascript">
    YMaps.jQuery(window).load(function () {
        var map = new YMaps.Map(YMaps.jQuery("#YMapsID-2315")[0]);
        map.setCenter(new YMaps.GeoPoint(37.609218,55.753559), 9, YMaps.MapType.MAP);
        map.addControl(new YMaps.Zoom());
        map.addControl(new YMaps.ToolBar());
        map.addControl(new YMaps.TypeControl());
       
        function createObject (type, point, style, description) {
            var allowObjects = ["Placemark", "Polyline", "Polygon"],
                index = YMaps.jQuery.inArray( type, allowObjects),
                constructor = allowObjects[(index == -1) ? 0 : index];
                description = description || "";
           
            var object = new YMaps[constructor](point, {style: style, hasBalloon : !!description});
            object.description = description;
           
            return object;
        }
    });
</script>

<div id="YMapsID-2315" style="width:450px;height:350px"></div>
<div style="width:450px;text-align:right;font-family:Arial"><a href="http://api.yandex.ru/maps/tools/constructor/" style="color:#1A3DC1">Создано с помощью инструментов Яндекс.Карт</a></div>
<!-- Этот блок кода нужно вставить в ту часть страницы, где вы хотите разместить карту (конец) -->

Ничего не происхожит. Почему?

Спасибо.

11 комментариев
API 1.x
Надписи на полигоне
Oldpunk777
5 сентября 2010, 23:45
Можно сделать на выделенном полигоне свою надпись, типа выделить область и на ней написать москва
3 комментария
хинт,полигон
Не грузиться карта, серое окно и на это все.
shcherbinkin
6 сентября 2010, 00:26

Разместил карту тут: http://init-studio.com/index.php?option=com_artforms&formid=1&Itemid=49

<center><!-- Этот блок кода нужно вставить в ту часть страницы, где вы хотите разместить карту  (начало) --> <script src="http://api-maps.yandex.ru/1.1/?key=AHz7g0wBAAAAsGmGLAIBKQSV00M7xd9c8vxcVc0uZ4ElE3UAAAAAAAAAAADDyRZm83uXbuIy8-Z2uLFCqW-fJw==&wizard=constructor" type="text/javascript"></script> <script type="text/javascript">     YMaps.jQuery(window).load(function () {         var map = new YMaps.Map(YMaps.jQuery("#YMapsID-2033")[0]);         map.setCenter(new YMaps.GeoPoint(30.5028,50.410256), 15, YMaps.MapType.MAP);         map.addControl(new YMaps.Zoom());         map.addControl(new YMaps.ToolBar());         map.addControl(new YMaps.TypeControl());         YMaps.Styles.add("constructor#pmgnlPlacemark", {             iconStyle : {                 href : "http://api-maps.yandex.ru/i/0.3/placemarks/pmgnl.png",                 size : new YMaps.Point(36,41),                 offset: new YMaps.Point(-13,-40)             }         });        map.addOverlay(createObject("Placemark", new YMaps.GeoPoint(30.504946,50.40702), "constructor#pmgnlPlacemark", "Студия \"Инит\""));                  function createObject (type, point, style, description) {             var allowObjects = ["Placemark", "Polyline", "Polygon"],                 index = YMaps.jQuery.inArray( type, allowObjects),                 constructor = allowObjects[(index == -1) ? 0 : index];                 description = description || "";                          var object = new YMaps[constructor](point, {style: style, hasBalloon : !!description});             object.description = description;                          return object;         }     }); </script> <div id="YMapsID-2033" style="width:450px;height:350px"></div> <div style="width:450px;text-align:right;font-family:Arial"><a href="http://api.yandex.ru/maps/tools/constructor/" style="color:#1A3DC1">Создано с помощью инструментов Яндекс.Карт</a></div> <!-- Этот блок кода нужно вставить в ту часть страницы, где вы хотите разместить карту (конец) --></center>
Я думаю видно покоду старицы что код впорядке, почему серое окно не ясно.

Система жумла, код вставлен через пхпмайадмин, на всякий случай.

6 комментариев
API 1.x
Координаты overlay при клике.
mikenerevarin
6 сентября 2010, 05:01

Стоит обработчик событий клика по карте:

YMaps.Events.observe(map, map.Events.Click, function (map, mEvent) {
open_info(map,mEvent.getGeoPoint());
});

Логичнее было бы

YMaps.Events.observe(map, map.Events.Click, open_info(map,mEvent.getGeoPoint()));

Но оно ругается на отсутствие mEvent

Так же включены свои оверлеи с обработчиком клика:

    this.openBalloon = function () {
        getElement().css("display", "none");
        var oncl=YMaps.Events.observe(map,map.Events.BalloonClose, function () {
            getElement().css("display", "");
            oncl.cleanup();
        });
    };

Задача: заставить функцию open_info() при клике на оверлей получать координаты оверлея.

Если я добавлю её вызов в обработчик оверлея, балун будет открываться 2 раза: по клику на оверлей и по клику на карту, координаты соответственно разные.

1 комментарий
события,балун,геокодирование
Яндекс панорамы у себя на сайте?
ltpm
6 сентября 2010, 08:59
Господа, возможно ли вставить к себе на сайт панораму какого-либо из доступных городов или пока это не возможно?
7 комментариев
панорамы,API 1.x
Wordpress & оверлеи
doronichewa.anna
6 сентября 2010, 12:22
не отображается меню созданного оверлея((общежитие 1\2\3\4\5\6) в вордпрессе. хотя код работает на пустой хтмлной странице. кто знает почему? вот он код на не вордпрессовской страницы: http://dl.dropbox.com/u/9513090/index.html
1 комментарий
WordPress,CMS,API 1.x
С "нуля"
vr-krg
6 сентября 2010, 12:30

Здравствуйте!

Не могу понять, как открыть карту, чтобы нанести на ней метки с нашими данными?

Как должен выглядеть код и куда его надо вставить? (я получил ключ и пример кода)

2 комментария
API 1.x
Открыть карту через AJAX-окно
drusha11111
6 сентября 2010, 12:53

Не думаю, что это распространенный способ применения Я.Карт, но поделюсь опытом реализации (потому как побился головой сначала о пустую страницу, а потом -- о серое окно, пришлось несколько часов).

Во-первых, вам потребуется модуль с "загрузкой по требованию".

В моем случае для открытия симпатичного окошка использовался Fancybox, у вас может быть что-то другое.

Инициализация ссылки для открытия окна должна выглядеть так:

$("a[rel=maps]").fancybox({
        ajax : {
            type    : "POST",            
            data    : 'window=yes'

        }

Параметр window передается для того, чтобы можно было либо выдать голый текст (если обращение через AJAX), либо отобразить навигацию, шапку и прочее -- если пользователь открыл ссылку в новой вкладке, например.

Родительская страница прикрепляет к себе API (которое по требованию, и не содержит document.write). Внутри страницы, которая грузится аяксом, вызывается функция YMaps.load(StartMap), где StartMap -- имя функции с описанием нашей карты (создание объекта Я.Карт, добавление навигации, расположение элементов, подъем баллонов и т.п.).

Ну, как передать координаты искомой точки, решать уже вам.

Буду рад, если кому-то поможет. Посмотреть, как работает, можно тут: http://kliniks.ru/i/maternity/3380.html

ЗЫ. Выяснилось, что первоначальный вариант работает только в ФФ, что есть очень и очень плохо.

В других браузерах заработал после того, как загрузку API перенес в родительскую страницу, а в подгружаемом блоке была только логика.

Осталась одна неприятная проблема, соответственно, вопрос к разработчикам.

Если создать экземпляр объекта карты, прикрепив его с свежесозданному div'у, все замечательно отображается.

Если этот экземпляр удалить (поскольку див тоже удаляется, деваться некуда, хоть с деструктором, хоть без), а потом попытаться сделать новый div и новый экземпляр карты, то балуны отображаются, объекты и вся обвязка тоже. А вот собственно карта не загружается -- внутренний div с тайлами пустой.

Это так и должно быть, или это глюк?

UPD: Проблему я решил довольно странным, хотя и логичным способом:

Сразу после загрузки окна (через callback-функцию) запускается функция отрисовки карты: все, что обычно выполняется при загрузке, но только в отдельной процедуре.

И -- главное! -- через любой промежуток времени ПОСЛЕ этого запускается setTimeout("map.redraw ()", 200). 200 -- число произвольное, даже с 10 миллисекундами все прекрасно работает. Полагаю, это происходит из-за того, что некоторые элементы окна прорисовываются на несколько мс дольше, чем рисуется карта. Причем, замечу, что запуск всей функции прорисовки через 200 мс ничего не дает. Нужно именно redraw провести.

10 комментариев
примеры проектов,API 1.x
Геолокация средствами броузера Opera (PC) и Opera Mobile (Symbian)
KDV
6 сентября 2010, 14:15

Недавно Opera анонсировала возможность геолокации в своем броузере. Т.е. возможность передачи сведений о своем расположении на вебсервер. Данную возможность тестировал в Opera 10.61 (PC) и Opera Mobile 10.1 (Symbian). К сожалению сайтов кроме altergeo.ru для проверки сей возможности не нашел.

Планирует ли Яндекс обеспечить поддержку Geolocation API в своих картах и для PC (maps.yandex.ru) и для смартфонов (m.maps.yandex.ru) ?

Данный функционал полагаю будет весьма востребован, когда на пример необходимо найти нужный магазин, банкомат и т.п. учитывая свое местонахождение зайдя на сайт нужной организации в Opera Mobile к примеру.

PS Opera Mobile 10.1 имеет статус beta и скачивается по адресу m.opera.com/next через мобильный интернет. Релиз Opera Mobile 10.0 не поддерживает геолокацию.

5 комментариев
геолокация
Использование yandex maps в ПО
cobaltsys
6 сентября 2010, 18:50
Хотелось бы узнать, как можно использовать api карт в навигационном ПО? Допустим я разрабатываю навигационное приложение, планирую распространять его бесплатно, что нужно чтобы получить доступ к картам?
3 комментария
API 1.x
Не могу подключить сгенерированый xml файл
berzhikeev.murat
7 сентября 2010, 11:45

Здраствуйте. Уменя проблема с подключением к карте сгенерированого xml файла средствами php. 
Пример взял отсюда:  http://webmap-blog.ru/yandex-maps/api-yandeks-kart-–-risuem-poliliniyu-i-soxranyaem-ee-v-baze-dannyx-mysql#more-572.

Я поменял ссылку на xml-файл и разместил его на своем хосте (сгенерированую xml-ку не менял). На сайте где я взял пример все работает.

Ошибка началась когда я поменял ссылку http://webmap-blog.ru/examples/drawline/viv-xml.php на http://testsoft.idhost.kz/viv-xml.php.  

Встречал схожие темы, писали что там файл должен лежать на публичном сервере. Как решить проблему подскажите?

Кто поможет заранее спасибо.

3 комментария
XML,API 1.x,YMapsML
Превышение лимита запросов геокодирования
Sstivi
7 сентября 2010, 19:24

Подскажите пожалуйста, если все таки случиться так, что несмотря на все кэширования лимит в 25 000 запросов будет превышен, как поступать?

Можно ли на этот случай завести второй api ключ, или есть вариант увеличить этот лимит?

4 комментария
API 1.x
Здание есть, а на карте его нет...
iv.kuzneczoff2011
7 сентября 2010, 19:41

По адресу Б.Сухаревская площадь есть здание под №9, оно существует я сегодня его видел более того я заходил туда, но на Я.карте его нет, что это глюк или недоработка?

1 комментарий
API 1.x,YMapsML