Клуб API Карт

август 2009
Как реализовать функционал "Конструктора схем проезда"?
boicoff
1 августа 2009, 02:23

Нужно сделать в админке сайта, примерный аналог Конструктора схем проезда, т.е. чтобы администратор мог зайти в админку и создать или отредактировать путь. Два часа бился с Polyline, но смог сделать чтобы линия строилась от предыдущей точки, примерно вот так:

<script src="http://api-maps.yandex.ru/1.0/?key=тут ключ"
    type="text/javascript"></script>

    <script type="text/javascript">
var map;
var placemark;
        window.onload = function () {


  map = new YMaps.Map( document.getElementById("YMapsID") );map.setCenter( new YMaps.GeoPoint(37.64, 55.76), 10, YMaps.MapType.MAP );
  map.addControl(new YMaps.TypeControl());
  map.addControl(new YMaps.ToolBar());
  map.addControl(new YMaps.Zoom());
  //map.addControl(new YMaps.MiniMap());
  map.addControl(new YMaps.ScaleLine());

  YMaps.Events.observe(map, map.Events.Click, function (mEvent) {


var bounds = map.getBounds(),
    pointLb  = bounds.getLeftBottom(),
    span = bounds.getSpan();
    var point = mEvent.getGeoPoint();
    var placemark = new YMaps.Placemark(point);
    map.addOverlay(placemark);



if(document.getElementById("edit-field-coords-0-value").value)
{

        var pl = new YMaps.Polyline([ new YMaps.GeoPoint.fromString(document.getElementById("edit-field-coords-0-value").value),
                                          mEvent.getGeoPoint()
                                        ]);

            map.addOverlay(pl);
}
$("#edit-field-coords-0-value").val(mEvent.getGeoPoint());

  });


        }
    </script>


Соответственно с таким вариантом не о каком редактировании речи не идёт. Есть какие-нибудь мысли по этой теме?


ПС. И ещё, mEvent.getGeoPoint() работает только если указан адрес http://api-maps.yandex.ru/1.0/, а если указать http://api-maps.yandex.ru/1.1/, то координаты не определяются, а в консоль пишет:

Ошибка: mEvent.getGeoPoint is not a function

как лечить?


9 комментариев
API 1.x
Неправильное отображение координат карты.
autokent.com
1 августа 2009, 12:41

Добрый день, проблеммка вот такая я определил необходимые для меня координаты с помощью интрумента - Определение координат. Но когда я вывожу эту карту у себя на сайте меня почему то перебрасывает в область Сыктывкара. Мне нужно было - Челябинск, Героев Танкограда - 114 (61.451368,55.172146 определил инструментом)

Для вывода использовал Плагин для Джумлы

http://yar-it.com/component/option,com_jdownloads/Itemid,42/task,viewcategory/catid,5/

Буду рад услышать любые идеи - из-за чего подобная оказия случилась.

Спасибо.

4 комментария
API 1.x
как изменить ширину текста метки ?
damir.aysin
1 августа 2009, 17:12

создал свой стиль, темплэйт, и присоеденил к метке, метке задал имя, как вариант

школа №12345


при выводе на карту, метка изображается в новом стиле, но текст метки "обрывается", и становится

школа

№12345


подозреваю что гдето устанваливаются параметры высота и ширина текста

подскажите, где смотреть и что исправить?

7 комментариев
API 1.x
как задать стиль при открытии балуна
Яна Т.
2 августа 2009, 17:00
никак не могу разобраться, как вот в этом примере задать стиль балуну я пытаюсь делать так: map.openBalloon(geoPoint, name, {onClose: function () { link.className = getElement().style.display = ""; }, style:s}); (естественно, стиль s определен) но это не работает :(
3 комментария
API 1.x
Центрирование карты по геокоду
theWurm
2 августа 2009, 19:01

Добрый день!

 

На сайте хочу реализовать, чтобы по клику на адрес появялась карта, где данный адрес будет помечен. Вот, что вышло. Только одна проблема - никак не смогу понять, что указать в setCenter, чтобы карта центрировалась по адресу.

 

Если просто написать geocoder, то ничего не показывает, видимо формат другой.

 

 

 <script type="text/javascript">
        window.onload = function () {
            var map = new YMaps.Map(document.getElementById("YMapsID"));
            map.addControl(new YMaps.Zoom());
            var geocoder = new YMaps.Geocoder("адрес");

           map.addOverlay(geocoder);

           map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 10);
       }
    </script>

 

Заранее спасибо за помощь. Буду рад любым советоам.

3 комментария
API 1.x
Дорожные камеры в Ярославле
Олег Елифантьев
2 августа 2009, 22:44

По мотивам дорожных камер на Яндекс.Пробках сделал подобный сервис для Ярославля

Посмотреть можно здесь

Разрабатывал для avtozapiski.ru 

Пока есть трудности работы в IE, вызваны они правда не API Яндекс.Карт а особенностями вещаниям камер, с которых берется сигнал.

5 комментариев
API 1.x
Возможно ли реализовать вот это на API Яндекс.Карт
Хорхе Альварес
3 августа 2009, 09:56

Возникла необходимость автоматизировать подсвечивание области на карте, см. ссылку:

http://upload.wikimedia.org/wikipedia/commons/e/e7/Map_of_Russia_-_Rostov_Oblast_(2008-03).svg

залез в исходный код страницы, по используемым в этой карте тегам вышел на описание API Яндекс.Карт, но в руководстве я не нашел схожих инструментов, как мне встроить на сайт именно такую карту.. где найти инфу.. Ктонить знает?

11 комментариев
API 1.x
Баг или фича?
pinyaev
3 августа 2009, 11:25

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

Ниже показаны скриншоты карты в четырех масштабах, где город Севастополь то есть, то он исчезает. Кстати, на последней карте исчез населенный пункт Балаклава, хотя на 2й и 3й карте он есть. Изменение масштаба плавное, на еденичку.

Этот эффект это баг или просто такое свойство? Если свойство, то зачем?

2 комментария
масштаб,API 1.x
миграция с 1.0 на 1.1
Egor
3 августа 2009, 13:14

не могу заставить работать в новой версии этот код.
даже просто typeControl.add(new YMaps.ToolBarSeparator(30)); не работает.

    var typeControl=new YMaps.TypeControl();
    ...
    typeControl.add(new YMaps.ToolBarSeparator(30));
    var cssObj1={'width':'1000px','height':'600px'},cssObj2={'width':'700px','height':'500px'};
    var btn=new YMaps.ToolBarToggleButton({icon: "../icon/arrows.gif",caption:"",hint:"Изменение размера карты"});
    YMaps.Events.observe(btn,btn.Events.Click,function(){
        $(".minimiz").toggle();
        if($("#YMapsID").height()==500){
            $("#YMapsID").css(cssObj1);
        } else{
            $("#YMapsID").css(cssObj2);
        }
        map.redraw(false);
    },typeControl);
    typeControl.add(btn);
    ...

5 комментариев
API 1.x
Есть ли Callback загрузки карты?
oleglark
4 августа 2009, 15:37

Подскажите, существет ли событие типа onLoad у объекта карты в целом? Т.е. мне необходима та точка в программе когда карта полностью отрисовалась.

Спасибо.

2 комментария
API 1.x
Инструмент "Фотомаппер". Публикует карту с фотографиями
mcronni
4 августа 2009, 17:37

Сегодня мы запустили ещё один инструмент "Фотомаппер".

Этот инструмент позволит опубликовать на вашем сайте карту с фотографиями, размещенными на Яндекс.Фотках и привязанными к карте. Редактирование фотографий, изменение их привязки к карте и названий выполняется на Яндекс.Фотках.

Читайте подробнее в блоге Яндекса.

Нет комментариев
API 1.x
Функция JS в setBalloonContent
anokhina2402
5 августа 2009, 01:54

 Доброе время суток.
Заранее прошу прощения, если вопрос покажется вам тупым. Я новичок в этом деле.
Мне нужно внутри балуна сделать 3 ссылочных поля, при нажатии на которые будет показываться некоторая информация.
Я пишу так:
  placemark.setBalloonContent('<script type="text/javascript" function ddd(name) {document.getElementById(&#039desc&#039).style.display=&#039none&#039;'+
  'document.getElementById(&#039contact&#039).style.display=&#039none&#039;'+
  'document.getElementById(&#039photo&#039).style.display=&#039none&#039;'+ 
  'document.getElementById(name).style.display=&#039block&#039; } </script>'+
  '<a href="javascript:ddd(&#039desc&#039);">Описание</a> '+
  '<a href="javascript:ddd(&#039contact&#039);">Контакты</a> '+
  '<a href="javascript:ddd(&#039photo&#039);">Фото</a>'+ 
  '<div id="desc" style=" display: none;">11111</div>'+
  '<div id="contact" style="display:none;">2222</div>'+
  '<div id="photo" style="display:none;">3333</div>');


При нажатии выдает ошибку «ddd is not defined»

Если я пишу эту функцию на пределами setBalloonContent, вот так:

function ddd(name) {document.getElementById(‘desc’).style.display='none';
  document.getElementById('contact').style.display='none';
  document.getElementById('photo').style.display='none'; 
  document.getElementById(name).style.display='block'; }

  function AddSightInVisual(name, desc, contact, x, y)
  {
  var placemark = new YMaps.Placemark(new YMaps.GeoPoint(x,y), {draggable: true});
  placemark.name = name;
  placemark.description = desc;
  placemark.setBalloonContent('<script type="text/javascript" function ddd(name) {document.getElementById(&#039desc&#039).style.display=&#039none&#039;'+
  'document.getElementById(&#039contact&#039).style.display=&#039none&#039;'+
  'document.getElementById(&#039photo&#039).style.display=&#039none&#039;'+ 
  'document.getElementById(name).style.display=&#039block&#039; } </script>'+
  '<a href="javascript:ddd(&#039desc&#039);">Описание</a> '+
  '<a href="javascript:ddd(&#039contact&#039);">Контакты</a> '+
  '<a href="javascript:ddd(&#039photo&#039);">Фото</a>'+ 
  '<div id="desc" style=" display: none;">11111</div>'+
  '<div id="contact" style="display:none;">2222</div>'+
  '<div id="photo" style="display:none;">3333</div>');

Функция срабатывает, но только если балун закрыть и потом открыть.

Заранее благодарна за ответы.



6 комментариев
API 1.x
Помогите,пожалуйста!
svetik21121985
5 августа 2009, 11:12

Существует две таблицы: таблица улиц и таблица станций метро...необходимо установить соответствие улицы с близлежащими станциями метро...

15 комментариев
API 1.x
Разбиение polyline на отдельные сегменты
shasoft
5 августа 2009, 19:10

С помощью polyliny вывожу улицу. Улица большая. Больше 100 сегментов.

При увелечении до масштаба дома на экране показывается от 1-5 сегментов из всего набора.

Имеет ли смысл разбить polyline на отдельные polyliny-ы? Т.е. вместо одного объекта создать 100 и выводить их?

Менеджер объектов у меня уже есть, так что вновь созданные объекты будут автоматом отсекаться и на экране будет вместо одной большушей polyline выводится 1-5 отрезков, состоящих из двух точек.

Т.е. ускорит такое разбиение скорость работы или затормозит? И на сколько (хотя бы примерно)?


4 комментария
API 1.x
Скрипт Конструктор для Яндекс.Карт
webkuznec
6 августа 2009, 20:38

Скрипт конструктора для Яндекс.Карт - это скрипт, который позволит вам без всякого знания яваскриптов, API Яндекс.Карт и прочих заморочек использовать практически весь их функционал. Скрипт существует в двух версиях: LITE (бесплатный) и PRO.

Возможности LITE версии:

  • Настройка отображения карты: API ключ, название карты, координаты центра при открытии, масштаб при открытии, максимальный и минимальный масштабы.
  • Добавление объектов на карту (тип - метка), с названием и описанием
  • Список объектов при показе карты с возможностью перехода к объекту при нажатии на ссылку.

Скачать Скрипт конструктора для Яндекс.Карт LITE


Если вам требуется весь функционал скрипта, то вам подойдет PRO версия.

Возможности PRO версии:

  • Настройка отображения карты: API ключ, название карты, координаты центра при открытии, масштаб при открытии, максимальный и минимальный масштабы.
  • Возможность использовать стандартные Янедкс.Карты - либо загрузить свою (!) карту и работать с ней точно также, как и с обычной. Например, если вашего города еще нет в деталях на картах, то вы можете отсканировать карту и использовать ее за основу.
  • Создание и редактирование разделов и подразделов неограниченной вложенности для систематизации объектов, для объектов каждого раздела можно определить свой тип иконок
  • Добавление объектов на карту различных типов:
    1. Метка: название, раздел, описание, возможнось загрузки своей иконки или использование общей для раздела, добавление фотографии. Добавление метки осуществляется путем указания ее метоположения на карте.
    2. Ломаная: название, раздел, описание, цвет линии, ее толщина и прозрачность.
    3. Многоугольник: название, раздел, описание, цвет линии, ее толщина и прозрачность, цвет заливки и ее прозрачность.
  • Дополнительные возможности по работе с посетителями, которые могут добавлять объекты на карту самостоятельно, при этом администратор может включить режим предварительного модерирования объектов и уведомления.

Требования для работы скрипта: PHP (4 или 5), MySQL (база данных). Скрипт полностью в кодировке UTF-8

.

Если вы заинтересовались PRO версией, то вы можете посмотреть ее в деле: Пример скрипта конструктора для Яндекс.Карт PRO, доступ в админку: логин: admin, пароль pass

Остались вопросы - пишите

7 комментариев
API 1.x
Яндекс.Карта с использованием ajaх на сайте evpat.org
starat
7 августа 2009, 00:11

Наконец доделал карту Евпатории http://evpat.org/map2/map2.php.

В кратце сделано следующие:

1. Запрос к серверу с координатами области видимости карты.

2. Данные с сервера  принимаются в формате JSON. (выборку из БД  производит php-скрипт)

3. Написал плагин для Strawberry CSM, который позволяет для любого объекта (новости) задать геообъект и его значёк. Достаточно указать адрес и на появившейся карте сдвинуть маркер, если необходимо. Координаты определяются автоматически.

Потратил 2-3 дня времени. Документация с первого раза сложновата.

 

Если бы у Яндекса была Карта Киева на английском! А так для англоязычного сайта о Киеве прийдётся использовать другую API карту.

Нет комментариев
API 1.x
Как показать хинты для точки на онМаусОвер?
poiradar
7 августа 2009, 15:26

Собственно, все с версией яндекса 1.0 замечательнейшим образом работало.

Было принято решение расширить поиск по карте интерактивным серчконтролом от яндекса , перевели наш  любимый Севастополь  на новую версию карт, в результате placemark.enableHint();

не работает.

соответственно

<code>

  placemark.enableHint();
  placemark.name="${center.currentLocalized( request ).name.replaceAll( /"/, '&quot;' )}";
  placemark.description="${center.currentLocalized( request ).name.replaceAll( /"/, '&quot;' )}";
 
  placemark.setHintContent( "${center.currentLocalized( request ).name.replaceAll( /"/, '&quot;' )}" );
  map.addOverlay( placemark );


</code>

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


Есть какие-нибудь решения без использования балуна?



5 комментариев
API 1.x
как заставить SearchControl корректно работать?
poiradar
7 августа 2009, 17:32

Собственно задача тривиально, серч адреса и позиционирование маркера по выбранному из сеарчКонтрола результату. function addControls( map ){ //map.enableDragging(); map.addControl(new YMaps.TypeControl()); map.addControl(new YMaps.ToolBar()); map.addControl(new YMaps.MiniMap()); map.addControl(new YMaps.ScaleLine()); var searchControl=new YMaps.SearchControl(); map.addControl(searchControl); YMaps.Events.observe(searchControl, searchControl.Events.Select, function () { map.removeOverlay(geoResult); if (this.length()) { geoResult = this.get(1); map.addOverlay(geoResult); map.setBounds(geoResult.getBounds()); }else { alert("Ничего не найдено") } }); map.addControl(new YMaps.Zoom()); } К сожалению, структура объекта передаваемого по Селекту не отвечает оной в документации: у результата нету длинны. Возможно конечно что я делаю что-то не так :) Любая помощь желанна!


выдержка из апи дока.

События

Имя Описание
Select Выбран один из результатов поиска.

В callback-функцию передаются два аргумента:

  • указатель на объект YMaps.SearchControl;
  • указатель на выбранный объект YMaps.GeocoderResult.


 отдых в севастополе 

2 комментария
API 1.x
Прошу помощи.
Поплавский Станислав
7 августа 2009, 21:00

Здравствуйте. заранее прошу простить за возможную некомпететность в вопросах программирования, ибо делал все сам по примерам

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


Вот код


 

<script type="text/javascript"><!--
        window.onload = function () {
            var map = new YMaps.Map(document.getElementById("YMapsID"));
            map.setCenter(new YMaps.GeoPoint(30.257000,59.989390), 18);
            var s = new YMaps.Style();
            s.iconStyle = new YMaps.IconStyle("example#customPointIcon");
            s.iconStyle.offset = new YMaps.Point(-45, -133);
            s.iconStyle.href = "http://redcroc.ru/logo.png";
            s.iconStyle.size = new YMaps.Point(90, 130);
            YMaps.Styles.add("example#customPoint", s);

            var t = new YMaps.Template();
            t.text = "
<div><img alt=\"Студия аэрографии\" style="\" mce_style="\""height:$[style.iconStyle.size.y];width:$[style.iconStyle.size.x];\" src="\" mce_src="\""$[style.iconStyle.href]\"\ />
<div class=\"CustomPointName\">$[name|0]</div>
</div>
";
            YMaps.Templates.add("example#customPointIcon", t);

               var placemark = new YMaps.Placemark(new YMaps.GeoPoint(30.257000,59.989390), {style: "example#customPoint"});
placemark.setBalloonContent('БЦ "Гулливер" оф.201 тел.:640-26-99');

     map.addOverlay(placemark);
    map.addControl(new YMaps.TypeControl());
    map.addControl(new YMaps.ToolBar());
    map.addControl(new YMaps.Zoom());
    map.addControl(new YMaps.ScaleLine());

        };

// --></script>

 

 

сама страничка тут - http://redcroc.ru/contacts

браузер ругается на ошибку в 110 строке, 23 символ.

Кавычки???

5 комментариев
API 1.x
Не ищутся адреса в Одессе
solov34
8 августа 2009, 21:54

Здравствуйте! Используем Вашу карты для поиска маршрутов в Одессе http://odessa.rusavtobus.ru/. Если делать поиск вводом адресов в адресные строки,  поиск находит заданные улицы в других городах в России (Питер, Киров и т.д.) или вообще ничего не находит. Всего несколько улиц находит в самой Одессе. Если ставить точки отправления и назначения прямо на карте, маршруты находятся. У Вас на в разделе карт на Одессе поиск вводом адреса работает. 

Из-за чего у нас не работает поиск? Адреса на карте не привязаны к координатам? Помогите, пожалуйста, решить проблему.

3 комментария
API 1.x