chr*_*mbo 6 django django-admin geodjango openstreetmap
我最近一直在研究 GeoDjango,我正在努力自定义管理部分中显示的 openstreet 地图的默认缩放级别。以下是我尝试过的,但没有效果,请帮助。
from django.contrib.gis import admin
class LocationAdmin(admin.OSMGeoAdmin):
default_zoom = 5
admin_site.register(ReferenceSpaceLocation, LocationAdmin)
Run Code Online (Sandbox Code Playgroud)
我的模型
class ReferenceSpaceLocation(models.Model):
geometry = models.GeometryField()
Run Code Online (Sandbox Code Playgroud)point_zoomwith的默认值OSMGeoAdmin是 14,这就是你现在的样子。尝试覆盖point_zoom在LocationAdmin。如下所述,如果您正在使用PointField或MultiPointField。
默认缩放级别将取决于几个不同的事情:
default_zoom则将使用 。这可以设置如下:class LocationAdmin(admin.OSMGeoAdmin):
default_zoom = 5
Run Code Online (Sandbox Code Playgroud)
PointField,MultiPointField那么看起来point_zoom将使用该值而不是default_zoom. 这可以设置如下:class LocationAdmin(admin.OSMGeoAdmin):
point_zoom = 10
Run Code Online (Sandbox Code Playgroud)
如果您查看源代码,您将在运行该管理视图的 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 %}
}
Run Code Online (Sandbox Code Playgroud)
这意味着:
default_zoom被使用了。PointFieldor MultiPointFieldthen{{module}}.is_point为真,并且可以看出point_zoom是使用。zoomToExtent(admin_geom.geometry.getBounds())。| 归档时间: |
|
| 查看次数: |
678 次 |
| 最近记录: |