2016-03-06 37 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>