OdooWiki OCA HUB

Google Map View Drawing Mixin

web_widget_google_map_drawing folder_open OCA/geospatial open_in_new
Extra Tools Licencia: AGPL-3

Este módulo amplía la vista web de Google Map en Odoo para permitir a los usuarios dibujar polígonos, rectángulos y círculos en el mapa.

[](https://youtu.be/DDUFT6XP8AU "Demo")

Puedes encontrar más información sobre las herramientas de dibujo aquí

Este módulo admitirá tres tipos de formas:

  • Rectángulo
  • Polígono
  • Círculo

Traducción automática al español (DeepSeek) de la descripción original de OCA, que está en inglés.

auto_awesome Qué hace este módulo

Generado por IA a partir del código · Odoo 12.0

Añade herramientas de dibujo a la vista de Google Map en Odoo, permitiendo a los usuarios dibujar un polígono, rectángulo o círculo en un campo de mapa y almacenar su forma, área o radio.

Este módulo amplía la vista de Google Map para que se pueda usar un campo de mapa para dibujar una forma directamente en el mapa en lugar de escribir coordenadas.

  • Un nuevo tipo de campo, map_drawing_shape, está disponible para campos de texto. En modo edición muestra un mapa de Google con controles de dibujo en la parte inferior para círculo, polígono y rectángulo.
  • Después de dibujar, la forma permanece editable: los usuarios pueden arrastrarla, mover sus puntos o cambiar su radio, y el valor almacenado se actualiza automáticamente.
  • Solo se permite una forma por campo; intentar dibujar una segunda muestra una advertencia.
  • Un botón de papelera en el mapa elimina la forma seleccionada.
  • El módulo almacena el tipo de forma, su área (para polígonos), su radio (para círculos) y las coordenadas de path/bounds/center. Un método auxiliar decode_shape_paths convierte el texto almacenado de nuevo en datos utilizables.
  • En modo de solo lectura, la forma guardada simplemente se muestra en el mapa.

Dónde aparece: - En Settings, bajo la sección Google Maps, una nueva casilla "Drawing" activa o desactiva la librería de dibujo de Google Maps. Esta configuración se guarda como el parámetro del sistema google.maps_libraries. - El widget de dibujo se añade a los assets de backend de la vista de Google Map.

Modelos afectados: google.map.drawing.shape.mixin (un mixin abstracto que proporciona los campos de forma) y res.config.settings para la opción Drawing. Los derechos de acceso se conceden a todos los usuarios internos.

Modelos y campos (2)
  • res.config.settings · amplía un modelo existentegoogle_maps_drawing (Drawing)
  • google.map.drawing.shape.mixin · modelo nuevoshape_area (Area), shape_name (Name), shape_type (Type), shape_paths (Paths), shape_radius (Radius), shape_description (Description)

Texto generado por IA (DeepSeek) al leer el código de la versión 12.0 en GitHub; puede contener errores, así que verifícalo en el código antes de decidir. Ver el código en GitHub

Disponibilidad por versión

Revisado: 2026-11-03
Confirmado (verificado en repositorio y rama) Estimado (sin verificar) Sin información

Estado de confirmación: 1 confirmada, 8 sin información de 9 versiones.

terminal Instalación y uso

Documentación de OCA · Odoo 12.0

Este módulo proporciona un framework extensible y no puede usarse por sí solo. A continuación se ofrece información sobre cómo implementarlo para tu propio módulo.

Drawing Mixin

Para facilitar la implementación de esta funcionalidad, se ha definido una clase mixin que puedes usar en tu modelo

class GoogleMapDrawingShapeMixin(models.AbstractModel):
    _name = 'google.map.drawing.shape.mixin'
    _description = 'Google Maps Shape Mixin'
    _rec_name = 'shape_name'

    shape_name = fields.Char(string='Name')
    shape_area = fields.Float(string='Area')
    shape_radius = fields.Float(string='Radius')
    shape_description = fields.Text(string='Description')
    shape_type = fields.Selection([
        ('circle', 'Circle'),
        ('polygon', 'Polygon'),
        ('rectangle', 'Rectangle')],
        string='Type', default='polygon', required=True)
    shape_paths = fields.Text(string='Paths')

    @api.multi
    def decode_shape_paths(self):
        self.ensure_one()
        return safe_eval(self.shape_paths)

Cómo usar el widget

<field name="shape_paths" widget="map_drawing_shape"/>

Cómo cargar forma(s) en la vista map

<record id="view_res_partner_area_map" model="ir.ui.view">
    <field name="name">view.res.partner.area.map</field>
    <field name="model">res.partner.area</field>
    <field name="arch" type="xml">
        <map library="drawing" string="Shape">
            <field name="partner_id"/>
            <field name="shape_name"/>
            <field name="shape_description"/>
            <field name="shape_type"/>
            <field name="shape_radius"/>
            <field name="shape_area"/>
            <field name="shape_paths"/>
            <templates>
                <t t-name="kanban-box">
                    <div class="oe_kanban_global_click">
                        <div class="oe_kanban_details">
                            <strong class="o_kanban_record_title oe_partner_heading">
                                <field name="shape_name"/>
                            </strong>
                            <div>
                                <field name="shape_description"/>
                            </div>
                            <div attrs="{'invisible': [('shape_type', 'not in', ['rectangle', 'polygon'])]}">
                                Area: <field name="shape_area"/>
                            </div>
                            <div attrs="{'invisible': [('shape_type', '!=', 'circle')]}">
                                Radius: <field name="shape_radius"/>
                            </div>
                        </div>
                    </div>
                </t>
            </templates>
        </map>
    </field>
</record>

Traducción automática al español (DeepSeek) de la documentación original de OCA; los comandos y el código no se traducen. Sin información verificada en OCA: Instalación, Configuración.

info

Datos importados de GitHub: esta ficha refleja la última revisión del catálogo, no una consulta en directo. Verifica siempre en la documentación del módulo y en staging antes de instalar en producción.