Skip to Content
Menu
Dette spørgsmål er blevet anmeldt
3 Besvarelser
12255 Visninger

Hello everyone, I am developing a website with controllers, I want to show a map with google maps api javascript for each client, the coordinates of the clients I have in res.partner, how can I pass this data to javascript?. For example

I have next code in the xml and works but the latitude and longitude is fixed

<div id="map"></div>
<script src="https://maps.googleapis.com/maps/api/js?key=Api&amp;callback=initMap"

async="async" defer="defer"></script>
<script>
  var map;
  function initMap() {
  map = new google.maps.Map(document.getElementById('map'), {
  center: {lat: 19.3620379, lng: -99.130065},
  zoom: 12,
  });
  var marker = new google.maps.Marker({
position: {lat:  19.3812391, lng: -99.2041034},
  map: map,
  title: 'Lueste'
  });
  }
</script>
I want the coordinates to be obtained from the database, between several attempts, I tried with something like this.

position: {lat:  <span t-value="delivery.partner_latitude()"/>,  lng:<span t-value="delivery.partner_longitude()"/> },

Or

position: {lat: $( "delivery.partner_latitude" ).val(), lng: $( "delivery.partner_longitude" ).val()},
Delivery is label from my model.



class Logistics(http.Controller):

@http.route('/logistics/token=<model("logistics.concretedelivery"):delivery>', type='http', auth='public', website=True)
def logis_home_token(self, delivery, **kwargs):
return request.render('logistics.logistics_website', {
"delivery": delivery})


Do you have any suggestions on how to pass the parameters to it? Thank you very much for reading and giving me advice.
Avatar
Kassér
Forfatter Bedste svar

It's done, I used qweb. The code is this.

var latitude_partner = <t t-esc="delivery.partner_latitude"/>;
var longitude_partner = <t t-esc="delivery.partner_longitude"/>;
var marker_partner = new google.maps.Marker({
position: {lat: latitude_partner, lng: longitude_partner},
map: map,
title: 'Lueste'
});
Avatar
Kassér
Bedste svar

Hey Omar Rodrigues Torres, Your answer seems to be the solution I am looking for too, could you please tell me how did you get working the gmap using the QWeb, I was unable to pass dynamic lat and long to script tag inside XML. Thanks for the help in advance.

Avatar
Kassér
Forfatter

Hi, if you have lat and long in a specific model, you can use those coordenates for use gmap, you need a controller that pass those params. For example

@http.route('path', type='http', auth='public')
def url(self, **rec):
model = request.env['sale.order'].sudo().browse(id)
return request.render('path.qweb_id', {'model ': model})

After you need a qweb, in a xml file

<template id="remision_website" name="Remisión">
<t t-call="website.layout">

<script src="https://maps.googleapis.com/maps/api/js?key=Api&amp;callback=initMap" async="async" defer="defer"></script>
<script>
var map;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 19.3620379, lng: -99.130065},
zoom: 12,
});

var latitude_partner = <t t-esc="model.latitude_field"/>;
var longitude_partner = <t t-esc="model.longitude_field"/>;
var marker_partner = new google.maps.Marker({
position: {lat: latitude_partner, lng: longitude_partner},
map: map
});
}
</script>
<div id="map"></div>
</t>
</template>

Bedste svar

Hey! Do you know how to do it but inverse way? Get Javascript variable and pass it into odoo template? Thanks!

Avatar
Kassér
Forfatter

You must use POST method in the controller, for example if you use box and the buttom send, each box is necesary have a key, and the controller is some similar to this

@http.route('/route/=<model("model.model"):feed>', type='http', auth="public", website=True)

def feedback_website_website(self, feed, **post):

if post.get('pregunta_1') or post.get('pregunta_2') or post.get('pregunta_5') or post.get('pregunta_10') or post.get('pregunta_11') or post.get('comentarios'):

for aux in range(10):

contador=str(aux+1)

exec("feed.pregunta_"+contador+" = post.get('pregunta_"+contador+"')")

feed.comentarios = post.get('comentarios_descrip')

feed.status_feedback = True

return request.redirect('/logistics/feedback/token='+str(feed.id)+'?submitted=1')

Related Posts Besvarelser Visninger Aktivitet
0
jul. 24
1847
1
feb. 16
6760
4
mar. 25
3976
2
aug. 24
1792
0
maj 23
1977