2016-03-06 80 views
-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> 
+0

什么是您的问题? – geocodezip

+0

@geocodezip,我刚刚解决了这个问题,我试图以odoo的形式显示一张小地图。为此,我使用了标记,但它仍然有效,但仍存在一些问题:“http:// localhost:63342/odoo/geolocation/google_map.html?longitude = 34.681178 & latitude = -1.925503 & key = AIzaSyAZkVmtvhuKp9U34DlKIicoW3CVEAuM0zM” '包含2个变量的经度和态度,我需要从模型中获得,你有什么想法如何做到这一点? – Blkwtch

+0

这样做的最好方法是通过一些python函数解析xml/html,一旦用户点击一个名为**的按钮,就会执行该函数。定位** – Blkwtch

回答

0

我刚收到我t解决了,我试图以odoo的形式显示一张小地图。为此,我使用了<ifram>这样的标签:

<div> 
           <iframe src="http://localhost:63342/odoo/geolocation/google_map.html?longitude=34.681178&amp;latitude=-1.925503&amp;key=AIzaSyAZkVmtvhuKp9U34DlKIicoW3CVEAuM0zM" width="825px" height="500px" frameborder="0"></iframe> 
          </div>