diff --git a/partner_address_on_map/__openerp__.py b/partner_address_on_map/__openerp__.py
index eea25566b..320395746 100644
--- a/partner_address_on_map/__openerp__.py
+++ b/partner_address_on_map/__openerp__.py
@@ -26,7 +26,8 @@
'version': '0.1',
'category': 'Contacts',
'license': 'AGPL-3',
- 'summary': 'Add Map button on partner form to open GMaps, OSM or others',
+ 'summary':
+ 'Add Map button on partner form to open GMaps, OSM, Bing and others',
'author': 'Akretion,Odoo Community Association (OCA)',
'website': 'http://www.akretion.com',
'depends': ['base'],
diff --git a/partner_address_on_map/map_url_data.xml b/partner_address_on_map/map_url_data.xml
index ecd4bb68a..500a71aee 100644
--- a/partner_address_on_map/map_url_data.xml
+++ b/partner_address_on_map/map_url_data.xml
@@ -10,27 +10,33 @@
Google Maps
- https://maps.google.com/maps?oi=map&q=
+ https://www.google.com/maps?ie=UTF8&q=
+ https://www.google.com/maps?z=15&q={LATITUDE},{LONGITUDE}
OpenStreetMap
- https://nominatim.openstreetmap.org/search?q=
+ https://nominatim.openstreetmap.org/search?q=
+ https://www.openstreetmap.org/?zoom=15&mlat={LATITUDE}&mlon={LONGITUDE}
OpenStreetMap FR
- http://tile.openstreetmap.fr/?q=
+ http://tile.openstreetmap.fr/?q=
+ http://tile.openstreetmap.fr/?zoom=15&lat={LATITUDE}&lon={LONGITUDE}
Bing Maps
- https://www.bing.com/maps/default.aspx?rtp=adr.
+ https://www.bing.com/maps/default.aspx?rtp=adr.
+ https://www.bing.com/maps/default.aspx?cp={LATITUDE}~{LONGITUDE}&lvl=15
Here Maps
- https://here.com/search/
+ https://here.com/search/
+ https://www.here.com/?map={LATITUDE},{LONGITUDE},15,normal
+
diff --git a/partner_address_on_map/map_url_view.xml b/partner_address_on_map/map_url_view.xml
index 88fb69c87..b7d2c445c 100644
--- a/partner_address_on_map/map_url_view.xml
+++ b/partner_address_on_map/map_url_view.xml
@@ -15,7 +15,8 @@
@@ -27,7 +28,8 @@
-
+
+
diff --git a/partner_address_on_map/partner_address_on_map.py b/partner_address_on_map/partner_address_on_map.py
index 9936e3fcc..63e54745d 100644
--- a/partner_address_on_map/partner_address_on_map.py
+++ b/partner_address_on_map/partner_address_on_map.py
@@ -29,7 +29,14 @@ class MapUrl(models.Model):
_description = 'Map System'
name = fields.Char(string='Map Provider', required=True)
- url = fields.Char(string='URL', required=True)
+ address_url = fields.Char(
+ string='URL that uses the address',
+ help="Odoo will add the address as string at the end of this URL.")
+ lat_lon_url = fields.Char(
+ string='URL that uses latitude and longitude',
+ help="In this URL, {LATITUDE} will be replaced by the latitude and "
+ "{LONGITUDE} will be replaced by the longitude (requires the module "
+ "base_geolocalize)")
class ResUsers(models.Model):
@@ -58,17 +65,30 @@ class ResPartner(models.Model):
raise Warning(
_('Missing map provider: '
'you should set it in your preferences.'))
- url = self.env.user.context_map_url_id.url
- if self.street:
- url += self.street
- if self.street2:
- url += ' ' + self.street2
- if self.city:
- url += ' ' + self.city
- if self.state_id:
- url += ' ' + self.state_id.name
- if self.country_id:
- url += ' ' + self.country_id.name
+ map_url = self.env.user.context_map_url_id
+ if (
+ map_url.lat_lon_url and
+ hasattr(self, 'partner_latitude') and
+ self.partner_latitude and self.partner_longitude):
+ url = map_url.lat_lon_url.replace(
+ '{LATITUDE}', unicode(self.partner_latitude))
+ url = url.replace('{LONGITUDE}', unicode(self.partner_longitude))
+ else:
+ if not map_url.address_url:
+ raise Warning(
+ _("Missing parameter 'URL that uses the address' "
+ "for map provider '%s'.") % map_url.name)
+ url = map_url.address_url
+ if self.street:
+ url += self.street
+ if self.street2:
+ url += ' ' + self.street2
+ if self.city:
+ url += ' ' + self.city
+ if self.state_id:
+ url += ' ' + self.state_id.name
+ if self.country_id:
+ url += ' ' + self.country_id.name
return {
'type': 'ir.actions.act_url',
'url': url,