Пользовательский SRID в Django-Leaflet - PullRequest
0 голосов
/ 12 апреля 2019

У меня проблемы с указанием пользовательского SRID с помощью django-leaflet .

Документация о проекциях не очень подробная и упоминается лишь кратко:

По умолчанию, django-leaflet попытается загрузить пространственную привязку из ваших статических файлов в «proj4js / {{srid}}. Js».В случае сбоя он в конечном итоге будет полагаться на пространственный_референт. Org.

Я следовал django-leaflet рекомендациям по установке и добавил SRID, используемый в моих данных в PostGIS, следующим образом:

LEAFLET_CONFIG = {
    'SRID': 2056,  # See http://spatialreference.org
    'DEFAULT_CENTER': (46.800663464, 8.222665776),
    'DEFAULT_ZOOM': 7,
    'MIN_ZOOM': 1, 
    'MAX_ZOOM': 20, 
}

Но в Chrome возникают следующие ошибки:

uncaught exception: Leaflet and proj4 must be loaded first
The script from “http://127.0.0.1:8000/static/proj4js/2056.js” was loaded even though its MIME type (“text/html”) is not a valid JavaScript MIME type.
Loading failed for the <script> with source “http://127.0.0.1:8000/static/proj4js/2056.js”. 
uncaught exception: No projection definition for code EPSG:2056

У меня есть leaflet в INSTALLED_APPS, а также загружаются proj4.js и proj4leaflet.js на моей страницеhead.

<!DOCTYPE html>
{% load static %} 
{% load leaflet_tags %}

<html lang="en">
    <head>
        {% leaflet_js %}
        {% leaflet_css %}
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-ajax/2.1.0/leaflet.ajax.js"></script>
        <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.5.0/proj4.js"></script>
        <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/proj4leaflet/1.0.2/proj4leaflet.min.js"></script>

        <meta charset="utf-8">
        <style>
            .leaflet-container { 
                width:  600px;
                height: 400px;
            }       
            #specialbigmap {
                height: 800px;
            }   
            .django-leaflet-raw-textarea {
                width: 100%;
            }
        </style>
    </head>
    <body>          
        <script type="text/javascript">
            function map_init_basic (map, options) {                

                $.getJSON( "http://127.0.0.1:8000/en/api/mydata/?name=my_data1", function( data ) {
                    mygeojson = data.results
                    L.geoJSON(mygeojson).addTo(map);
                    });        
            }
        </script>

        {% leaflet_map "my_django_leaflet_map" callback="window.map_init_basic" %}          
    </body>
</html>

Я попытался запустить collectstatic, как предлагалось здесь , но ошибки сохраняются (и я сомневаюсь, что collectstatic следует даже использовать в разработке).Любые предложения, чтобы сделать эту работу?

...