有没有办法格式化geojson中包含的不同语言环境的值,因为它们在Leaflet中显示?
在开发的Web应用程序中,所有数据都包含在geojson中。我必须使用不同的语言版本,这些版本还需要不同的数字和货币格式。值显示在弹出窗口,图例和D3图表中。在图表中,我可以使用D3中的格式化程序函数来获得正确的区域设置:逗号分隔的小数。
如何使用来自geojson的javascript和传单以逗号分隔的小数位和不同格式的货币显示值?
有什么建议吗?
编辑:Matthew Bloch建议使用d3.locale格式化客户端上的值。这很有道理。我会试着找一个例子。 globalize.js可以是一个解决方案,也可能只是一个JavaScript函数?
以下是示例区域和代码: jsfiddle
示例代码:
var onEachFeature_LMA = function onEachFeature(feature, layer) {
layer.on({
mouseover: highlightFeature,
mouseout: resetHighlight,
click: zoomToFeature
});
var Popup = feature.properties.AreaName + '</b><br />No diploma: ' +
feature.properties.NoDipTot + '%' +
'<br />High school: ' +
feature.properties.HSTot + '%' +
'<br />College: ' +
feature.properties.ColTot + '%' +
'<br />University: ' +
feature.properties.UnTot + '%';
layer.bindPopup(Popup);
}
EDIT2:
对于那些正在研究这个问题的人来说,我认为这可能是一个很快的补充。提供的答案有效,但我决定使用Matthew建议的D3进行本地化。使用D3,我可以格式化我可能需要的所有内容:日期,货币,数字等。
定义要使用的语言环境,然后使用numberFormat或timeFormat等。它具有当前D3的动态,并且不需要像以前那样重新编译。
var enCA = d3.locale({
decimal: ".",
thousands: ",",
grouping: [3],
currency: ["$", ""],
dateTime: "%a %b %e %X %Y",
date: "%Y-%m-%d",
time: "%H:%M:%S",
periods: ["AM", "PM"],
days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
});
var format = enCA.numberFormat("n");
format(3,4) //3.4
format(10000) //10,000
答案 0 :(得分:1)
如果这不符合你的要求,请纠正我,但是如果只是使用简单的字符串替换来将点更改为逗号这样:
//globally replace '.' in oldString by ',' and save it to formattedString string
formattedString = oldString.replace(/\./g, ',');
请参阅this fiddle。
您还可以扩展函数以将位置作为输入,并根据switch
语句格式化字符串。