Клуб API Карт

Найдено на тему «не показывает балун»:
Как прикрепить балуны
Удалённый пользователь
6 февраля 2017, 17:47

Вопрос в следующем, как прикрепить к этим меткам балуны, метки идут через FeatureCollection и я не понимаю как сделать к ним балун, пробовал от myPlacemark, но так не работает.

<script type="text/javascript">
 ymaps.ready(init);
        var myMap, 
            myPlacemark;

function init() {
    var myMap = new ymaps.Map('map', {
            center: [55.755826, 37.6173],
            zoom: 10
        
        });
red = new ymaps.Placemark([55.709658441942416, 37.632903415777605], {
            // Чтобы балун и хинт открывались на метке, необходимо задать ей определенные свойства.
            balloonContentHeader: "AFI Residence Paveletskaya",
            balloonContentBody: "Cкачать презентацию",
            balloonContentFooter: "Москва, Павелецкая наб., д.8 - 6 ",
            hintContent: "Подробнее"
        });

    myMap.geoObjects.add(red);

    // Функция, которая по состоянию чекбоксов в меню
    // показывает или скрывает геообъекты из выборки.
    function checkState () {
        var shownObjects,
            byColor = new ymaps.GeoQueryResult(),
            byShape = new ymaps.GeoQueryResult();
        
        // Отберем объекты по цвету. 
        if ($('#red').prop('checked')) {
            // Будем искать по двум параметрам:
            // - для точечных объектов по полю preset;
            // - для контурных объектов по цвету заливки.
            byColor = myObjects.search('options.fillColor = "#ff1000"')
                .add(myObjects.search('options.preset = "twirl#redIcon"'));
        }
        if ($('#green').prop('checked')) {
            byColor = myObjects.search('options.fillColor = "#00ff00"')
                .add(myObjects.search('options.preset = "twirl#greenIcon"'))
                // После того, как мы нашли все зеленые объекты, добавим к ним
                // объекты, найденные на предыдущей итерации.
                .add(byColor);
        }
        if ($('#yellow').prop('checked')) {
            byColor = myObjects.search('options.fillColor = "#ffcc00"')
                .add(myObjects.search('options.preset = "twirl#yellowIcon"'))
                .add(byColor);
        }
        // Отберем объекты по форме.
        if ($('#point').prop('checked')) {
            byShape = myObjects.search('geometry.type = "Point"');
        }
        if ($('#polygon').prop('checked')) {
            byShape = myObjects.search('geometry.type = "Polygon"').add(byShape);
        }
        if ($('#circle').prop('checked')) {
            byShape = myObjects.search('geometry.type = "Circle"').add(byShape);
        }
        
        // Мы отобрали объекты по цвету и по форме. Покажем на карте объекты,
        // которые совмещают нужные признаки.
        shownObjects = byColor.intersect(byShape).addToMap(myMap);
        // Объекты, которые не попали в выборку, нужно убрать с карты.
        myObjects.remove(shownObjects).removeFromMap(myMap);
    }
    
    $('#red').click(checkState);
    $('#green').click(checkState);
    $('#yellow').click(checkState);
    $('#point').click(checkState);
    $('#polygon').click(checkState);
    $('#circle').click(checkState);
    
    // Создадим объекты из их JSON-описания и добавим их на карту.
    window.myObjects = ymaps.geoQuery({
        type: "FeatureCollection",
        features: [
            {
                type: 'Feature',
                geometry: {
                    type: 'Point',
                    coordinates: [55.895636, 37.462314900000024]
                },
                options: {
                    preset: 'twirl#yellowIcon'
                }
           
            },
            {
                type: 'Feature',
                geometry: {
                    type: 'Point',
                    coordinates: [55.8104533, 37.64509599999997]
                },
                options: {
                    preset: 'twirl#greenIcon'
                }
             },
            {
                type: 'Feature',
                geometry: {
                    type: 'Point',
                    coordinates: [55.70864899999999, 37.64558490000002]
                },
                options: {
                    preset: 'twirl#greenIcon'
                }
            },
            {
                type: 'Feature',
                geometry: {
                    type: 'Point',
                    coordinates: [55.84060729999999, 37.49379109999995],
                    radius: 10000
                },
                options: {
                    preset: 'twirl#redIcon'
                }
            }
        ]
    }).addToMap(myMap);
}
var expanded = false;

function showCheckboxes() {
  var checkboxes = document.getElementById("checkboxes");
  if (!expanded) {
    checkboxes.style.display = "block";
    expanded = true;
  } else {
    checkboxes.style.display = "none";
    expanded = false;
  }
}
</script>

   <form>
 
              
              <div class="multiselect">
    <div class="selectBox" onclick="showCheckboxes()">
      <select>
        <option>Выбрать фильтр</option>
      </select>
      <div class="overSelect"></div>
    </div>
    <div id="checkboxes">
      <label for="red" >
        <input type="checkbox" id="red" checked=true/>Красные</label>
      <label for="green">
        <input type="checkbox" id="green"checked=true />Зеленые</label>
      <label for="yellow">
        <input type="checkbox" id="yellow"checked=true />Желтые</label>
        <label for="point">
        <input type="checkbox" id="point"checked=true />Все объекты</label>
    </div>
  </div>
</form>

2 комментария
балун-панель,не показывает балун
Placemark показвает метки на одной странице и не показывает на другой
Смит
24 ноября 2016, 14:47

Здравствуйте, уважаемые разработчики! 

Placemark (яндекс карты) показывает метки на одной странице и не показывает на другой. 

Дано:
Движок Cotonti.
Плагин "Placemarks" (https://cmsworks.ru/catalog/plugins/placemarks).

Сайт: http://k38v38.myjino.ru
Страница на которой точки выводятся как надо: http://k38v38.myjino.ru/projects?map=1 
Страница, на которой точки косячат: http://k38v38.myjino.ru/projects 

Как видно в описании к плагину, вывод карты со всеми отмеченным проектами, происходит на отдельной странице: http://k38v38.myjino.ru/projects?map=1 
по ссылке: <a href="{PHP|cot_url('projects', 'map=1')}">Карта</a>.

Мне это не нужно. Мне нужно, чтобы карта была сразу на странице с заданями, безо всяких переходов. Я перекинул код карты на нужную страницу: 

<script type="text/javascript"> 
        var myMap, 
            myPlacemark;
        
        ymaps.ready(function () {
 
            myMap = new ymaps.Map("YMapsID", {
               center: [55.76, 37.64],
               zoom: 12
            }); 
     
            ymaps.geolocation.get({
               provider: 'yandex',
               mapStateAutoApply: true
            }).then(function (result) {
               myMap.geoObjects.add(result.geoObjects);
            });
 
            myMap.controls.add(
                new ymaps.control.ZoomControl()
            );
            <!-- IF {PHP.totalitems} > 0 -->
            myMap.geoObjects
                <!-- BEGIN: PRJ_ROWS -->
                .add(new ymaps.Placemark([{PRJ_ROW_PLACEMARKS_COORD}], {
                    balloonContent: '<a href="{PRJ_ROW_URL}">{PRJ_ROW_SHORTTITLE}</a>'
                }))
                <!-- END: PRJ_ROWS -->;
            <!-- ENDIF -->
        });
         
    </script>
 
    <div id="YMapsID" style="height: 320px;"></div>

Карта на нужной странице появилась, но точки с неё пропали. 
Логика мне подсказывает, что что-то нужно менять в этом куске: 

<!-- IF {PHP.totalitems} > 0 -->
            myMap.geoObjects
                <!-- BEGIN: PRJ_ROWS -->
                .add(new ymaps.Placemark([{PRJ_ROW_PLACEMARKS_COORD}], {
                    balloonContent: '<a href="{PRJ_ROW_URL}">{PRJ_ROW_SHORTTITLE}</a>'
                }))
                <!-- END: PRJ_ROWS -->;
            <!-- ENDIF -->

3 комментария
не показывает метки,не показывает точки,не показывает балун,не показывает балон,placemark,cotonti