Яндекс.Карты вывод координат из Json файла

283
10 апреля 2018, 04:53

Добрый день! У меня вопрос такой, имеется карта, если посмотреть код, то координаты выставляются в самом скрипте, как эти же координаты выводить из JSON файла?
Как сейчас Как нужно
Данные как видно, я уже вынес в отдельный файл, но как забрать координаты, до этого не могу додуматься( Использую вот это решение , там тоже массив, а нужен как вы поняли из фала.
Подскажите пожалуйста

Answer 1

Данную проблему решил следующим образом.

    function init() {
    var myMap = new ymaps.Map('msk_map',{
        center: [55.7, 37.5],
        zoom: 9,
        controls: ['zoomControl']
    }), 
    myCollection = new ymaps.GeoObjectCollection();
    $.getJSON('js/data.json', function(data) {
        for (var i in data.departments) {
            //Именно тут указываем координаты
            myPoints = [{
                coords: [
                    data.departments[i].lat, // широта
                    data.departments[i].lon  // Долгота
                ],
                text: data.departments[i].title
            }]
            // Перебор
            for (var i = 0, l = myPoints.length; i < l; i++) {
                var point = myPoints[i];
                myCollection.add(new ymaps.Placemark(point.coords,{
                    balloonContentBody: point.text
                }));
            }
            // Добавляем коллекцию меток на карту.
            myMap.geoObjects.add(myCollection);
            // Создаем экземпляр класса ymaps.control.SearchControl
            var mySearchControl = new ymaps.control.SearchControl({
                options: {
                    // Заменяем стандартный провайдер данных (геокодер) нашим собственным.
                    provider: new CustomSearchProvider(myPoints),
                    // Не будем показывать еще одну метку при выборе результата поиска,
                    // т.к. метки коллекции myCollection уже добавлены на карту.
                    noPlacemark: true,
                    resultsPerPage: 5
                }
            });
        }
        // Провайдер данных для элемента управления ymaps.control.SearchControl.
        // Осуществляет поиск геообъектов в по массиву points.
        // Реализует интерфейс IGeocodeProvider.
        function CustomSearchProvider(points) {
            this.points = points;
        }
        // Провайдер ищет по полю text стандартным методом String.ptototype.indexOf.
        CustomSearchProvider.prototype.geocode = function(request, options) {
            var deferred = new ymaps.vow.defer()
              , geoObjects = new ymaps.GeoObjectCollection()
              , // Сколько результатов нужно пропустить.
            offset = options.skip || 0
              , // Количество возвращаемых результатов.
            limit = options.results || 20;
            var points = [];
            // Ищем в свойстве text каждого элемента массива.
            for (var i = 0, l = this.points.length; i < l; i++) {
                var point = this.points[i];
                if (point.text.toLowerCase().indexOf(request.toLowerCase()) != -1) {
                    points.push(point);
                }
            }
            // При формировании ответа можно учитывать offset и limit.
            points = points.splice(offset, limit);
            // Добавляем точки в результирующую коллекцию.
            for (var i = 0, l = points.length; i < l; i++) {
                var point = points[i]
                  , coords = point.coords
                  , text = point.text;
                geoObjects.add(new ymaps.Placemark(coords,{
                    name: text + ' name',
                    description: text + ' description',
                    balloonContentBody: '<p>' + text + '</p>',
                    boundedBy: [coords, coords]
                }));
            }
            deferred.resolve({
                // Геообъекты поисковой выдачи.
                geoObjects: geoObjects,
                // Метаинформация ответа.
                metaData: {
                    geocoder: {
                        // Строка обработанного запроса.
                        request: request,
                        // Количество найденных результатов.
                        found: geoObjects.getLength(),
                        // Количество возвращенных результатов.
                        results: limit,
                        // Количество пропущенных результатов.
                        skip: offset
                    }
                }
            });
            return deferred.promise();
        }
    });
    // Заполняем коллекцию данными.
    // Возвращаем объект-обещание.
};
ymaps.ready(init);

Пример JSON файла

{
"new" : "test" ,
"departments": 
    [
        {
        "lat": "55.791901",
        "lon": "37.626301",
        "title": "СУЩЁВСКИЙ"
        }
    ]
}
READ ALSO
js запросы на сайт

js запросы на сайт

как нажать к примеру на кнопку на чужом сайте <span class="left_label inl_bl">кнопка</span>со своего ресурса или локального компьютера с помощью javascript?...

193
Не работает slick slider

Не работает slick slider

ЗдравствуйтеУстановил slick slider на сайт

184
Интерполяция строк es6, ошибка в gulp4

Интерполяция строк es6, ошибка в gulp4

Суть проблемы такова, что при использовании интерполяции, gulp выдает ошибку следующего содержания

236
Хром прекращает выполнение скрипта

Хром прекращает выполнение скрипта

Доброго времени суток! Проблема в следующем, есть страница, которая автоматически обновляется сразу после загрузкиВсё работает, однако,...

205