Клуб API Карт

Найдено на тему «geojson»:
ymaps.geoQuery(json) перестал обрабатывать валидный geojson
Георгий М.
17 ноября 2017, 12:39

Спецификации geojson позволяют внутри объекта geometry иметь "type":"GeometryCollection",

      {
         "type":"Feature",
         "geometry":{
            "type":"GeometryCollection",
...

3 месяца назад ymaps отлично обрабатывали такой geojson, но с определённого момента начали выдаваться ошибки: "TypeError: WeakMap key must be an object, got null", при дебаге: "Error: domEvent.Manager: Не был передан обязательный аргумент!."

Такой geojson является валидным по спецификации, https://tools.ietf.org/html/rfc7946

Воспроизведение: https://jsfiddle.net/brLj2cfh/

Намеренное ли это действие, или регрессия?

6 комментариев
geojson
GeoJson поменять координаты
A1-AloneZero
16 августа 2017, 17:08

Здравствуйте! При подгрузке geojson файла координаты улетают в другую область по причине не правильного порядка.

Метод для считывания стандартный из документации:

// Загружаем GeoJSON файл, экспортированный из Конструктора карт.
    $.getJSON('fast_food.geojson')
        .done(function (geoJson) {

            geoJson.features.forEach(function (obj) {
                // Задаём контент балуна.
                obj.properties.balloonContent = obj.properties.name;
                // Задаём пресет для меток с полем iconCaption.
                obj.properties.iconCaption = "iconCaption";
                obj.options = {
                    preset: "islands#pinkDotIcon"
                }
            });
            // Добавляем описание объектов в формате JSON в менеджер объектов.
            objectManager.add(geoJson);
            // Добавляем объекты на карту.
            myMap.geoObjects.add(objectManager);
        });

Можно ли как то используя стандартные средства без разбора строк поменять порядок?

Сделав из 

"geometry": {
        "type": "Point",
        "coordinates": [
          36.2441044,
          54.5150103
        ]
      },

Это:

"geometry": {
        "type": "Point",
        "coordinates": [
          54.5150103,
          36.2441044
        ]
      },

1 комментарий
geojson
Как правильно показывать несколько полигонов на карту?
jo@hay.agency
13 ноября 2016, 13:49

Подскажите пожалуйста как правильно показывать на карту полигонов ? Я новичок.

На яндекс карте нарисовал несколько  полигонов  и экспортировал в формате geosjon ?И вот так добавляю на карту. Что не так делаю?

ymaps.ready(init);
  function init () {
  var myMap = new ymaps.Map("map", {
            center: [55.73, 37.75],
            zoom: 10
        }, {
            searchControlProvider: 'yandex#search'
        });

    jQuery.getJSON('http://bakeland.ru/js/data.geojson', function (json) {
            var geoObjects = ymaps.geoQuery(json)
                              .addToMap(myMap)
        });       
}

4 комментария
полигоны,geojson
Как отрисовать мультиполигон?
artrol
30 октября 2016, 06:03

Есть координаты мультиполигона GeoJson, как отрисовать его средствами API?

<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&coordorder=longlat" type="text/javascript"></script>

<script>
ymaps.ready(function() {
// 0. Создаем карту:
    var map,
        regionName = "Барвихинское поселение",
        center = [37.6174976,55.6506828],
        zoom = 7;

    map = new ymaps.Map('karta', {
        center: center,
        zoom: zoom,
        controls: []
    });
// 1. Запрашиваем через геокодер район (у Яндекса этой возможности пока нет, придется пользоваться OSM)
    var url = "https://nominatim.openstreetmap.org/search";
    var jsondata = $.getJSON(url, {q: regionName, format: "json", polygon_geojson: 1})
        .then(function (data) {
            $.each(data, function(ix, place) {
                if ("relation" == place.osm_type) {
// 2. Создаем полигон с нужными координатами
                    var p = new ymaps.Polygon(place.geojson.coordinates, {
                    hintContent: "Барвихинское поселение"
                }, {
                    fillColor: '#6699ff',
                    // Делаем полигон прозрачным для событий карты.
                    interactivityModel: 'default#transparent',
                    strokeWidth: 2,
                    opacity: 0.3
                });
// 3. Добавляем полигон на карту
                    map.geoObjects.add(p);
                    map.setBounds(map.geoObjects.getBounds())
                }
            });
        }, function (err) {
            console.log(err);
        });
});
</script>

https://nominatim.openstreetmap.org/search.php?q=%D0%91%D0%B0%D1%80%D0%B2%D0%B8%D1%85%D0%B8%D0%BD%D1%81%D0%BA%D0%BE%D0%B5+%D0%BF%D0%BE%D1%81%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5&format=json&polygon_geojson=1

4 комментария
geojson,мультиполигон
ListBoxItems и JSON массив с координатами точек
spirit.infernal
26 сентября 2016, 06:08

Приветствую. Помогите разобраться в корректной обработке указанного в шапке сочетания? на базе примера из песочницы собираю карту, добавляю на неё метки из обработанного массива координат и хотел бы получить указание на то, что почитать для добавления данного массива еще и в выпадающий список, с которым можно было бы взаимодействовать на манер этого? Я смутно догадываюсь, что надо бы распарсить json или xml файл на данные, которые уже через цикл надо вводить в переменную listBoxItems, но опыта парсинга не было.

на данный момент делаю так

listBoxItems = [
  $.getJSON('geojson.json', function (data) {
	$.each(data, function (coordinates, address) {
		new ymaps.control.ListBoxItem({
          data: {
           content: address, 
           center: coordinates,												
           zoom: 9											
          }										
        })
    });
  })
],

и получаю, ожидаемо, не работающий результат. что исправить и почитать, чтобы достичь нужного эффекта?

Если это будет полезно, api ругается: Cannot read property 'get' of undefined в combine.js. Ссылкой поделиться не могу, так как пока всё собирается на локальном компьютере.

спасибо заранее за помощь.

7 комментариев
ListBoxItem,geojson
Порядок координат в json для использования в geoQuery
Удалённый пользователь
11 сентября 2015, 10:28

Добрый день, вопрос по поводу порядка координат в json.
Есть спецификация geojson в которой говориться, что порядок следования координат long, lat. Если с сервера приходит geoJson согласно этой спецификации, то на клиенте приходится разворачивать координаты, это связанно с тем что geoQuery ожидает порядок lat, long. Однако большинство библиотек формирующих geoJson следуют спецификации. Результат геокодера yandex также возвращает специфицированный json. Так вот вопрос, есть ли способ поменять ожидаемый яндексом порядок координат в json?
P.S. По поводу задать coordorder=longlat при подключении api - не очень, ибо работать непосредственно с координатами хочеться всё таки в формате latlon, как и принято в большинстве геосистем.

1 комментарий
geojson,API 2.1,geoQuery
Загрузка данных с помощью JQuery и добавление их на карту
a.chebotareov
4 июня 2014, 15:45
Загрузка данных с помощью JQuery и добавление их на карту

Карта с различными метками, которые выводятся из файла — это один из самых распространенных способов использования API. Сегодня мы опубликовали в Песочнице новый пример для API Яндекс.Карт версии 2.1 — вывод данных из файла на карту с помощью функции JQuery.getJSON().

Загруженные данные представлены в формате GeoJSON. Для их добавления на карту необходимо использовать geoQuery. Обратите внимание, что координаты объектов заданы в последовательности «долгота, широта». Поскольку по умолчанию в API принят порядок «широта, долгота», необходимо при подключении API передать параметр coordorder со значением lotlang. Подробнее об этом можно прочесть в разделе подключение API.

Посмотреть пример в Песочнице. 

Пользуйтесь этим примером и присылайте свои собственные в комментариях. Напоминаем, что в нашем клубе разработчиков, на страничках в Facebook и ВКонтакте можно задавать вопросы на которые отвечают разработчики команды API Яндекс.Карт.

примеры,API 2.1,jQuery,geojson