doc.open-odoo.ru/developer/11.0/ru/howtos/web.html полностью не раскрыта тема реализации данного сервиса.
В Odoo 11 существует модуль Partners Geolocation, где заложены базовый методы для получения координат точки на карте по введенному адресу в модели res.partner.
Перед началом работы с данным сервисом необходимо зарегистрировать на сервисе google и создать ключ согласно developers.google.com/maps/documentation/embed/guide?hl=ru. Данный ключ необходимо сохранить в Настройки -> Общие настройки -> Веб-сайт -> Google Картa -> Ключ API. Для получения в backend отображения карты google необходимо в каталоге проект/static/src/xml/ создать файл google_map.xml c содержимым:
<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
<t t-name="WidgetCoordinates" >
<iframe width="600" height="450" t-attf-src="https://www.google.com/maps/embed/v1/view?key={{googlekey}}¢er={{latitude}},{{longitude}}&zoom=18&language=ru">
</iframe>
</t>
</templates>
и подключить его в __manifest__.py
'qweb': ['static/src/xml/*.xml',],
Для подключения данного файла и передачи ему параметров координат пишем web.Widget:
odoo.define('проект.goole', function (require) {
var rpc=require('web.rpc');
var Widget= require('web.Widget');
var widgetRegistry = require('web.widget_registry');
var GoogleCoordinates = Widget.extend(FieldManagerMixin, {
init: function (parent, model, state) {
this._super(parent);
FieldManagerMixin.init.call(this);
this.partner_latitude=model.data['partner_latitude']; // из формы backend необходимо сохранить в widget координаты точки
this.partner_longitude=model.data['partner_longitude'];
},
start: function () {
var self=this;
rpc.query({ /// получаем ключ google
model:'ir.config_parameter',
method:'get_param',
args:['google_maps_api_key'],
})
.then(function (result) {
self.googlekey=result;
self.display_map(); // рисуем карту
});
},
display_map: function() {
this.$el.html(qweb.render("WidgetCoordinates", { /// подключаем и загружаем в widget шаблон WidgetCoordinates из файла google_map.xml
"latitude": this.partner_latitude || 0,
"longitude": this.partner_longitude || 0,
"googlekey":this.googlekey || '',
}
));
});
widgetRegistry.add('GoogleCoordinates', GoogleCoordinates); // регистрируем виджет
Подключаем виджет GoogleCoordinates в шаблон backend:
................
<page string="Карта Google">
<widget name="GoogleCoordinates"/>
</page>
</notebook>
Читать дальше]]>