`;
$('#found_charging_stations').html(stats_content);
$('#bars_power').html(bar_powers);
}
function bindEventsOnJosmRemote() {
let josm_remote_buttons = $(`#sendToJOSM`)
$(josm_remote_buttons[0]).on('click', () => {
let josm_link = $(josm_remote_buttons[0]).attr('data-href')
$.get(josm_link, (res) => {
console.log('res', res)
})
})
}
function displayPointsFromApi(points, convert_to_osm_json) {
if (points && convert_to_osm_json) {
geojsondata = osmtogeojson(points);
}
displayStatsFromGeoJson(geojsondata);
let resultLayer = L.geoJson(geojsondata, {
style: function (feature) {
return {color: '#f00'};
},
filter: function (feature, layer) {
let isPolygon = (feature.geometry) && (feature.geometry.type !== undefined) && (feature.geometry.type === 'Polygon');
if (isPolygon) {
feature.geometry.type = 'Point';
let polygonCenter = L.latLngBounds(feature.geometry.coordinates[0]).getCenter();
feature.geometry.coordinates = [polygonCenter.lat, polygonCenter.lng];
}
return true;
},
onmoveend: function (event) {
// console.log('déplacement terminé');
},
onzoomend: function (event) {
supprimerMarqueurs();
displayPointsFromApi();
},
onEachFeature: eachFeature,
});
}
function makePopupOfFeature(feature) {
let popupContent = ''
popupContent += '
'
let type2 = feature.properties.tags['socket:type2']
let type2_combo = feature.properties.tags['socket:type2_combo']
if (type2) {
popupContent += ' '
if (type2 !== 'yes') {
popupContent += 'x ' + type2 + ''
}
}
if (feature.properties.tags['socket:type2_combo']) {
popupContent += ' '
if (type2_combo !== 'yes') {
popupContent += 'x ' + type2_combo + ''
}
}
popupContent += '
'
popupContent += '
'
// ne montrer que certains champs dans la popup
lcm_config.tags_to_display_in_popup.forEach(function (key) {
if (lcm_config.tags_to_display_in_popup.indexOf(key)) {
let value = feature.properties.tags[key]
if (value) {
if (value.indexOf('http') !== -1) {
value = '' + value + ''
}
popupContent = popupContent + ' ' + key + ' :' + value + ''
}
}
})
popupContent += '
'
return popupContent;
}
/**
* application des filtres dans la sélection des bornes à afficher
* @param feature
* @param layer
*/
function eachFeature(feature, layer) {
let link_josm = createJOSMEditLink(feature);
let popupContent = makePopupOfFeature(feature);
layer.bindPopup(popupContent);
let outPowerGuessed = lcm_utils.guessOutputPowerFromFeature(feature);
let color = lcm_color_utils.getColor(feature);
let displayOutPowerGuessed = '? kW';
if (outPowerGuessed) {
displayOutPowerGuessed = outPowerGuessed + ' kW max';
if (display_unknown_max_power_station === 'show_only') {
return;
}
} else {
// on cache cette station si on ne veut pas voir les stations à la puissance inconnue
if (display_unknown_max_power_station === 'hide') {
return;
}
}
/**
* bornes sans informations, suggérer d'ajouter des tags dans OSM
*/
if (!popupContent) {
popupContent = ` Aucune information renseignée,
ajoutez la dans OpenStreetMap!`;
}
// Ajout du lien vers Panoramax
const panoramaxLink = `https://api.panoramax.xyz/#focus=map&map=16.7/${feature.geometry.coordinates[1]}/${feature.geometry.coordinates[0]}&speed=250`;
let html = ` 🚗🚴♀️👠✏️JOSM${displayOutPowerGuessed}${popupContent}`;
let zoom = map.getZoom();
let radius = 20;
let opacity = 0.5;
let ratio_circle = 10;
if (zoom < 13) {
ratio_circle = 5;
} else if (zoom < 15) {
ratio_circle = 1;
opacity = 0.25;
} else if (zoom <= 16) {
ratio_circle = 0.5;
} else if (zoom <= 18) {
ratio_circle = 0.25;
}
if (!layer._latlng) {
if (lastLatLng) {
layer._latlng = lastLatLng;
}
} else {
lastLatLng = layer._latlng;
}
if (!outPowerGuessed) {
radius = radius * ratio_circle;
} else {
/**
* limiter la taille du cercle pour les valeurs aberrantes
* les mettre en valeur en les plafonnant à 1 de plus que le maximum attendu en lcm_config
*/
if (outPowerGuessed > lcm_config.max_possible_station_output) {
console.error("valeur suspecte outPowerGuessed", outPowerGuessed, feature)
outPowerGuessed = lcm_config.max_possible_station_output + 1
}
radius = outPowerGuessed * ratio_circle;
}
/**
* gestion des marqueurs d'alertes
*/
// info de câble manquant
if (display_alert_cable_missing) {
let keys = Object.keys(feature.properties)
/**
* on considère l'information de câble manquante uniquement dans le cas où une info de socket de type 2 est présente mais pas le tag socket:type2_cable.
*/
if (keys.indexOf('socket:type2') !== -1 && keys.indexOf('socket:type2_cable') === -1) {
let circle_alert = L.circle(layer._latlng, {
color: 'red',
fillColor: 'orange',
fillOpacity: 1,
colorOpacity: 0.5,
radius: 20
})
circle_alert.bindPopup("information de câble manquante");
circle_alert.on({
mouseover: function () {
this.openPopup();
bindEventsOnJosmRemote();
updateExternalEditorsLinks();
bindFullDetails(feature);
},
mouseout: function () {
// setTimeout(() => this.closePopup(), 15000);
},
click: function () {
this.openPopup();
bindEventsOnJosmRemote();
updateExternalEditorsLinks();
bindFullDetails(feature);
},
});
circle_alert.addTo(all_stations_markers);
}
}
/**
* affichage des marqueurs de stations de recharge
*/
let circle = L.circle(layer._latlng, {
color: color,
fillColor: color,
fillOpacity: opacity,
colorOpacity: opacity,
radius: radius
}).addTo(all_stations_markers);
if (zoom > 15) {
let circle_center = L.circle(layer._latlng, {
color: 'black',
fillColor: color,
fillOpacity: 1,
radius: 0.1
}).addTo(all_stations_markers);
}
circle.bindPopup(html);
circle.on({
mouseover: function () {
this.openPopup();
bindEventsOnJosmRemote();
bindFullDetails(feature);
},
mouseout: function () {
// setTimeout(() => this.closePopup(), 15000);
},
click: function () {
this.openPopup();
bindEventsOnJosmRemote();
bindFullDetails(feature);
},
});
}
function bindFullDetails(feature) {
$('#fullDetails').on('click', () => {
console.log('details', feature)
console.log("$('#current_station_infos')", $('#current_station_infos')[0])
let content = '