页面中通过iframe将map嵌入
-
创建map页面
创建xml文件,然后在manifest中声明xml
使用template标签,直接写一个maphtml页面,如图:
xml
没想到template还能这样直接塞整个页面进行渲染
这样页面内容使用起来就和普通的html一样了,但是还是可以使用t标签来控制dom显示和获取controller传递过来的变量 -
创建controller渲染页面
controller
页面渲染通过request.render("moudleName.templateId",val),val可以向模板传递参数
-
页面内引用该map
我是通过qweb+widget进行引用的,注册widget,然后qweb中有iframe标签,通过iframe嵌入map
在widget的js方法中可以动态设置iframe的src进行传递一些参数给controller,controller中就可以做很多事情了
map
demo源码
直接通过URL就可以展示map,嵌入odoo内,可通过widget qweb-iframe进行。
网友评论
var core = require("web.core");
var Widget = require("web.Widget");
var HomePage = Widget.extend({
start: function() {
// 百度地图 API 功能
var map = new BMap.Map("all_map"); // 创建 Map 实例
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); // 初始化地图,设置中心点坐标和地图级别
map.addControl(new BMap.MapTypeControl()); //添加地图类型控件
map.setCurrentCity("北京"); // 设置地图显示的城市 此项是必须设置的
map.enableScrollWheelZoom(true); // 开启鼠标滚轮缩放
this.$el.append("<div id='all_map'></div>");
// this.$el.append('<iframe src="http://121.42.136.94/admin/api/show_map_yinhuan" frameBorder="0" width="100%" height="100%"></iframe>')
},
});
core.action_registry.add("homepage", HomePage);
});
<template id="assets_backend" name="petstore_assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<link rel="stylesheet" href="/inspection/static/src/css/height.css"/>
<script t-attf-src="http://api.map.baidu.com/api?v=2.0&ak=O4FGtHyKUFMzdpUfeMARCeEvVl7lv6xd"></script>
<script type="text/javascript" src="/inspection/static/src/js/test.js"></script>
</xpath>
</template>
这是我写的百度地图的例子,为什么我点击 menuitem 的时候总是提示我未定义,请问这样写有什么错误吗