将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
目前,地图有“标记”并允许显示如果经纬度可用。我们可以想象其他类型的用法,例如线、多边形等。请参阅所有 leaflet 选项:https://leaflet.npmjs.net.cn/reference.html
错误跟踪器
错误在 GitHub Issues 上跟踪。如果遇到问题,请检查是否已报告您的问题。如果您是第一个发现它的,请通过提供详细且受欢迎的 反馈 来帮助我们解决问题。
请不要直接联系贡献者以获取支持或帮助解决技术问题。
致谢
贡献者
Sylvain LE GAL (https://www.twitter.com/legalsylvain)
其他致谢
该模块嵌入 Leaflet.js 库。
维护者
该模块由 OCA 维护。
ODoo社区协会(OCA)是一个非营利组织,其使命是支持Odoo功能的协作开发并推广其广泛使用。
当前维护者
本模块是GitHub上OCA/geospatial项目的组成部分。
欢迎您贡献。有关如何贡献的信息,请访问https://odoo-community.org/page/Contribute。
项目详情
odoo_addon_web_view_leaflet_map-16.0.1.0.0.5-py3-none-any.whl的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 67dac82ba6ea55e40a80d6d85a9e4f5e678e663cbf6f265df06c6dade2d8bd7a |
|
| MD5 | 1a742625d487eff0071b56ec6bd7c427 |
|
| BLAKE2b-256 | dbb0ceec5796bb66e30f164bfb9978a8a83f644168ca9132e72a9c6de2042ac5 |