[12/11/2025] Après CapBretagne, correction du problème de conflit Google Maps entre ColissimoPickupPoint et MondialRelay

This commit is contained in:
2025-11-12 19:25:28 +01:00
parent 5826bd7942
commit 988b1f7d99
3 changed files with 435 additions and 375 deletions

View File

@@ -4,13 +4,13 @@
<td colspan="3">
<div id="point-colissimo-pickup-point">
<div id="google-map-colissimo-pickup-point">
{* Point relais *}
{* Check if Colissimo webservice is up *}
{assign var="isColissimoPickupPointUp" value=0}
{colissimoPickupPointDeliveryPrice country=$country}<h1>{$isValidMode}</h1>
{if $isValidMode !== false}
{loop name="is.colissimo.pickup.point.up" type="colissimo.pickup.point.around"}{/loop}
{ifloop rel="is.colissimo.pickup.point.up"}
{* Point relais *}
{* Check if Colissimo webservice is up *}
{assign var="isColissimoPickupPointUp" value=0}
{colissimoPickupPointDeliveryPrice country=$country}<h1>{$isValidMode}</h1>
{if $isValidMode !== false}
{loop name="is.colissimo.pickup.point.up" type="colissimo.pickup.point.around"}{/loop}
{ifloop rel="is.colissimo.pickup.point.up"}
<div class="panel panel-default">
<div class="panel-heading">
<strong>{intl l="Near you" d='colissimopickuppoint.fo.default'}</strong> / {$deliveryPrice} {currency attr="symbol"}
@@ -40,9 +40,9 @@
function updatemap_colissimo_pickup_point(adr_geoloc, locations) {
var buf = "",
marker,
loc,
i;
marker,
loc,
i;
// save current search
if (adr_geoloc !== undefined && locations !== undefined) {
@@ -54,7 +54,8 @@
// Define MAP
var mapOptions = {
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapId: "COLISSIMO_MAP_ID"
}
// On va créer la map dans la div qui a l'id relaymap
mapSOC.map = new google.maps.Map(document.getElementById('colissimopickuppointmap'), mapOptions);
@@ -71,11 +72,12 @@
if (status == google.maps.GeocoderStatus.OK) {
// Et on centre la map sur cette position
mapSOC.map.setCenter(results[0].geometry.location);
marker = new google.maps.Marker({
marker = new google.maps.marker.AdvancedMarkerElement({
position: new google.maps.LatLng(results[0].geometry.location.lat(), results[0].geometry.location.lng()),
map: mapSOC.map,
icon: "{image file='assets/img/maison.png' source='ColissimoPickupPoint'}"
map: mapSOC.map/*,
icon: "{image file='assets/img/maison.png' source='ColissimoPickupPoint'}"*/
});
if (mapSOC.position != null){
mapSOC.position.setMap(null);
}
@@ -124,31 +126,32 @@
}
buf += '<tr>' +
'<td>' +
'<img src="' + mapSOC.images[loc.type] + '">' +
'<strong>' + loc.name + '</strong> ' +
'<br>' +
loc.address +
'<br>' +
loc.zipcode + ' ' + loc.city +
' - ' + loc.distance;
'<td>' +
'<img src="' + mapSOC.images[loc.type] + '">' +
'<strong>' + loc.name + '</strong> ' +
'<br>' +
loc.address +
'<br>' +
loc.zipcode + ' ' + loc.city +
' - ' + loc.distance;
if (loc.disabledPerson == "1"){
buf += ' <img src="' + mapSOC.images["HANDICAPE"] + '">';
}
buf += '</td>' +
'<td>' +
'<div class="radio">' +
'<input type="radio" name="colissimo_pickup_point_code" data-marker=' + i + ' class="colissimo_pickup_point" id="colissimo_pickup_point' + loc.id + '" value="' + loc.id + ':'+ loc.type + ':'+ loc.countrycode + '">' +
'</div>' +
'</td>' +
'</tr>';
'<td>' +
'<div class="radio">' +
'<input type="radio" name="colissimo_pickup_point_code" data-marker=' + i + ' class="colissimo_pickup_point" id="colissimo_pickup_point' + loc.id + '" value="' + loc.id + ':'+ loc.type + ':'+ loc.countrycode + '">' +
'</div>' +
'</td>' +
'</tr>';
marker = new google.maps.Marker({
marker = new google.maps.marker.AdvancedMarkerElement({
position: new google.maps.LatLng(loc.lat, loc.lng),
map: mapSOC.map,
map: mapSOC.map/*,
icon: mapSOC.images[loc.type]
*/
});
mapSOC.listMarker.push(marker);
@@ -162,28 +165,28 @@
$("#colissimo-pickup-point" + data.id).prop('checked', true);
//verifyRadio();
mapSOC.infowindow.setContent(
'<img src="' + mapSOC.images[data.type] + '">' +
'<strong>' + data.name + '</strong>' +
'<address style="margin: 0">' +
data.address +
'<br>' +
data.zipcode +
' ' +
data.city +
'</address>' +
'<p>' + data.distance +
' ' +
((data.disabledPerson) ? '<img src="' + mapSOC.images["HANDICAPE"] + '">' : "") +
'</p>' +
'<table class="table table-condensed table-striped table-bordered" style="width: 100%;">' +
getHoraireRow('{intl l="Monday" d='colissimopickuppoint.fo.default'}', data.monday) +
getHoraireRow('{intl l="Tuesday" d='colissimopickuppoint.fo.default'}', data.tuesday) +
getHoraireRow('{intl l="Wednesday" d='colissimopickuppoint.fo.default'}', data.wednesday) +
getHoraireRow('{intl l="Friday" d='colissimopickuppoint.fo.default'}', data.friday) +
getHoraireRow('{intl l="Thursday" d='colissimopickuppoint.fo.default'}', data.thursday) +
getHoraireRow('{intl l="Saturday" d='colissimopickuppoint.fo.default'}', data.saturday) +
getHoraireRow('{intl l="Sunday" d='colissimopickuppoint.fo.default'}', data.sunday) +
'</table>');
'<img src="' + mapSOC.images[data.type] + '">' +
'<strong>' + data.name + '</strong>' +
'<address style="margin: 0">' +
data.address +
'<br>' +
data.zipcode +
' ' +
data.city +
'</address>' +
'<p>' + data.distance +
' ' +
((data.disabledPerson) ? '<img src="' + mapSOC.images["HANDICAPE"] + '">' : "") +
'</p>' +
'<table class="table table-condensed table-striped table-bordered" style="width: 100%;">' +
getHoraireRow('{intl l="Monday" d='colissimopickuppoint.fo.default'}', data.monday) +
getHoraireRow('{intl l="Tuesday" d='colissimopickuppoint.fo.default'}', data.tuesday) +
getHoraireRow('{intl l="Wednesday" d='colissimopickuppoint.fo.default'}', data.wednesday) +
getHoraireRow('{intl l="Friday" d='colissimopickuppoint.fo.default'}', data.friday) +
getHoraireRow('{intl l="Thursday" d='colissimopickuppoint.fo.default'}', data.thursday) +
getHoraireRow('{intl l="Saturday" d='colissimopickuppoint.fo.default'}', data.saturday) +
getHoraireRow('{intl l="Sunday" d='colissimopickuppoint.fo.default'}', data.sunday) +
'</table>');
mapSOC.infowindow.open(mapSOC.map, marker);
});
}
@@ -200,8 +203,8 @@
function initialize_so() {
// Get the selected customer address
var $selectedAddressInput = $('#form-cart-delivery')
.find('[name="thelia_order_delivery[delivery-address]"]')
.filter(':checked');
.find('[name="thelia_order_delivery[delivery-address]"]')
.filter(':checked');
var selectedAddressId = $selectedAddressInput.val();
@@ -209,53 +212,53 @@
var addresses_geoloc = [];
{loop type="address" name="delivery-selection-colissimo-pickup-point" customer="current"}
addresses_geoloc[{$ID}] = "{$ADDRESS1}, {$ZIPCODE} {$CITY}";
addresses_geoloc[{$ID}] = "{$ADDRESS1}, {$ZIPCODE} {$CITY}";
{/loop}
var adr_geoloc = addresses_geoloc[selectedAddressId];
var adr_geoloc = addresses_geoloc[selectedAddressId];
// Get every relay around customer's address
var locations = [];
$.get(
locationsSearchUrl + "?address=" + selectedAddressId,
function(data) {
locations = data.locations;
updatemap_colissimo_pickup_point(adr_geoloc, locations);
}
);
}
var normalize = (function () {
var a = ['À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'Ā', 'ā', 'Ă', 'ă', 'Ą', 'ą', 'Ć', 'ć', 'Ĉ', 'ĉ', 'Ċ', 'ċ', 'Č', 'č', 'Ď', 'ď', 'Đ', 'đ', 'Ē', 'ē', 'Ĕ', 'ĕ', 'Ė', 'ė', 'Ę', 'ę', 'Ě', 'ě', 'Ĝ', 'ĝ', 'Ğ', 'ğ', 'Ġ', 'ġ', 'Ģ', 'ģ', 'Ĥ', 'ĥ', 'Ħ', 'ħ', 'Ĩ', 'ĩ', 'Ī', 'ī', 'Ĭ', 'ĭ', 'Į', 'į', 'İ', 'ı', 'IJ', 'ij', 'Ĵ', 'ĵ', 'Ķ', 'ķ', 'Ĺ', 'ĺ', 'Ļ', 'ļ', 'Ľ', 'ľ', 'Ŀ', 'ŀ', 'Ł', 'ł', 'Ń', 'ń', 'Ņ', 'ņ', 'Ň', 'ň', 'ʼn', 'Ō', 'ō', 'Ŏ', 'ŏ', 'Ő', 'ő', 'Œ', 'œ', 'Ŕ', 'ŕ', 'Ŗ', 'ŗ', 'Ř', 'ř', 'Ś', 'ś', 'Ŝ', 'ŝ', 'Ş', 'ş', 'Š', 'š', 'Ţ', 'ţ', 'Ť', 'ť', 'Ŧ', 'ŧ', 'Ũ', 'ũ', 'Ū', 'ū', 'Ŭ', 'ŭ', 'Ů', 'ů', 'Ű', 'ű', 'Ų', 'ų', 'Ŵ', 'ŵ', 'Ŷ', 'ŷ', 'Ÿ', 'Ź', 'ź', 'Ż', 'ż', 'Ž', 'ž', 'ſ', 'ƒ', 'Ơ', 'ơ', 'Ư', 'ư', 'Ǎ', 'ǎ', 'Ǐ', 'ǐ', 'Ǒ', 'ǒ', 'Ǔ', 'ǔ', 'Ǖ', 'ǖ', 'Ǘ', 'ǘ', 'Ǚ', 'ǚ', 'Ǜ', 'ǜ', 'Ǻ', 'ǻ', 'Ǽ', 'ǽ', 'Ǿ', 'ǿ'];
var b = ['A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 's', 'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'D', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'IJ', 'ij', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'l', 'l', 'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o', 'O', 'o', 'O', 'o', 'OE', 'oe', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y', 'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's', 'f', 'O', 'o', 'U', 'u', 'A', 'a', 'I', 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'A', 'a', 'AE', 'ae', 'O', 'o'];
// Get every relay around customer's address
var locations = [];
$.get(
locationsSearchUrl + "?address=" + selectedAddressId,
function(data) {
locations = data.locations;
updatemap_colissimo_pickup_point(adr_geoloc, locations);
}
);
}
var normalize = (function () {
var a = ['À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ÿ', 'Ā', 'ā', 'Ă', 'ă', 'Ą', 'ą', 'Ć', 'ć', 'Ĉ', 'ĉ', 'Ċ', 'ċ', 'Č', 'č', 'Ď', 'ď', 'Đ', 'đ', 'Ē', 'ē', 'Ĕ', 'ĕ', 'Ė', 'ė', 'Ę', 'ę', 'Ě', 'ě', 'Ĝ', 'ĝ', 'Ğ', 'ğ', 'Ġ', 'ġ', 'Ģ', 'ģ', 'Ĥ', 'ĥ', 'Ħ', 'ħ', 'Ĩ', 'ĩ', 'Ī', 'ī', 'Ĭ', 'ĭ', 'Į', 'į', 'İ', 'ı', 'IJ', 'ij', 'Ĵ', 'ĵ', 'Ķ', 'ķ', 'Ĺ', 'ĺ', 'Ļ', 'ļ', 'Ľ', 'ľ', 'Ŀ', 'ŀ', 'Ł', 'ł', 'Ń', 'ń', 'Ņ', 'ņ', 'Ň', 'ň', 'ʼn', 'Ō', 'ō', 'Ŏ', 'ŏ', 'Ő', 'ő', 'Œ', 'œ', 'Ŕ', 'ŕ', 'Ŗ', 'ŗ', 'Ř', 'ř', 'Ś', 'ś', 'Ŝ', 'ŝ', 'Ş', 'ş', 'Š', 'š', 'Ţ', 'ţ', 'Ť', 'ť', 'Ŧ', 'ŧ', 'Ũ', 'ũ', 'Ū', 'ū', 'Ŭ', 'ŭ', 'Ů', 'ů', 'Ű', 'ű', 'Ų', 'ų', 'Ŵ', 'ŵ', 'Ŷ', 'ŷ', 'Ÿ', 'Ź', 'ź', 'Ż', 'ż', 'Ž', 'ž', 'ſ', 'ƒ', 'Ơ', 'ơ', 'Ư', 'ư', 'Ǎ', 'ǎ', 'Ǐ', 'ǐ', 'Ǒ', 'ǒ', 'Ǔ', 'ǔ', 'Ǖ', 'ǖ', 'Ǘ', 'ǘ', 'Ǚ', 'ǚ', 'Ǜ', 'ǜ', 'Ǻ', 'ǻ', 'Ǽ', 'ǽ', 'Ǿ', 'ǿ'];
var b = ['A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 's', 'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', 'A', 'a', 'A', 'a', 'A', 'a', 'C', 'c', 'C', 'c', 'C', 'c', 'C', 'c', 'D', 'd', 'D', 'd', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'E', 'e', 'G', 'g', 'G', 'g', 'G', 'g', 'G', 'g', 'H', 'h', 'H', 'h', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'I', 'i', 'IJ', 'ij', 'J', 'j', 'K', 'k', 'L', 'l', 'L', 'l', 'L', 'l', 'L', 'l', 'l', 'l', 'N', 'n', 'N', 'n', 'N', 'n', 'n', 'O', 'o', 'O', 'o', 'O', 'o', 'OE', 'oe', 'R', 'r', 'R', 'r', 'R', 'r', 'S', 's', 'S', 's', 'S', 's', 'S', 's', 'T', 't', 'T', 't', 'T', 't', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'W', 'w', 'Y', 'y', 'Y', 'Z', 'z', 'Z', 'z', 'Z', 'z', 's', 'f', 'O', 'o', 'U', 'u', 'A', 'a', 'I', 'i', 'O', 'o', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'U', 'u', 'A', 'a', 'AE', 'ae', 'O', 'o'];
return function (str) {
var i = a.length;
while (i--) str = str.replace(a[i], b[i]);
return str;
};
}());
return function (str) {
var i = a.length;
while (i--) str = str.replace(a[i], b[i]);
return str;
};
}());
function search_city_colissimo_pickup_point() {
var address = document.getElementById("search-address-colissimo-pickup-point").value;
var zipcode = document.getElementById("search-zipcode-colissimo-pickup-point").value;
var city = document.getElementById("search-city-colissimo-pickup-point").value;
var countryid = $("#search-countryid-colissimo-pickup-point").val();
if (zipcode == "" || city == "") {
alert("{intl l="Please enter a city and a zipcode" d='colissimopickuppoint.fo.default'}");
} else {
// Get site base url
var url_site = '{url path="/"}module/ColissimoPickupPoint/'
function search_city_colissimo_pickup_point() {
var address = document.getElementById("search-address-colissimo-pickup-point").value;
var zipcode = document.getElementById("search-zipcode-colissimo-pickup-point").value;
var city = document.getElementById("search-city-colissimo-pickup-point").value;
var countryid = $("#search-countryid-colissimo-pickup-point").val();
if (zipcode == "" || city == "") {
alert("{intl l="Please enter a city and a zipcode" d='colissimopickuppoint.fo.default'}");
} else {
// Get site base url
var url_site = '{url path="/"}module/ColissimoPickupPoint/'
+ encodeURIComponent(countryid) + '/'
+ encodeURIComponent(zipcode) + '/'
+ encodeURIComponent(normalize(city));
if (address != ""){
url_site += '/' + encodeURIComponent(normalize(address));
}
// Get search address
var adr_geoloc = address + " " + zipcode + " " + city;
// Get every relay around customer's address
var locations = [];
$.getJSON(url_site)
if (address != ""){
url_site += '/' + encodeURIComponent(normalize(address));
}
// Get search address
var adr_geoloc = address + " " + zipcode + " " + city;
// Get every relay around customer's address
var locations = [];
$.getJSON(url_site)
.done(function(data) {
if (!$.isEmptyObject(data)) {
locations = data.locations;
@@ -267,8 +270,8 @@
.fail(function( jqxhr, textStatus, error ) {
var err = textStatus + ", " + error;
});
}
}
}
</script>
@@ -315,7 +318,7 @@
<div class="col-md-4 col-sm-4">
<div style="padding-top: 5px; padding-bottom: 5px;">
{images file="assets/img/CIT.png" source="ColissimoPickupPoint"}
<img src="{$asset_url}" class="pull-left">
<img src="{$asset_url}" class="pull-left">
{/images}
<h5 class="title-colissimo-pickup-point-pickup-type">{intl l="Automatic pickup point" d='colissimopickuppoint.fo.default'}</h5>
<p>{intl l="Delivery in France in one of the 500 automatic instructions 7/7 and 24h/24." d='colissimopickuppoint.fo.default'}</p>
@@ -374,15 +377,15 @@
</div>
<div class="col-md-2">
<select id="search-countryid-colissimo-pickup-point" class="form-control">
{loop type="country" name="country.list"}
<option value="{$ID}"
{if $value != ""}
{if $value == $ID}selected{/if}
{loop type="country" name="country.list"}
<option value="{$ID}"
{if $value != ""}
{if $value == $ID}selected{/if}
{else}
{if $IS_DEFAULT}selected{/if}
{if $IS_DEFAULT}selected{/if}
{/if}
>{$TITLE}</option>
{/loop}
>{$TITLE}</option>
{/loop}
</select>
</div>
<div class="col-md-2">
@@ -397,35 +400,64 @@
</div>
</div>
</div>
<!-- // Search city -->
</div>
</div>
</div>
{/ifloop}
{/if}
{/ifloop}
{/if}
</div>
</div>
</td>
</tr>
<script>
function loadScript() {
console.log("loadScript");
function loadScript() {
console.log("loadScript ColissimoPickupPoint");
if (window.ModulesGoogleMaps.loading) {
// Si déjà en cours de chargement, ajouter le callback
window.ModulesGoogleMaps.callbacks.push(ColissimoPickupPointInitialize);
return;
}
window.ModulesGoogleMaps.loading = true;
// Callback global qui sera appelé par Google Maps
window.ModulesGoogleMapsCallback = function() {
window.ModulesGoogleMaps.loaded = true;
window.ModulesGoogleMaps.loading = false;
// Exécuter tous les callbacks en attente
window.ModulesGoogleMaps.callbacks.forEach(function(callback) {
callback();
});
window.ModulesGoogleMaps.callbacks = [];
};
var script = document.createElement('script');
script.type = 'text/javascript';
script.defer = true;
script.src = 'https://maps.googleapis.com/maps/api/js'
+ '?callback=ColissimoPickupPointInitialize'
+ '&key={colissimoPickupPointGoogleApiKey}';
+ '?callback=ModulesGoogleMapsCallback'
+ '&libraries=marker'
+ '&key={colissimoPickupPointGoogleApiKey}';
document.body.appendChild(script);
}
if (typeof(google) == 'undefined') {
loadScript();
if (typeof(google) == 'undefined' || typeof(google.maps) == 'undefined') {
if (!window.ModulesGoogleMaps.loaded && !window.ModulesGoogleMaps.loading) {
// Ajouter le callback et charger le script
window.ModulesGoogleMaps.callbacks.push(ColissimoPickupPointInitialize);
loadScript();
console.log('Colissimo : Maps pas encore déclarée');
} else if (window.ModulesGoogleMaps.loading) {
// Script en cours de chargement, ajouter juste le callback
window.ModulesGoogleMaps.callbacks.push(ColissimoPickupPointInitialize);
console.log('Colissimo : Maps déjà déclaré');
}
} else {
ColissimoPickupPointInitialize();
}