javascript - 欧洲和南美用户的浏览器将渲染的 JS 中的坐标分隔符从句点更改为逗号

标签 javascript php google-maps localization

应用程序是在美国构建和服务的,西类牙用户正在尝试在仪表板上查看内置的 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 是要使用的重要标志。

See the PHP documentation for more on this

关于javascript - 欧洲和南美用户的浏览器将渲染的 JS 中的坐标分隔符从句点更改为逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51274138/

相关文章:

php - Mongodb 组和项目运营商

javascript - 在 map 上的正确位置制作贝塞尔曲线控制点

javascript - Googlemap 不会在 React 中渲染

javascript - 用户只能在 Firestore 上读/写自己的提交

php - 使用在其外部计算的变量的回调函数

javascript - 谷歌加一键不起作用(谷歌加一键错误)

PHP - session 多用户和管理员权限

javascript - 自动完成谷歌地图

Javascript:for..in 循环运行次数超过预期

javascript - Windows 8 Javascript 应用程序 XML 对象