Comment la localisation influence lestimation dun bien immobilier ?
Dans le secteur immobilier, la localisation d’un bien ne se résume pas à son simple emplacement géographique. Elle englobe une multiplicité de critères qui cond...
Dans le secteur immobilier, la localisation d’un bien ne se résume pas à son simple emplacement géographique. Elle englobe une multiplicité de critères qui conditionnent sa valeur marchande et sa rapidité de transaction. En 2025, la compréhension approfondie de cet impact est devenue incontournable pour les propriétaires, investisseurs et professionnels. Les attentes des acheteurs évoluent avec des exigences accrues concernant la qualité de vie, la sécurité, la proximité des commodités et des infrastructures. De même, les tendances du marché immobilier local continuent de modeler la perception de l’attractivité d’un quartier. L’évaluation de cette localisation dépasse donc la simple présence d’un bien dans une zone recherchée, elle analyse l’ensemble des facteurs structurels et socio-économiques qui challengent continuellement la valeur d’un patrimoine immobilier.
Les critères tels que la proximité des écoles, des transports en commun, des commerces, ainsi que l’efficacité énergétique du logement concourent à l’attrait d’un quartier. À l’inverse, les taux de criminalité ou une mauvaise accessibilité peuvent fortement limiter la valorisation. Ce constat engage propriétaires et conseillers en gestion de patrimoine à adopter une démarche méthodique quant à l’estimation des biens. Grâce aux avancées technologiques, aux bases de données enrichies, et à une analyse fine du marché immobilier local – accessible sur des plateformes spécialisées comme Berthier & Associés ou Easimmo – l’évaluation se fait désormais avec précision et anticipation des tendances à moyen terme.
Dans le cadre d’une estimation précise, la localisation reste l’un des paramètres les plus structurants, avec des effets souvent visibles sur plusieurs plans : la valeur historique d’un quartier, l’impact des projets urbains, l’accessibilité aux services ou encore les flux démographiques. Identifier ces facteurs permet d’affiner la détermination d’un prix cohérent et attractif, essentiel pour envisager la mise en vente ou la mise en location d’un bien dans un environnement concurrentiel.
Comment la qualité du quartier et la sécurité impactent l’estimation d’une propriété
La qualité du quartier dans lequel s’inscrit un bien immobilier se révèle être un critère cardinal dans l’appréciation de sa valeur. Cela comprend le paysage urbain, la qualité des infrastructures, et surtout la sécurité, qui influencent directement la perception des acheteurs en termes de cadre de vie.
Un quartier sécurisé avec un faible taux de criminalité est souvent synonyme d’une demande accrue et d’une attractivité renforcée. Les acheteurs cherchent avant tout un lieu où la quiétude règne, surtout lorsqu’il s’agit d’acquérir un bien pour une famille. Les patrouilles régulières, une police de proximité efficace et un éclairage urbain optimal minimisent les risques et rassurent.
Par ailleurs, la qualité du quartier se manifeste par la présence d’espaces verts, d’équipements culturels ou sportifs, et des services de proximité. Par exemple, des quartiers dynamiques sur le plan social et culturel, avec une bonne desserte en transports en commun, affichent souvent des prix à la hausse. Ce phénomène est fréquemment observé dans les grandes agglomérations et leurs périphéries, où les quartiers en pleine évolution urbaine deviennent très prisés, notamment à travers la gentrification.
- Disponibilité d’espaces verts et parcs publics
- Éclairage public et caméras de surveillance
- Proximité de commerces de proximité (boulangeries, pharmacies, etc.)
- Présence d’équipements scolaires et sportifs
- Accessibilité via des transports en commun sécurisés
Une étude réalisée sur le marché immobilier local en 2024 révèle que la valeur des biens situés dans des quartiers sécurisés pouvait être majorée de 8 à 15 % comparé à des zones à forte délinquance. Ces chiffres soulignent combien cette variable est intégrée dans les modèles d’estimation contemporains. Par ailleurs, un quartier calme avec des infrastructures adaptées à une efficacité énergétique renforcée constitue également un plus, intéressant pour les acheteurs soucieux de réduire leur impact et dépenses énergétiques.
Critère Impact sur l’estimation Exemple
Sécurité +8 à +15 % de valeur Quartier résidentiel avec patrouilles fréquentes
Espaces verts +5 à +10 % Proximité d’un parc urbain
Proximité commerces +6 à +12 % Centre commercial à moins de 1 km
Transports accessibles +5 à +13 % Arrêt de bus ou métro à proximité immédiate
Les experts conseillent ainsi de bien scruter ces aspects pour ajuster la stratégie de valorisation à la vente ou à la location, surtout dans des zones à fort turn-over. La qualité d’un quartier et sa sécurité contribuent non seulement à protéger la valeur du capital immobilier mais également à optimiser la mise sur le marché.
Simulateur : Impact de la localisation sur l’estimation d’un bien immobilier
Valeur de base du bien (€) :
Prix moyen sans impact local (exemple: 150000 €)
Localisation (adresse, ville ou code postal) :
Entrez une adresse, une ville ou un code postal
Qualité du quartier :
Neutre
Très bonne (+15%)
Bonne (+8%)
Moyenne (-5%)
Faible (-15%)
Impact de la qualité du quartier sur le prix
Sécurité du quartier :
Neutre
Très sûre (+10%)
Sûre (+5%)
Peu sûre (-7%)
Dangereuse (-20%)
Impact de la sécurité sur le prix
Calculer l'estimation
Réinitialiser
/*
- Simulateur d’impact de la localisation sur l’estimation d’un bien immobilier
- Utilise l’API de recherche libre Nominatim OpenStreetMap pour aider à compléter la localisation
- API URL : https://nominatim.openstreetmap.org/search?format=json&q=Paris
- Exemple de réponse JSON simplifié:
- [
- {
-
"place_id": "123456", -
"display_name": "Paris, Île-de-France, France", -
"lat": "48.8566", -
"lon": "2.3522", -
"type": "city" - },
- …
- ]
- L’outil ajuste le prix de base en fonction des coefficients définis pour la qualité et la sécurité. */
(function(){ const form = document.getElementById(‘estimateForm’); const priceBaseInput = document.getElementById(‘priceBase’); const qualitySelect = document.getElementById(‘quality’); const safetySelect = document.getElementById(‘safety’); const resultDiv = document.getElementById(‘result’); const locationInput = document.getElementById(‘location’); const suggestionsList = document.getElementById(‘locationSuggestions’); const resetBtn = document.getElementById(‘resetBtn’);
// Délais pour debounce API calls
let debounceTimeout = null;
// Fonction utilitaire pour formater un nombre en euros lisibles
function formatEuro(value){
return value.toLocaleString('fr-FR', {style:'currency', currency:'EUR'});
}
// Fonction pour interroger Nominatim API avec le texte de recherche
// Fait une requête GET publique sans clé API
function fetchLocations(query){
const url = `https://nominatim.openstreetmap.org/search?format=json&addressdetails=1&limit=5&q=${encodeURIComponent(query)}`;
return fetch(url, {
headers: {
'Accept-Language': 'fr' // demande les résultats en français
}
})
.then(response => response.json());
}
// Affiche les suggestions sous le champ location
function showSuggestions(items){
suggestionsList.innerHTML = '';
if(items.length === 0){
suggestionsList.style.display = 'none';
return;
}
items.forEach(item => {
const li = document.createElement('li');
li.className = 'list-group-item list-group-item-action';
li.tabIndex = 0; // pour accessibilité clavier
li.textContent = item.display_name;
li.dataset.lat = item.lat;
li.dataset.lon = item.lon;
li.addEventListener('click', () => {
locationInput.value = item.display_name;
suggestionsList.style.display = 'none';
locationInput.focus();
});
li.addEventListener('keydown', (e) => {
if(e.key === 'Enter' || e.key === ' ') {
e.preventDefault();
li.click();
}
});
suggestionsList.appendChild(li);
});
suggestionsList.style.display = 'block';
}
// Gère la recherche et l'affichage des suggestions
locationInput.addEventListener('input', () => {
const val = locationInput.value.trim();
if(val.length < 3){
suggestionsList.style.display = 'none';
suggestionsList.innerHTML = '';
return;
}
clearTimeout(debounceTimeout);
debounceTimeout = setTimeout(() => {
fetchLocations(val)
.then(data => {
showSuggestions(data);
})
.catch(() => {
suggestionsList.style.display = 'none';
suggestionsList.innerHTML = '';
});
}, 400);
});
// Fermer les suggestions si on clique en dehors
document.addEventListener('click', (e) => {
if(!locationInput.contains(e.target) && !suggestionsList.contains(e.target)){
suggestionsList.style.display = 'none';
}
});
// Calcul et affichage du résultat
form.addEventListener('submit', (e) => {
e.preventDefault();
const basePrice = parseFloat(priceBaseInput.value);
if(isNaN(basePrice) || basePrice <= 0){
resultDiv.textContent = "Merci d'indiquer une valeur de base valide.";
return;
}
const qualityImpact = parseFloat(qualitySelect.value);
const safetyImpact = parseFloat(safetySelect.value);
/*
* Hypothèse simple: les coefficients s'additionnent.
* Impact total = basePrice * (1 + qualityImpact + safetyImpact)
*/
const finalPrice = basePrice * (1 + qualityImpact + safetyImpact);
// Affichage résultat avec explication
const qualityLabel = qualitySelect.options[qualitySelect.selectedIndex].text;
const safetyLabel = safetySelect.options[safetySelect.selectedIndex].text;
resultDiv.innerHTML = `
Estimation ajustée: **${formatEuro(finalPrice)}
(base: ${formatEuro(basePrice)} + impact qualité ${qualityLabel} + impact sécurité ${safetyLabel})
`;
});
// Réinitialisation du formulaire et résultat
resetBtn.addEventListener('click', () => {
form.reset();
resultDiv.textContent = '';
suggestionsList.style.display = 'none';
suggestionsList.innerHTML = '';
});
})();
La proximité des commodités et son rôle déterminant dans l’estimation immobilière
La présence et l’accessibilité à un ensemble de commodités influencent fortement la perception de la valeur d’un bien immobilier. Les écoles**, les hôpitaux, les commerces, et les équipements culturels font partie des critères scrutés avec attention par les acheteurs et modèles d’estimation.
Les familles, par exemple, privilégient généralement les biens situés dans un rayon proche d’écoles de qualité. Cela réduit les temps de déplacement et le stress lié aux transports quotidiens. Les hôpitaux et centres médicaux à proximité sont également un gage de confort et de sécurité, notamment pour les foyers avec des besoins spécifiques en santé. Enfin, la présence de centres commerciaux ou de quartiers d’affaires peut valoriser un bien en offrant un accès aisé aux services et loisirs.
Proximité d’écoles reconnues et spécialisées
- Présence de centres de santé et pharmacies
- Commerces de première nécessité accessibles facilement
- Disponibilité de services administratifs et postaux
- Accessibilité aux infrastructures culturelles
La proximité avec ces commodités pèse sur l’estimation et la compétitivité du bien sur le marché. Par ailleurs, cette accessibilité représente souvent un critère abordé lors des visites, influençant le ressenti et la décision d’achat. Les propriétaires souhaitant une estimation précise doivent ainsi bien mettre en lumière ces atouts, comme celles liées à la localisation stratégique dans leurs négociations.
Commodité Impact sur la valeur estimée Conséquence pour les acheteurs
Écoles de qualité +10 à +20 % Attraction des familles avec enfants
Hôpitaux proches +7 à +14 % Tranquillité d’esprit en cas d’urgence
Commerces et services +5 à +12 % Vie quotidienne facilitée
Espaces culturels +3 à +8 % Qualité de vie et attractivité locale
Par exemple, dans une étude territoriale récente, les biens situés à moins de 10 minutes à pied d’écoles reconnues bénéficiaient d’une valorisation supérieure à la moyenne du marché immobilier local. Cette donnée tangible illustre l’attention portée à la qualité des infrastructures lors de l’évaluation.
Calculateur d’estimation immobilière selon la proximité des commodités
Estimez comment la valeur de votre bien immobilier peut varier en fonction de sa localisation par rapport aux commodités essentielles.
Valeur estimée de base (€)
Valeur du bien sans prise en compte de la localisation.
Distance moyenne aux commodités (en mètres)
Distance moyenne à pied du bien aux commodités principales (écoles, transports, commerces...).
Nombre de commodités à proximité
Commodités pertinentes proches du bien (écoles, parcs, commerces, transports...)
Quartier
Choisissez un quartier
Centre-ville
Banlieue résidentielle
Périphérie / Zone rurale
Choisissez la localisation générale du bien.
Calculer l'estimation
Réinitialiser
/* API / Données externes : Aucune API externe n’est utilisée pour garantir la gratuité et la performance. Les coefficients sont basés sur des observations simplifiées :
- Effet de la distance aux commodités : plus la distance est faible, plus la valeur augmente.
- Effet du nombre de commodités : plus il y a de commodités, plus la valeur augmente.
- Effet du quartier : un coefficient multiplicateur selon la localisation.
L’algorithme est purement démonstratif et facilement modifiable.
Internationalisation : Toutes les chaînes sont en français et facilement éditables. */
// Coefficients et paramètres configurables const params = { distanceMax: 3000, // Distance maximale considérée en mètres. Au delà, effet neutre sur la valeur. distanceCoeffMax: 0.15, // Maximum +15% si distance = 0 amenitiesCoeffPerUnit: 0.02, // +2% par commodité à proximité neighborhoodCoeffs: { “centre”: 1.20, // +20% pour centre-ville “banlieue”: 1.05, // +5% pour banlieue résidentielle “périphérie”: 0.90 // -10% pour périphérie/rural } };
/**
- Calcule l’ajustement de valeur en fonction de la distance aux commodités.
- Un effet décroissant linéaire entre 0m (+max) et distanceMax (0)
- @param {number} distance - Distance moyenne en mètres
- @returns {number} Ajustement proportionnel (positif ou nul) */ function calcDistanceEffect(distance){ if(distance <= 0) return params.distanceCoeffMax; if(distance >= params.distanceMax) return 0; // Linéaire décroissant return params.distanceCoeffMax * (1 - distance / params.distanceMax); }
/**
- Calcule l’ajustement de valeur en fonction du nombre de commodités
- Effet multiplicatif proportionnel au nombre
- @param {number} count - Nombre de commodités
- @returns {number} Ajustement proportionnel positif */ function calcAmenitiesEffect(count){ if(count <= 0) return 0; return params.amenitiesCoeffPerUnit * count; }
/**
- Calcule l’effet quartier
- @param {string} neighborhoodKey - clé quartier (“centre”, “banlieue”, “périphérie”)
- @returns {number} Coefficient multiplicateur */ function getNeighborhoodCoeff(neighborhoodKey){ return params.neighborhoodCoeffs[neighborhoodKey] ?? 1.0; }
/**
- Formate un nombre en euros avec espace insécable et séparateur français
- @param {number} val
- @returns {string} */ function formatEuro(val){ return val.toLocaleString(‘fr-FR’, {style:‘currency’, currency:‘EUR’, minimumFractionDigits:0}); }
/**
- Gestion du submit du formulaire */ document.getElementById(‘calcForm’).addEventListener(‘submit’, function(e){ e.preventDefault();
// Lecture des valeurs const baseValueRaw = e.target.baseValue.value.trim(); const distanceRaw = e.target.distance.value.trim(); const amenitiesRaw = e.target.amenities.value.trim(); const neighborhoodRaw = e.target.neighborhood.value;
const baseValue = Number(baseValueRaw); const distance = Number(distanceRaw); const amenities = Number(amenitiesRaw); const neighborhood = neighborhoodRaw;
// Validation simple : HTML5 fait déjà beaucoup mais on double vérifie if(isNaN(baseValue) || baseValue <= 0){ alert(“Veuillez saisir une valeur estimée de base valide (positive).”); return; } if(isNaN(distance) || distance < 0){ alert(“Veuillez saisir une distance valide (positive ou nulle).”); return; } if(isNaN(amenities) || amenities < 0){ alert(“Veuillez saisir un nombre valide de commodités (positif ou nul).”); return; } if(!neighborhood || !(neighborhood in params.neighborhoodCoeffs)){ alert(“Veuillez choisir un quartier valide.”); return; }
// Calculs const distanceEffect = calcDistanceEffect(distance); const amenitiesEffect = calcAmenitiesEffect(amenities); const neighborhoodCoeff = getNeighborhoodCoeff(neighborhood);
// Synthèse effet global (les effets distance et commodités s’additionnent) const totalCoeff = (1 + distanceEffect + amenitiesEffect) * neighborhoodCoeff;
// Nouvelle estimation const newValue = baseValue * totalCoeff;
// Synthèse des résultats en texte clair
let description = Valeur de base : **${formatEuro(baseValue)} ;
description += Distance aux commodités : ${distance} m → impact de +${(distanceEffect*100).toFixed(2)}% ;
description += Nombre de commodités : ${amenities} → impact de +${(amenitiesEffect*100).toFixed(2)}% ;
const quartiersLabels = { “centre”: “Centre-ville”, “banlieue”: “Banlieue résidentielle”, “périphérie”: “Périphérie / Zone rurale” }; const quartLabel = quartiersLabels[neighborhood] ?? neighborhood; const quartImpact = ((neighborhoodCoeff-1)*100).toFixed(2);
description += `Quartier : ${quartLabel} → coefficient multiplicateur de ${neighborhoodCoeff.toFixed(2)} (impact de ${quartImpact}%)
; description += Estimation finale corrigée : ${formatEuro(newValue)}`;
// Affichage const resultSection = document.getElementById(‘resultSection’); resultSection.innerHTML = description;
// Focus sur le résultat pour accessibilité resultSection.focus(); });
// Reset accessible document.getElementById(‘calcForm’).addEventListener(‘reset’, function(){ const resultSection = document.getElementById(‘resultSection’); resultSection.innerHTML = ""; });
Accessibilité et transports : un levier clé dans l’estimation du bien immobilier
L’accessibilité est devenue une variable centrale dans la valorisation des biens immobiliers. La proximité des transports en commun transforme la valeur perçue d’un logement, en particulier dans les contextes urbains et périurbains où la mobilité est un enjeu majeur.
Les biens situés à proximité immédiate d’arrêts de bus, stations de métro, gares ferroviaires ou tramways rencontrent une demande plus soutenue. Cette tendance s’explique par la recherche d’un gain de temps non négligeable dans les déplacements quotidiens, ainsi que par la réduction des coûts liés à l’usage des véhicules personnels. En outre, l’accessibilité facilite l’intégration professionnelle pour les actifs urbains et renforce la valeur patrimoniale du bien.
Accès facile aux transports en commun
- Proximité des axes routiers majeurs avec fluidité de circulation
- Stationnements sécurisés et réglementés
- Intégration dans un réseau multimodal (vélo, tram, métro, bus)
- Facilité aux points stratégiques de la ville
L’impact économique est d’ailleurs quantifié dans plusieurs rapports de grandes métropoles, où un logement proche d’un transport en commun voit sa valeur augmenter de 5 à 13 % selon la qualité du réseau existant et son efficacité. Les experts immobiliers intègrent donc systématiquement ce facteur dans leur analyse, comme détaillé sur Monde Immobilier ou Investurba.
Type de transport Impact sur la valeur Exemple d’influence
Station de métro +10 à +13 % Quartiers bien desservis du centre-ville
Arrêt de bus à proximité +5 à +8 % Péri-urbain en expansion
Gare ferroviaire +8 à +12 % Liaisons grandes villes régionales
Réseau multimodal vélo/marche +4 à +7 % Quartiers résidentiels favorisant mobilité douce
https://www.youtube.com/watch?v=VVz7qDhm9AM
Les propriétaires qui anticipent une valorisation liée aux projets d’infrastructures de transport peuvent maximiser leur stratégie d’investissement, que ce soit pour la vente ou la location. Dans certains cas, la proximité d’un futur projet peut déjà être valorisée via les estimations immobilières prévisionnelles.
L’influence des tendances du marché immobilier local sur la localisation
En analysant la localisation, il est essentiel d’intégrer le contexte dynamique du marché immobilier local**. Celui-ci combine des facteurs économiques, démographiques et réglementaires qui pèseront sur la demande et le prix final estimé.
Lorsque le marché est en forte croissance, caractérisée par une demande supérieure à l’offre, les biens localisés dans des secteurs stratégiques voient leur prix augmenter sensiblement. À contrario, dans un marché plus stagnant ou en baisse, même une excellente localisation peut subir une correction de valeur significative.
- Évolution démographique locale et flux migratoires
- Offre et demande immobilières spécifiques par secteur
- Taux d’intérêt et conditions financières en vigueur
- Politiques locales et projets urbains
- Veille concurrentielle et qualité des biens similaires en vente
De plus, l’analyse comparative des propriétés urbaines (comparable) est une méthode clé permettant d’ajuster l’estimation. Comme recommandé par des acteurs du secteur tels que Gestion Patrimoine Finance ou Immobilier Pratique, cette méthode intègre aussi les prix récents des biens ayant des caractéristiques proches dans le même quartier.
Facteur de marché Impact sur évaluation Exemple ou effet
Demande supérieure à l’offre +15 à +25 % Zone de croissance urbaine
Taux d’intérêt bas Stimulation de la demande Accès facilité au financement
Offre excédentaire -10 à -20 % Quartiers en déclin
Projets urbains attractifs +5 à +15 % Construction de commerces ou transports
https://www.youtube.com/watch?v=Tcs8qFA9B90
Pour les propriétaires décidant entre vente et location, comprendre ces tendances est indispensable. Une estimation pertinente reposera sur une analyse fine du contexte local pour optimiser la rentabilité et anticiper les fluctuations du marché.
Comparateur d’estimation immobilière par localisation
Entrez les adresses ou villes pour comparer l’impact de la localisation sur l’estimation d’un bien immobilier.
Localisation 1
Adresse, ville, ou code postal
Localisation 2
Adresse, ville, ou code postal
Comparer
/*
- Comparateur d’estimations immobilières simplifiées par localisation
- Utilise l’API publique Nominatim (OpenStreetMap) pour la géolocalisation gratuite et sans clé (usage limité)
- API URL: https://nominatim.openstreetmap.org/search?q=Paris&format=json&limit=1
- Exemple de réponse JSON:
- [
- {
-
"place_id":"298102255", -
"licence":"Data OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright", -
"osm_type":"relation", -
"osm_id":"7444", -
"boundingbox":["48.8155755","48.902156","2.224122","2.4697602"], -
"lat":"48.8566969", -
"lon":"2.3514616", -
"display_name":"Paris, Île-de-France, France", -
"class":"place", -
"type":"city", -
"importance":1.0595767 - }
- ]
- Puis simule une estimation immo en se basant sur le code postal si trouvé + un facteur aléatoire lié à l’importance/popularité du lieu. */
(function() { // Textes faciles à éditer / traduire const TXT = { btnCompare: “Comparer”, loading: “Chargement…”, errorNoResults: “Aucune localisation trouvée pour ”, errorInputEmpty: “Veuillez renseigner les deux localisations avant de comparer.”, labelLocation1: “Localisation 1”, labelLocation2: “Localisation 2”, tableHeaders: [“Localisation”, “Latitude”, “Longitude”, “Valeur moyenne / m² estimée (en €)”, “Note d’importance locale”], noData: “Données non disponibles”, title: “Comparateur d’estimation immobilière par localisation” };
const btnCompare = document.getElementById('btnCompare');
const inputLoc1 = document.getElementById('inputLocation1');
const inputLoc2 = document.getElementById('inputLocation2');
const errorMessage = document.getElementById('errorMessage');
const tableContainer = document.getElementById('comparisonTableContainer');
// Base de prix fictive par code postal (exemple très simplifié)
// En réalité, on devrait interroger une API dédiée (rarement gratuite sans clé)
// Ici on simule une répartition pour démonstration
const basePriceByPostalPrefix = {
// Paris intra muros : codes postaux 75000 à 75020 -> prix plus haut
"75": 11000,
"69": 7000,
"13": 5000,
"06": 8500,
"59": 2600,
"33": 3500,
// défaut si non présent : ~3000 euros/m²
"default": 3000
};
/**
* Requêtes à Nominatim pour géocoder la recherche
* @param {string} query
* @returns {Promise} Nominatim result object or null
*/
function geocode(query) {
const url = `https://nominatim.openstreetmap.org/search?format=json&limit=1&q=${encodeURIComponent(query)}`;
return fetch(url, {
headers: {
"Accept-Language": "fr" // réponse préférée en français si dispo
},
method: "GET"
})
.then(response => {
if (!response.ok) throw new Error('Erreur réseau');
return response.json();
})
.then(data => {
if (Array.isArray(data) && data.length > 0) {
return data[0];
}
return null;
});
}
/**
* Déduit la valeur moyenne / m² estimée en euros selon le code postal
* avec ajustement par l'importance (facteur entre 0.8 et 1.2)
* @param {string} display_name
* @param {string} importance
*/
function estimatePrice(display_name, importance) {
// Tenter d'extraire un code postal (5 chiffres) depuis display_name
// Exemple de display_name: "Paris, Île-de-France, France"
// Parfois le code postal est à la fin: "75001, Paris, Île-de-France, France"
let postalPrefix = null;
const regexPostal = /\b(\d{5})\b/;
const match = regexPostal.exec(display_name);
if (match) {
postalPrefix = match[1].substring(0, 2); // deux premiers chiffres
} else {
// Sinon chercher un préfixe dans la chaîne, au hasard on fait un fallback
// Par exemple, si le location contient un nom de ville connu, on peut approximer
// ici on ne fait rien - prix par défaut
}
let basePrice = basePriceByPostalPrefix[postalPrefix] || basePriceByPostalPrefix.default;
// Importance est un chiffre flottant ~0..1.
let imp = parseFloat(importance);
if (isNaN(imp) || imp < 0.5) imp = 0.8;
else if (imp > 1.2) imp = 1.2;
// Prix arrondi
let estimated = Math.round(basePrice * imp);
return estimated;
}
/**
* Construire le tableau comparatif à partir des deux localisations géocodées
* @param {Object} loc1
* @param {Object} loc2
*/
function renderTable(loc1, loc2) {
if (!loc1 || !loc2) return;
const price1 = estimatePrice(loc1.display_name, loc1.importance);
const price2 = estimatePrice(loc2.display_name, loc2.importance);
const importance1 = Number(loc1.importance).toFixed(2);
const importance2 = Number(loc2.importance).toFixed(2);
// Construction HTML du tableau
const headers = TXT.tableHeaders.map(h => `${h}`).join("");
const rows = `
1
${loc1.display_name}
${Number(loc1.lat).toFixed(5)}
${Number(loc1.lon).toFixed(5)}
${price1.toLocaleString('fr-FR')} €
${importance1}
2
${loc2.display_name}
${Number(loc2.lat).toFixed(5)}
${Number(loc2.lon).toFixed(5)}
${price2.toLocaleString('fr-FR')} €
${importance2}
`;
const htmlTable = `
Tableau comparatif des estimations immobilières selon localisation
${headers}
${rows}
`;
tableContainer.innerHTML = htmlTable;
}
/**
* Afficher un message d'erreur accessible
* @param {string} msg
*/
function showError(msg) {
errorMessage.textContent = msg;
errorMessage.style.display = "block";
tableContainer.innerHTML = "";
}
function hideError() {
errorMessage.style.display = "none";
errorMessage.textContent = "";
}
/**
* Fonction déclenchée au clic du bouton "Comparer"
*/
btnCompare.addEventListener("click", () => {
hideError();
const val1 = inputLoc1.value.trim();
const val2 = inputLoc2.value.trim();
if (!val1 || !val2) {
showError(TXT.errorInputEmpty);
return;
}
btnCompare.textContent = TXT.loading;
btnCompare.disabled = true;
Promise.all([
geocode(val1),
geocode(val2)
])
.then(results => {
btnCompare.textContent = TXT.btnCompare;
btnCompare.disabled = false;
if (!results[0]) {
showError(TXT.errorNoResults + `"${val1}"`);
return;
}
if (!results[1]) {
showError(TXT.errorNoResults + `"${val2}"`);
return;
}
renderTable(results[0], results[1]);
})
.catch(() => {
btnCompare.textContent = TXT.btnCompare;
btnCompare.disabled = false;
showError("Erreur lors de la récupération des données. Veuillez réessayer.");
});
});
})();