Клуб API Карт

Не отображает контур домов. Только номер.

xdll
30 апреля 2013, 15:47

Гуру помогите. Вот такой код. Все в нем отлично и все работает. Но почему не отображает на "Народной карте" контур домов, только номера? Это глюк API или я где-то накосячил? Первый раз такое вижу.

  

 



<script src="http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU" type="text/javascript"></script>

    <style>
      html, body, #YMapsID {
    margin: 0;
    padding: 0;
    height: 90%;
    width: 100%;
      }
      
    </style>

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

        function init () {

        //Определяем начальные параметры карты
            myMap = new ymaps.Map('YMapsID', {
                    center: [49.2873,38.9272],
                    zoom: 10,
                    type: "yandex#publicMap",
                    behaviors: ['default', 'scrollZoom']
                });    
            
            //Определяем элемент управления поиск по карте    
            var SearchControl = new ymaps.control.SearchControl({noPlacemark:true});    

            //Добавляем элементы управления на карту
             myMap.controls
                .add(SearchControl)                
                .add('zoomControl')                
                .add('typeSelector')                 
                .add('mapTools');
                
            coords = [49.2873,38.9272];
            
            //Определяем метку и добавляем ее на карту                
            myPlacemark = new ymaps.Placemark([49.2873,38.9272],{}, {preset: "twirl#redIcon", draggable: true});    
            
            myMap.geoObjects.add(myPlacemark);            
    
            //Отслеживаем событие перемещения метки
            myPlacemark.events.add("dragend", function (e) {            
            coords = this.geometry.getCoordinates();
            savecoordinats();
            }, myPlacemark);

            //Отслеживаем событие щелчка по карте
            myMap.events.add('click', function (e) {        
            coords = e.get('coordPosition');
            savecoordinats();
            });    
    
    //Отслеживаем событие выбора результата поиска
    SearchControl.events.add("resultselect", function (e) {
        coords = SearchControl.getResultsArray()[0].geometry.getCoordinates();
        savecoordinats();
    });
    
    //Ослеживаем событие изменения области просмотра карты - масштаб и центр карты
    myMap.events.add('boundschange', function (event) {
    if (event.get('newZoom') != event.get('oldZoom')) {        
        savecoordinats();
    }
      if (event.get('newCenter') != event.get('oldCenter')) {        
        savecoordinats();
    }
    
    });
            
    }
    
    //Функция для передачи полученных значений в форму
    function savecoordinats (){    
    var new_coords = [coords[0].toFixed(4), coords[1].toFixed(4)];    
    myPlacemark.getOverlay().getData().geometry.setCoordinates(new_coords);
    document.getElementById("acf-field-coordinat").value = new_coords;
    document.getElementById("acf-field-zoom_map").value = myMap.getZoom();    
    }

    </script>

</head>

<body>

<div id="YMapsID"></div>
<input type="text" name="fields[field_515aee3394776]" class="text" id="acf-field-coordinat" value="" kl_virtual_keyboard_secure_input="on">


<input type="number" name="fields[field_517f8be12fe7b]" class="number" id="acf-field-zoom_map" value="" step="any" kl_virtual_keyboard_secure_input="on">

 

3 комментария
Подписаться на комментарии к посту

Через АПИ все объекты на слое народной карты предоставляется в растеризованном виде.

Это понятно. Но маленькие обьекты вообще не видны. Есть у меня сайт и там обратным геокодированием ставится метка на карту. Сейчас на карте нет домов только их номера. Скорее всего это глюк.

Здесь все контуры домов есть. http://n.maps.yandex.ru/-/CVVJvNy0

Вот нашел тему: http://clubs.ya.ru/narod-karta/replies.xml?item_no=34261.

Похоже имеено то о чем пишут.

вместо
myPlacemark.getOverlay().getData().geometry.setCoordinates(new_coords);

можно просто
myPlacemark.geometry.setCoordinates(new_coords);