Клуб API Карт

Не отображаются метки на карте

gabibulah
4 марта, 14:37

Обращаюсь к https://search-maps.yandex.ru/v1/ аяксом, получаю ответ в виде объекта. Но этот объект никак не получается отобразить на уже существующей карте. Карта сначала отображает один маркер с координатами объекта. При клике по ссылкам (школы, дет сады...) должны отображаться (без обновления карты) маркеры этих объектов. Но почему то они не появляются.

var myMap, myCollection;

ymaps.ready(init);

function init () 
{
   myMap = new ymaps.Map("YMapsID", {
                    center: [42.9543,47.5490], 
                    zoom: 15
   });
            
   myCollection = new ymaps.GeoObjectCollection();
    
   var myPlacemark = new ymaps.Placemark([42.9543,47.5490]);
   //Добавляем метку на карту      
   myMap.geoObjects.add(myPlacemark);
}

$(function(){
  $(document).on('click', '#menum a', function() {
     $('#menum a').removeClass("active");
        
       //     myCollection.removeAll();            

     $.getJSON("https://search-maps.yandex.ru/v1/", {
                text: "школы,средняя школа",
                type: "biz",
                lang: "ru_RU",
                ll: "47.5490,42.9543",
                spn: "",
                rspn: 1,
                apikey: "86749498-3ed5-4892-89e1-e5575c59ccc0",
                results: 50
        }, function(json){
                for (i = 0; i < json.features.length; i++) {
                /*  var myPlacemark = new ymaps.Placemark(json.features[i].geometry.coordinates, {},
                    {
                        preset: 'islands#redHomeIcon' 
                    });
                    myCollection.add(myPlacemark);*/
                    myMap.geoObjects.add(new ymaps.Placemark(json.features[i].geometry.coordinates));
                }
            //     myMap.geoObjects.add(myCollection);
      });
   });
});

В консоли смотрю, объект возвращается нормально, но метки на карте упорно не появляются. Что делаю не так? Уже двое суток мучаюсь( (

Подскажите что где ошибка

12 комментариев
Скорее всего дело в порядке координат. Метки у вас появляются, но не в Махачкале =).
Попробуйте отзумить карту и проверьте


Поиск принимает "ll" в формате "долгота,широта"
из документации:
ll – Центр области поиска. Определяется с помощью долготы и широты, разделенных запятой. 


и возвращает результат с таким же порядком.


Если хотите работать с ним в АПИ на клиенте (хотя он вообщем-то для сервера)
настройте &coordorder=longlat при подключении АПИ


собрал fiddle
Обновлено 4 марта, 16:07
dimik,
Спасибо, друже.

>>> и возвращает результат с таким же порядком.

из-за этого 2 дня потерял((((((((
хм, я в Placemark передаю параметры так [json.features[i].geometry.coordinates[1], json.features[i].geometry.coordinates[0]] и заработало, а у вас в fiddle так json.features[i].geometry.coordinates тоже работает. Как так?
gabibulah,
ну я же подключаю АПИ с &coordorder=longlat
Вообще там не надо ничего парсить и цикл for не нужен.
Можно передать весь json в вызов geoQuery и добавить на карту одной строчкой


вот так
dimik,
в таком случае пр повторном нажатии на ссылку метки не обновляются, а поверх старых добавляются. Есть ли в этом решении (через ymaps.geoQuery) нечто похожее на myCollection.removeAll(); ?
gabibulah,
вы можете сохранить ссылку на результат вызова geoQuery
и использовать removeFromMap
var geoObjects =  geoQuery(json);
geoObjects.addToMap(myMap);



...
geoObjects.removeFromMap(myMap);


Учтите, что этот поиск ограничен всего 500 запросов для одного ключа в сутки.

Обновлено 4 марта, 18:41
В продолжение темы, заметил, что на карте появляются не все организации, которые должны быть рядом с объектом. Например, при клике на пункт АЗС, показывается одна метка, хотя на самой карте видно, что рядом еще 2 АЗС (да я и сам знаю, что их там несколько).

В параметр text передаю такие запросы - "азс,бензин,заправка".
Это касается не только АЗС. Из-за чего такое может быть? Может больше ключевиков в параметр text передавать? Хотя что еще можно передать для АЗС..
gabibulah,
возможно дело в spn – нужно передавать размер области, если передаете ll
dimik,
для других категорий, например для "Кафе, Рестораны", вроде хорошо ищет. Кстати  АЗС, которая отображается находится дальше, чем 2 другие.
Может и в самом дело в spn. Я бы хотел увеличить разрешение карты (знаки после запятой), чтобы точнее определить spn. У меня сейчас 4 знака после запятой, как увеличить их до 7-8 к примеру.
4 знака автоматом получается, в личном кабинете ставлю метку и сохраняю в БД, она сохраняется с 4-мя знаками
dimik,
Кажется понял, какие организации не отображаются в виде меток. Те, которые на карте и так отображаются в виде пиктограмки соответствующей категории (например, АЗС - в виде иконки бензоколонки). На них по умолчанию можно нажать и всплывает модальное окно с описанием (т.е, карта уже такой создается).
Тогда вопрос, можно ли сделать так, чтобы они стали не кликабельны или вообще исчезли, и появлялись только по клику по пункту меню карты?
dimik,
По прежнему не появляется метка так, где уже есть метки самой карты. Я проверил на Яндекс.Карте, там все ок, поверх пиктограмок на карте появляются метки.

Где еще какой параметр ввести или вкл/откл опцию, чтобы заработало так же как и на Я.К?