RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 811660
Accepted
Азамат Шарафутдинов
Азамат Шарафутдинов
Asked:2020-04-09 20:07:09 +0000 UTC2020-04-09 20:07:09 +0000 UTC 2020-04-09 20:07:09 +0000 UTC

Yandex.Maps 显示来自 Json 文件的坐标

  • 772

下午好!我的问题是,有一个地图,如果你看代码,那么坐标是在脚本本身中设置的,我怎样才能从 JSON 文件中显示相同的坐标?
就像现在 在此处输入图像描述 一样 应该是这样
在此处输入图像描述 可以看到,我已经把数据放到了一个单独的文件里,但是想不出坐标怎么取(我用这个方案,还有一个数组,但是我需要它,正如你从文件中理解的那样。
请告诉我

javascript
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Азамат Шарафутдинов
    2020-04-09T20:51:34Z2020-04-09T20:51:34Z

    这个问题是通过以下方式解决的。

        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": "СУЩЁВСКИЙ"
            }
        ]
    }
    
    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    是否可以在 C++ 中继承类 <---> 结构?

    • 2 个回答
  • Marko Smith

    这种神经网络架构适合文本分类吗?

    • 1 个回答
  • Marko Smith

    为什么分配的工作方式不同?

    • 3 个回答
  • Marko Smith

    控制台中的光标坐标

    • 1 个回答
  • Marko Smith

    如何在 C++ 中删除类的实例?

    • 4 个回答
  • Marko Smith

    点是否属于线段的问题

    • 2 个回答
  • Marko Smith

    json结构错误

    • 1 个回答
  • Marko Smith

    ServiceWorker 中的“获取”事件

    • 1 个回答
  • Marko Smith

    c ++控制台应用程序exe文件[重复]

    • 1 个回答
  • Marko Smith

    按多列从sql表中选择

    • 1 个回答
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Suvitruf - Andrei Apanasik 什么是空? 2020-08-21 01:48:09 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5