OpenERP|ODOO高德地图应用

发布时间:2015-04-06 11:01:37来源:http://www.chinamaker.net
 在openerp中的fleet模块,每一个车辆都有地图应用。默认采用的是谷歌地图,但是在应用得时候如果想换其他的地图该怎么做那?以下我们以国内市 面上比较流行的高德地图为例,给大家分析一下如何换地图。
    一,openerp的地图设计思路
    openerp的地图应用是运用qweb来实现的。在xml中声明一个div,然后在js中初始化地图放到声明的div里即可。在js中会把这一系列的初 始化地图,加载等动作注册为一个openerp的widget。最后在相关的视图页面引用这个widget即可。所有,我们如果要运用新的地图,我们只需 要修改地图相关的js和xml即可。
    二,高德地图实现
    在进行修改之前,我们首先要把高德地图的javascript的api复制到一个静态文件之中。然后在进行如下代码的修改,修改完后在__open
erp__.py中导入gaodeapi.js,gaode.js,gaode.xml即可。
    gaode.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <templates xml:space="preserve">
    <t t-name="WidgetGaodeCoordinates">
           <div id="container" class="gaode"></div>
    </t>
    </templates>

    gaode.js:
    openerp.fleet = function(instance) {
    var _t = instance.web._t,
        _lt = instance.web._lt;
    var QWeb = instance.web.qweb;
    instance.fleet = {};
    instance.web.form.widgets.add(‘color‘, ‘instance.oepetstore.FieldColor‘);
    instance.fleet.WidgetGaodeCoordinates = instance.web.form.FormWidget.extend({
        init: function() {
            this._super.apply(this, arguments);
        },
        start: function() {
            this._super();
            this.field_manager.on("field_changed:provider_latitude", this, this.display_map);
            this.field_manager.on("field_changed:provider_longitude", this, this.display_map);
            this.on("change:effective_readonly", this, this.display_map);
            this.display_map();
        },

        display_map: function() {
            var self = this;
            var provider_latitude = this.field_manager.get_field_value("provider_latitude");
            var provider_longitude = this.field_manager.get_field_value("provider_longitude");
            this.$el.html(QWeb.render("WidgetGaodeCoordinates", {
                "latitude": provider_latitude || 0,
                "longitude": provider_longitude || 0,
            }));
            var mapObj = new AMap.Map("container");

            mapObj.plugin(["AMap.ToolBar","AMap.OverView","AMap.Scale"],function(){
                //加载工具条
                tool=new AMap.ToolBar({
                  direction:false,//隐藏方向导航
                  ruler:false,//隐藏视野级别控制尺
                  autoPosition:false//禁止自动定位
                });
                mapObj.addControl(tool);
                //加载鹰眼
                view=new AMap.OverView();
                mapObj.addControl(view);
                //加载比例尺
                scale=new AMap.Scale();
                mapObj.addControl(scale);
              });  

            var marker = new AMap.Marker({
                id:"m",
                position:new AMap.LngLat(provider_latitude,provider_longitude),
                offset: new AMap.Pixel(-8,-34),
                icon: "http://webapi.amap.com/static/images/marker_sprite.png",
                level: 15
            });
            var point = new AMap.LngLat(provider_latitude, provider_longitude);
            mapObj.setCenter(point);
            mapObj.addOverlays(marker);
        },
    });
    instance.web.form.custom_widgets.add(‘coordinates‘, ‘instance.fleet.WidgetGaodeCoordinates‘);
}
时间: 2025-01-03 08:27:40

OpenERP|ODOO高德地图应用的相关文章

【API】高德地图API JS实现获取坐标和回显点标记

1.搜索+选择+获取经纬度和详细地址 2.回显数据并点标记 3.实现 第一步:引入资源文件 <!--引入高德地图JSAPI --><script src="//webapi.amap.com/maps?v=1.3&key=在官网申请一个key"></script><!--引入UI组件库(1.0版本) --><script src="//webapi.amap.com/ui/1.0/main.js">

js中实现高德地图坐标经纬度转百度地图坐标

1 function tobdMap(x, y) { 2 var x_pi = 3.14159265358979324 * 3000.0 / 180.0; 3 var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi); 4 var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi); 5 var bd_lon = z * Math.cos(theta) + 0.00

使用高德地图api导入行政区域及经纬度

高德地图提供了行政区域及经纬度查询api 参考如下链接 高德地图行政区域api 具体实现代码如下 package com.test; import java.util.HashMap;import java.util.Map; import org.json.JSONArray;import org.json.JSONObject; import jvc.util.DBUtils;import jvc.util.NetUtils;import jvc.util.db.Insert; public

IOS原生地图与高德地图

原生地图 1.什么是LBS LBS: 基于位置的服务   Location Based Service 实际应用:大众点评,陌陌,微信,美团等需要用到地图或定位的App 2.定位方式 1.GPS定位      2.基站定位      3.WIFI定位 3.框架 MapKit:地图框架,显示地图 CoreLocation:定位框架,没有地图时也可以使用定位. 4.如何使用原生地图<MapKit> 和定位<CoreLocation> MapKit: 1) 初始化MapView _map

利用高德地图完成用户地图选址,包括搜索位置和标签固定居中

这两天一直捣鼓着地图的选址功能,需要达到的要求是:1,能用户定位  2,大头针固定在地图中心,拖动地图停止后获取到该大头针的位置信息    3,能通过搜索框搜索到我们输入的地址 主要思路:大头针分为两个   一个是用户的位置大头针  另一个是所选取的位置的大头针(包括拖动后的大头针和搜索功能查找到位置的大头针,公用一个大头针  )并且两个大头针都成为控制器器属性. 我使用到的高德地图sdk是: 'AMap3DMap' , '5.2.1' #高德3D地图 'AMapSearch' , '5.2.1

高德地图

准备 1 注册成为开发者 http://lbs.amap.com/ 2 进入开发者中心控制台 3 创建新应用 4 添加新key 如何引入高德地图到你的项目 1 页面直接引入 <script type="text/javascript" src="http://webapi.amap.com/maps?v=1.3&key=您申请的key值"></script> 2 异步加载 <script src="http://web

高德地图api实现地址和经纬度的转换(python)

利用高德地图web服务api实现地理/逆地址编码 api使用具体方法请查看官方文档 文档网址:http://lbs.amap.com/api/webservice/guide/api/georegeo/ 1.利用python第三方库requests实现 Requests库文档地址:http://www.python-requests.org/en/master/ 1 #!/usr/bin/env python3 2 #-*- coding:utf-8 -*- 3 ''' 4 利用高德地图api实

高德地图API INVALID_USER_SCODE问题以及keystore问题

今天这篇文章会给大家介绍三个问题: 1,接入API时出现invalid_user_scode问题 首先进行第一个大问题,接入高德地图API时出现invalid_user_scode问题 因为项目需要接入高德地图的API,在接入其它API时会出现类似问题,在进行定位的时候出现了下列问题 运行时log信息如下 可以看到,定位失败有两个原因: 1,错误代码为10,定位服务启动失败. 2,错误代码为7,key错误. 根据高德地图的官方使用文档的介绍,对相关问题进行处理 问题1:服务启动失败:检查清单配置

高德地图返回地址详细信息

个人习惯,上图 关于高德地图自动定位返回地址详细信息一直没写,一方面太忙了(也可以说太懒了),另一方面这个地方的内容太少,因为项目后面会用到快速搜索提示,往地图中添加marker.以及导航以及语音提示等等 本来想等项目上线在好好总结一下,算了不想拖了, 上代码: package com.example.mydemo; import android.app.Activity;import android.location.Location;import android.os.Bundle;impo