应用程序是在美国构建和服务的,西类牙用户正在尝试在仪表板上查看内置的 gmap 以查看他在应用程序中的位置。 gmap 适用于在美国测试的所有浏览器/平台,但我得到消息说,它不适用于这个用户,也许还有其他欧盟和南美用户,但只有少数示例。我可以在海外能访问的这几台机器上随意复制。
该应用程序是使用标准 PHP7.x 以及各种 JS 库(包括 jQuery 和 Google GMap 套件)编写的。
从美国运行的代码的输出是:
var default_long = '-87.584064762185';
var default_lat = '42.416435054172';
欧盟/南非机器的输出:
var default_long = '-87,584064762185';
var default_lat = '42,416435054172';
您会注意到欧盟机器中的小数分隔符是逗号,而美国机器中的小数分隔符是句点。这显然是本地化的事情,但我不确定它是如何或为何发生的。
我不以编程方式更改此设置,该函数只是从数据库中提取长/纬度(其中有句点而不是逗号)并转储到网页上看起来的位置由用户的本地计算机/浏览器更改。我最初的输出在坐标周围没有单引号,但添加了它们,希望浏览器将它们视为字符串并忽略尝试本地化它们,但它不起作用。
那么,我应该使用某种类型的 Apache 或 PHP header 来强制数字或其他内容的美国本地化吗?我遇到的问题的搜索词非常模糊,因此很难找到其他有相同问题的人,我很感谢你们可以提供的任何帮助。
最佳答案
如果您完全使用 json_decode,则可以知道在某些情况下会导致这种情况。
将脚本中的区域设置设置为以下内容:
setlocale(LC_NUMERIC, 'en_US.UTF-8')
我认为 LC_NUMERIC 是要使用的重要标志。
关于javascript - 欧洲和南美用户的浏览器将渲染的 JS 中的坐标分隔符从句点更改为逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51274138/