2015-10-19 3 views
1

Мне нужно изменить базовую карту, отображаемую при просмотре географических данных на страницах администратора. В настоящее время он использует openstreetmap. Я хотел бы использовать карты BING через их API. Я успешно сделал это в другой части моего приложения, но не могу понять, как это сделать в интерфейсе администратора.Django Admin - используйте Bing Maps вместо OSM

Есть ли у кого-нибудь пример, который я мог бы использовать? Это даже не должно быть bing-картами, просто все, что переопределяет карту по умолчанию.

спасибо!

ответ

1

This Сайт предоставляет пример того, как это сделать с помощью Mapquest вместо плиток OSM. Хотя я не адаптировал его для Bing, я адаптировал его для работы с Django 1.8.6, работающим на Python 3.5.0.

Для его работы потребуется создание (или изменение существующего) шаблона администратора Django, но OpenLayers предоставляет страницу html, которую вы можете использовать для ссылки Bing. У меня недостаточно опыта работы с OpenLayers, чтобы знать, как это сделать.

В основном:

  • Подкласс GeoModelAdmin, и указывать на новый шаблон путем редактирования admin.py (подробнее об этом в GeoDjango документации), и заменить GeoTest с названием вашей модели:

    class BingGeoAdmin(django.contrib.gis.admin.GeoModelAdmin): 
        map_template = 'gis/admin/bing.html' 
    
    admin.site.register(GeoTest, BingGeoAdmin) 
    
  • Создайте bing.js с использованием существующего osm.js Django в качестве ссылки, которая включает в себя изменение блока base_layer на новый слой Bing.

  • Создание шаблона bing.html, указывающего на файл bing.js.
+0

Большое спасибо за ваш ответ. Мы еще не закончили изменение, но именно поэтому я не повторил, но ваша идея выглядит великолепно. – LindaM