Клуб API Карт

Метка поверх готовой карты

Пост в архиве.

Встал такой вопрос, есть карта с меню - http://api.yandex.ru/maps/ymapsml/examples/menufromymapsml.html

Требуется при просмотре меток организации, показать место, которое пользователь введет в адресную строку.

 Все эти функции по отдельности работают, но как их обеденить, что бы над картой с меню, можно было ввести адрес и он появился меткой, другого цвета на карте с меню?

16 комментариев
Вид метки задается стилями
Для меток-результатов поиска укажите свой стиль отличный от стиля меток организации.
а как смнить стиль метки на карте с меню (что я привел выше) или на этой карте
Поменяйте стиль в самом xml.
Подробнее: http://api.yandex.ru/maps/ymapsml/doc/guide/concepts/setappearance.xml

как быть с картой у которой xml файл не я пишу то есть с такой картой:


http://api.yandex.ru/maps/ymapsml/examples/showhttpgeocoderresult.html

Можно задать стиль для загружаемого YMapsML с помощью метода setStyle:

var ml = new YMaps.YMapsML('урл');
ml.setStyle("default#greenPoint");

Также можно слушать событие Load и определить стиль для любого оверлея из xml.

var ml = new YMaps.YMapsML('урл');

YMaps.Events.observe(ml, ml.Events.Load, function (ml, error) {
    var geoResult = ml.get(0).get(0);
    geoResult.description = geoResult.metaDataProperty.GeocoderMetaData.text;
    geoResult.setStyle("default#pinkPoint");
    map.addOverlay(geoResult);
    map.setBounds(geoResult.getBounds());
});

Все зависит от ваших целей и задач. Выбирайте)

с картой где 1 точка всего получилось, но не получается с картой типа меню, в xml файле правил пункт:


 


default#whitePoint

 


и никаких изменений не произошло

Напишите это в одну строчку.

default#whitePoint
задал стиль другой, эффекта нет, после поиска страница обновляется но метка не появляется, хотя с одной картой это срабатывает все отлично
дайте ссылку на страницу
Если Вам нужен геокодер в апи
то лучше использовать сервис геокодирования апи.


            var geocoder = new YMaps.Geocoder("Москва");

            YMaps.Events.observe(geocoder, geocoder.Events.Load, function (geocoder) {
               if (geocoder.length()) {
                    var result = geocoder.get(0);
                    result.setStyle('default#greenPoint');
                    map.addOverlay(result);
                    map.panTo(result.getGeoPoint());
                }
            });


подскажите пожалуйста, куда именно в моем коде его лучше вставить и что еще изменить?
Вставить в функцию yam


function yam (e) {
    e.preventDefault();
    var geocoder = new YMaps.Geocoder(YMaps.jQuery('input[name=address]').val());
    YMaps.Events.observe(geocoder, geocoder.Events.Load, function (geocoder) {
       if (geocoder.length()) {
            var result = geocoder.get(0);
            result.setStyle('default#greenPoint');
            map.addOverlay(result);
            map.panTo(result.getGeoPoint());
        }
    });
}


Добавить обработчик отправки формы

// Создание обработчика для события window.onLoad
YMaps.jQuery(function () {
    YMaps.jQuery('form[name=addr]').bind('submit', yam);
...


Удалить аттрибуты onclick и onchange из инпутов

   
   
   
   
сделал все как написано, увы не помогло :( может все такие есть решение?
Сотрите ключевое слово "var" при объявлении карты.

map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);

Это позволит вынести переменную map в глобальную область видимости и функция yam заработает.
огромное всем спасибо, все отлично работает!