-1
我正在研究一個模塊,該模塊將允許用戶在Google地圖上查看車輛的地理位置。我迄今已成功通過將座標傳遞給Maps的JavaScript來在新選項卡上顯示地圖。現在我需要在彈出窗口中顯示該地圖,以便用戶不必離開odoo選項卡即可獲取信息。Odoo - 顯示Popup內的谷歌地圖片段
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>
什麼是您的問題? – geocodezip
@geocodezip,我剛剛解決了這個問題,我試圖以odoo的形式顯示一張小地圖。爲此,我使用了標記,但它仍然有效,但仍存在一些問題:「http:// localhost:63342/odoo/geolocation/google_map.html?longitude = 34.681178 & latitude = -1.925503 & key = AIzaSyAZkVmtvhuKp9U34DlKIicoW3CVEAuM0zM」 '包含2個變量的經度和態度,我需要從模型中獲得,你有什麼想法如何做到這一點? –
Blkwtch
這樣做的最好方法是通過一些python函數解析xml/html,一旦用戶點擊一個名爲**的按鈕,就會執行該函數。定位** – Blkwtch