Листовка с 2ГИС в качестве провайдера, ошибка добавления файла Geojson - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь использовать 2ГИС в качестве поставщика листов и карт и листовки для интерфейса веб-карты.По выходным работает отлично.Но я пытаюсь открыть GeoJson, и он не работает.Я пытаюсь использовать листовки с командами для GeoJson и фоном плиток 2GIS.У меня ошибка:

index.html: 60 Uncaught TypeError: DG.geoJson не является функцией в Object.success (index.html: 60) в i (jquery.min.js: 2) в Object.fireWith [as resolWith] (jquery.min.js: 2) в z (jquery.min.js: 4) в XMLHttpRequest.(jquery.min.js: 4)

<!DOCTYPE html>
<html lang="en">

    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
        <script src="https://maps.api.2gis.ru/2.0/loader.js?pkg=full"></script>
        <link rel="stylesheet" href="https://unpkg.com/leaflet@1.4.0/dist/leaflet.css" />
        <script src="https://unpkg.com/leaflet@1.4.0/dist/leaflet.js"></script>


        <title>GoldMan App</title>

        <style>
            #map {
                width: 960px;
                height:550px;
            }

        </style>

    </head>

    <body>
        <div id="map"></div>
        <script type="text/javascript">
            //var map;

            DG.then(function () {
                var map = DG.map('map', {
                    center: [35.126411,33.429859],
                    zoom: 9
                });

                DG.marker([35.18,33.35]).addTo(map).bindPopup('Cyprus/Nicosia');
            });


            // loading GeoJSON file - Here my html and PicnicSites.geojson file resides in same folder
            $.getJSON("PicnicSites.geojson",function(data){
                // L.geoJson function is used to parse geojson file and load on to map
                DG.geoJson(data).addTo(map);
            });

        </script>

    </body>

</html>

enter image description here

1 Ответ

0 голосов
/ 10 февраля 2019

Эта ошибка возникает, поскольку 2GIS библиотека еще не загружена после вызова DG.geoJson.Согласно документации методы API Карт необходимо вызывать асинхронно, например:

DG.then(function() {
    var map = DG.map("map", {
      center: [35.126411, 33.429859],
      zoom: 9
    });

    DG.marker([35.18, 33.35])
      .addTo(map)
      .bindPopup("Cyprus/Nicosia");

    $.getJSON("PicnicSites.geojson", function(data) {
      DG.geoJson(data).addTo(map);
    });
  });

Демо

  DG.then(function() {
        var map = DG.map("map", {
          center: [35.126411, 33.429859],
          zoom: 9
        });

        DG.marker([35.18, 33.35])
          .addTo(map)
          .bindPopup("Cyprus/Nicosia");

         $.getJSON("https://gist.githubusercontent.com/vgrem/734ffa9f457d42ff8ff2a127530135c2/raw/91352a9b9fc7d7302f643636145ad37817b96992/data,json", function(data) {
         
          DG.geoJson(data).addTo(map);
        });
      });
   #map {
        width: 960px;
        height: 550px;
      }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
    <script src="https://maps.api.2gis.ru/2.0/loader.js?pkg=full"></script>
    <link
      rel="stylesheet"
      href="https://unpkg.com/leaflet@1.4.0/dist/leaflet.css"
    />
    <script src="https://unpkg.com/leaflet@1.4.0/dist/leaflet.js"></script>
<div id="map"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...