Ваше значение c case
Значение по умолчанию для point_zoom
с OSMGeoAdmin
- 14, что похоже на ваше текущее значение. Попробуйте перезаписать point_zoom
в LocationAdmin
. Как объясняется ниже, это должно работать, если вы используете PointField
или MultiPointField
.
Как будет определяться уровень масштабирования:
Уровень масштабирования по умолчанию будет зависеть от нескольких разных факторов:
- Если нет данных для отображения (например, вы смотрите на новый экземпляр), будет использоваться
default_zoom
. Это можно установить следующим образом:
class LocationAdmin(admin.OSMGeoAdmin):
default_zoom = 5
- Если мы используем поля
PointField
или MultiPointField
, тогда похоже, что вместо point_zoom
будет использоваться значение default_zoom
. Это может быть установлено следующим образом:
class LocationAdmin(admin.OSMGeoAdmin):
point_zoom = 10
- В противном случае уровень масштабирования будет установлен автоматически в зависимости от границ данных.
Почему в этом случае?
Если вы посмотрите исходный код, вы увидите следующее в js файле, который запускает это представление администратора:
// django/contrib/gis/templates/gis/admin/openlayers.js
var wkt = document.getElementById('{{ id }}').value;
if (wkt){
...
// Zooming to the bounds.
{{ module }}.map.zoomToExtent(admin_geom.geometry.getBounds());
if ({{ module }}.is_point){
{{ module }}.map.zoomTo({{ point_zoom }});
}
} else {
{% localize off %}
{{ module }}.map.setCenter(new OpenLayers.LonLat({{ default_lon }}, {{ default_lat }}), {{ default_zoom }});
{% endlocalize %}
}
Это означает, что:
- если мы не имеем дело с данными, то мы находимся в предложении else в приведенном выше коде. В самом конце строки видно, что используется
default_zoom
. - Если мы используем поля
PointField
или MultiPointField
, то {{module}}.is_point
истинно, и, как видно, point_zoom
. - Если ни одно из вышеперечисленных случаев не выполняется, мы видим, что выполняется следующее:
zoomToExtent(admin_geom.geometry.getBounds())
.