将leaflet.js库与odoo集成并添加新的“leaflet_map”视图,用于显示标记。
项目描述
此模块扩展了odoo视图,以添加一种新的视图,名为leaflet_map,它使用Leaflet JavaScript库来使用地图。(https://leaflet.npmjs.net.cn/)此库例如在OpenStreetMap项目中使用。(https://www.openstreetmap.org/)
您可以在同一OCA存储库中的模块web_view_leaflet_map_partner中看到一个简单的用法,如果定义了纬度和经度,则在该地图上显示您的联系信息。(要定义纬度和经度,请参阅Odoo模块base_geolocalize)
重要提示
JavaScript库是开源的,并按照BSD 2许可证分发。请参阅: https://github.com/Leaflet/Leaflet/blob/main/LICENSE 因此,您可以自由使用它。
但是,显示地图需要显示由瓦片服务器提供的图层,这需要资源。
测试目的
您可以使用openStreetMap的URL https://tile.openstreetmap.org/{z}/{x}/{y}.png 或其他,列在该页上: https://wiki.openstreetmap.org/wiki/Tile_servers
除非常限的测试目的外,您不应使用OpenStreetMap.org本身提供的瓦片。OpenStreetMap是一个由志愿者运营的非营利组织,无法为大规模商业用途提供瓦片。
常规/高使用率
您可以联系以下公司之一: https://switch2osm.org/providers/
您还可以自行安装自己的瓦片服务器。请参阅文档: https://switch2osm.org/serving-tiles/
目录
配置
转到设置 > 技术 > 参数 > 系统参数
创建或编辑键为 leaflet.tile_url 的参数
作为值,设置您选择的瓦片服务器URL。(见描述)
开发
创建新视图
<record id="view_my_model_map" model="ir.ui.view">
<field name="model">my.model</field>
<field name="arch" type="xml">
<leaflet_map
field_latitude="FIELD_LATITUDE"
field_longitude="FIELD_LONGITUDE"
field_title="FIELD_TITLE"
field_address="FIELD_ADDRESS"
field_marker_icon_image="FIELD_MARKER_ICON_IMAGE"
>
<field name="__last_update"/>
<field name="FIELD_LATITUDE"/>
<field name="FIELD_LONGITUDE"/>
<field name="FIELD_TITLE"/>
<field name="FIELD_ADDRESS"/>
</leaflet_map>
</field>
</record>
FIELD_LATITUDE 和 FIELD_LONGITUDE 是包含模型GPS坐标的字段名称。
FIELD_TITLE 将在弹出窗口显示时用作标题。
FIELD_ADDRESS 将在弹出窗口显示时显示地址。
(可选)FIELD_MARKER_ICON_IMAGE 是放置在标记图标上的图像字段名称。注意:您可以设置额外的设置 marker_icon_size_x、marker_icon_size_y,以定义图像的大小,以及 marker_popup_anchor_x、marker_popup_anchor_y 以定义弹出窗口的位置。
地图选项
default_zoom:定义默认缩放值。(如果未定义,则为7)
max_zoom:定义最大缩放值。(如果未定义,则为19)
zoom_snap:定义每次更改的缩放级别。(如果未定义,则为1)
为模型创建或更新操作
<record id="my_module.action_my_model" model="ir.actions.act_window">
<field name="view_mode">tree,form,leaflet_map</field>
</record>
库更新
目前,该模块嵌入 leaflet.js 库版本 1.8.0(发布于2022年4月18日。)
如果有新版本发布
更新位于 static/lib/leaflet 文件夹中的javascript、css和图像
测试功能
创建拉取请求
地图默认位置
默认情况下,地图位置由用户定义,在函数 get_default_leaflet_position 中。如果已定义,则返回当前公司的位置。您可以在全局或按模型重载此函数。
已知问题/路线图
目前,在地图加载开始时需要调用 invalidateSize()。我们应该调查原因并尝试删除该调用。请参阅 https://github.com/Leaflet/Leaflet/issues/3002#issuecomment-93836022
目前,地图有“标记”并允许显示具有经度和纬度的odoo项目。我们可以想象其他类型的用途,例如线段、多边形等……请参阅所有leaflet选项: https://leaflet.npmjs.net.cn/reference.html
该模块可能无法在移动设备上正常工作。
错误跟踪器
错误在 GitHub Issues 上跟踪。如果遇到问题,请检查是否已报告您的问题。如果您是第一个发现它的人,请帮助我们通过提供详细且受欢迎的 反馈。
请不要直接联系贡献者寻求支持或帮助解决技术问题。
鸣谢
贡献者
Sylvain LE GAL (https://www.twitter.com/legalsylvain)
其他鸣谢
该模块嵌入 Leaflet.js 库。
维护者
该模块由 OCA 维护。
OCA,即 Odoo 社区协会,是一个非营利组织,其使命是支持 Odoo 功能的协作开发并促进其广泛使用。
当前 维护者
本模块是GitHub上OCA/geospatial项目的组成部分。
欢迎您贡献力量。欲了解更多信息,请访问https://odoo-community.org/page/Contribute。
项目详情
哈希值 for odoo12_addon_web_view_leaflet_map-12.0.1.1.0-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1b9cbbc13a7709c28ba195a96405b2a2f2aac7f65d2b461f9f7075bd14e2f943 |
|
MD5 | 32d91137b26e52c800ea30fe11312ccc |
|
BLAKE2b-256 | d2b74e3a2e483448cbcd22c05fe8191dfee44ecbc265b8df221ac89e4faf07fc |