我正在开发一个模块,允许用户在Google地图上查看车辆的地理位置。到目前为止,我已成功通过将坐标传递给Maps的JavaScript来在新选项卡上显示地图。现在我需要在弹出窗口中显示该地图,以便用户不必离开odoo选项卡以获取信息。
google_map.html
<html>
<head>
<title>Localisation de vehicule</title>
<style>
html, body { height: 100%;
margin: 0;
padding: 0; }
#map { height: 100%; }
</style>
<script>
function initMap() {
var querystring = window.location.querystring;
var mylong = location.search.slice(11,location.search.indexOf("&"));
var mylati = location.search.slice(location.search.indexOf("latitude=")+9,location.search.indexOf("&key"))
var myLatLng = {lat: Number(mylong), lng: Number(mylati)};
var map = new google.maps.Map(document.getElementById('googleMap'), {
zoom: 8,
center: myLatLng
});
var marker = new google.maps.Marker({
position: myLatLng,
map: map
});
}
</script>
</head>
<body>
<div id="map">
</div>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCf-h2Od2097sfJ14DrgUv3ctmcTe1oHy4&callback=initMap"> </script>
</body>
</html>
geolocation.py
# -*- coding: utf-8 -*-
from openerp import models, fields, api
class Vehicle(models.Model):
_name = 'tt.vehicle'
name = fields.Char(string="Name")
longitude = fields.Char(string="Longitude", required="True", default="51.6643335")
latitude = fields.Char(string="Latitude", required="True", default="19.2976092")
matriculate = fields.Char(string="Matricule", default="58924/A/48")
# location = fields.Char(string="Coordonnées géographiques", compute="tt_return_location")
@api.multi
def tt_locate_vehicle(self):
return{
"type": "ir.actions.act_url",
"url": "http://localhost:63342/odoo/geolocation/google_map.html?longitude=" + self.longitude + "&latitude=" + self.latitude + "&key=AIzaSyAZkVmtvhuKp9U34DlKIicoW3CVEAuM0zM",
"target": "new",
}
geolocation.xml
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<!--Tree view vehicule-->
<record model="ir.ui.view" id="vehicle_list_view">
<field name="name">vehicle.tree</field>
<field name="model">tt.vehicle</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="matriculate"/>
<field name="longitude"/>
<field name="latitude"/>
</tree>
</field>
</record>
<!--From view vehicule-->
<record model="ir.ui.view" id="vehicle_form_view">
<field name="name">vehicle.form</field>
<field name="model">tt.vehicle</field>
<field name="arch" type="xml">
<form string="vehicle_form">
<sheet>
<group string="Information sur vehicule" colspan="4">
<field name="name"/>
<field name="matriculate"/>
<field name="longitude"/>
<field name="
<button name="tt_locate_vehicle" string="Localiser" type="object" class="oe_highlight"/>
<button name="tt_show_popup" string="popup" type="object" class="oe_
</group>
<div>
<object type="text/html" data="https://www.google.com/" width="800px" height="600px" style="overflow:auto;border:5px ridge blue"><object>
</div>
</sheet>
</form>
</field>
</record>
<menuitem id="main_geolocation_menu" name="Géolocalisation"/>
<menuitem id="geolocation_menu" name="Géolocalisation" parent="main_geolocation_menu"/>
<menuitem id="geolocation_vehicle_menu" name="Géolocalisation des vehicules" parent="geolocation_menu" action="vehicle_action_view"/>
</data>
</openerp>
答案 0 :(得分:0)
我刚刚解决了,我试图以odoo形式展示一张小地图。为此,我使用了<style name="AppTheme" parent="Theme.AppCompat">
标签:
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">