Клуб API Карт

Добавить в Значок Метки содержимое, если код получен из Конструктора

Pavel
3 октября 2010, 03:11

Добрый день!

Есть код карты, полученный из конструктора:

 <!-- Этот блок кода нужно вставить в ту часть страницы, где вы хотите разместить карту  (начало) -->
<script

src="http://api-maps.yandex.ru/1.1/?key=AJy1_0sBAAAAIS-nUgMAckINubwyWqYTlnSBJIdOQz-8QnIAAAAAAAAAAAAj5aSl2iD6NZGGYamP7bErB-ZbQ==&wizard=constructor"
type="text/javascript"></script>
<script type="text/javascript">
    YMaps.jQuery(window).load(function () {
        var map = new YMaps.Map(YMaps.jQuery("#YMapsID-633")[0]);
        map.setCenter(new YMaps.GeoPoint(36.176288,51.757817), 13, YMaps.MapType.MAP);
        map.addControl(new YMaps.Zoom());
        map.addControl(new YMaps.ToolBar());
        map.addControl(new YMaps.TypeControl());

        YMaps.Styles.add("constructor#pmdolPlacemark", {
            iconStyle : {
                href : "http://api-maps.yandex.ru/i/0.3/placemarks/pmdol.png",
                size : new YMaps.Point(36,41),
                offset: new YMaps.Point(-13,-40)
            }
        });


        YMaps.Styles.add("constructor#pmrdlPlacemark", {
            iconStyle : {
                href : "http://api-maps.yandex.ru/i/0.3/placemarks/pmrdl.png",
                size : new YMaps.Point(36,41),
                offset: new YMaps.Point(-13,-40)
            }
        });


        YMaps.Styles.add("constructor#FF3732c810Polyline", {
            lineStyle : {
                strokeColor : "FF3732c8",
                strokeWidth : 10
            }
        });
      
map.addOverlay(createObject("Placemark", new
YMaps.GeoPoint(36.15725,51.738667), "constructor#pmdolPlacemark",
"ОФИС<br/>ул. Мичурина, 12<br/>Вермя работы: 10:00 -
18:00<br/>тел. (054) 234-34-43"));
      
map.addOverlay(createObject("Placemark", new
YMaps.GeoPoint(36.204425,51.774356), "constructor#pmrdlPlacemark",
"СКЛАД БЫТОВОЙ ТЕХНИКИ<br/>ул. Спортивная, 12<br/>Вермя
работы: 9:00 - 17:00<br/>тел. (054) 221-14-42"));
      
map.addOverlay(createObject("Polyline", [new
YMaps.GeoPoint(36.156977,51.738292),new
YMaps.GeoPoint(36.151741,51.737067),new
YMaps.GeoPoint(36.148222,51.74133),new
YMaps.GeoPoint(36.153715,51.743141),new
YMaps.GeoPoint(36.165045,51.744953),new
YMaps.GeoPoint(36.170881,51.746764),new
YMaps.GeoPoint(36.173799,51.750068),new
YMaps.GeoPoint(36.179207,51.752092),new
YMaps.GeoPoint(36.183498,51.753264),new
YMaps.GeoPoint(36.18573,51.754223),new
YMaps.GeoPoint(36.189335,51.754862),new
YMaps.GeoPoint(36.182211,51.767964),new
YMaps.GeoPoint(36.184099,51.768497),new
YMaps.GeoPoint(36.185215,51.768869),new
YMaps.GeoPoint(36.191309,51.769295),new
YMaps.GeoPoint(36.195257,51.769828),new
YMaps.GeoPoint(36.197059,51.774354),new
YMaps.GeoPoint(36.200149,51.773981),new
YMaps.GeoPoint(36.201694,51.775259),new
YMaps.GeoPoint(36.204098,51.774887)], "constructor#FF3732c810Polyline",
"Схема проезда из офиса к складу"));
       
        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-633" style="width:547px;height:450px"></div>
<!-- Этот блок кода нужно вставить в ту часть страницы, где вы хотите разместить карту (конец) -->

Вопрос: куда надо вставить

placemark.setIconContent("Щелкни меня");

чтобы на каждой метке появилась эта надпись?

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

5 комментариев
Подписаться на комментарии к посту
Вначале покажу легкий путь =)

После строки

object.description = description;

добавьте

object.setIconContent(description);

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

Если вы хотите, чтобы описание метки и текст, находящийся в значке различались, то можете немножко изменить функцию:

        function createObject (type, point, style, description, iconContent) {
            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;

            if (iconContent) {
                object.setIconContent(iconContent);           
            }


            return object;
        }

Соответственно, в вызов функции добавляете дополнительный параметр:

map.addOverlay(createObject("Placemark", new  YMaps.GeoPoint(36.15725,51.738667), "constructor#pmdolPlacemark",  "ОФИС
ул. Мичурина, 12
Вермя работы: 10:00 -  18:00
тел. (054) 234-34-43" , "Щелкни меня"));
rodlex,
просто МегаСПАСИБИЩЕ! 3 часа разбирался, но поскольку не программист, то Ваш спасательный круг был очень кстати!
УПС...
Только еще вопрос:
А почему в первом (простом) варианте теряется моя ломаная (схема проезда)?
Писал быстро и как выяснилось с ошибками)
Ломаная не имеет метода setIconContent(), поэтому его вызов приводит к ошибке.
Т. е. нужно переделать вот так:

if (object.setIconContent) {
    object.setIconContent(description);
}

А для второго варианта, соответственно, так:

if (iconContent && object.setIconContent) {
    object.setIconContent(iconContent);
}
Саша МЕГА респект!!!!!!!!!!!!!!!! весь день мучался а оказалось так просто !!! СПАСИБО СПАСИБО СПАСИБО!!!!!!