You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Maps API设置JSON数据中心失败,如何移除坐标双引号?

解决Google Maps API Center坐标带双引号不生效的问题

嗨,我来帮你捋清楚这个问题的根源和解决方案:

首先,你遇到的核心问题是混淆了字符串、JS对象和标准JSON的处理逻辑,导致解析后的坐标还是字符串类型,而Google Maps的center配置需要的是数字类型的纬度和经度,这才是配置不生效的关键。

为什么你的移除引号操作没用?

你用position.replace(/\"/g, "")得到的字符串看起来像JS对象,但它并不是标准JSON格式——标准JSON要求所有键必须用双引号包裹。当你用JSON.parse去解析这个不合法的字符串时,浏览器会做容错处理,但最终解析出来的lat和lng还是会被识别为字符串类型,这就是你依然看到带引号结果的原因。

针对性解决方案分两种情况:

情况1:从数据库获取的position本身是JS对象

如果控制台输出的{lat:31.752809648231494,lng:-7.927621380715323}是一个JS对象(不是字符串),那你完全不需要做任何JSON转换,直接把它传给Google Maps的center参数就行:

// 假设position是从数据库拿到的JS对象
const map = new google.maps.Map(document.getElementById('map'), {
  center: position,
  zoom: 12 // 可以根据需求调整缩放级别
});

情况2:从数据库获取的position是字符串类型

如果它是一个类似"{lat:31.752809648231494,lng:-7.927621380715323}"的字符串,你需要先把它转换成标准JSON格式,再解析成JS对象:

// 第一步:给键名加上双引号,转换成合法的JSON字符串
const validJsonString = position.replace(/lat:/g, '"lat":').replace(/lng:/g, '"lng":');
// 第二步:解析成JS对象,此时lat和lng是数字类型
const posObj = JSON.parse(validJsonString);
// 第三步:传入Google Maps配置
const map = new google.maps.Map(document.getElementById('map'), {
  center: posObj,
  zoom: 12
});

额外优化建议

如果可以控制数据库返回的格式,尽量直接返回标准JSON格式的字符串,比如:

{"lat":31.752809648231494,"lng":-7.927621380715323}

这样前端只需要直接JSON.parse就能得到带有数字类型坐标的对象,省去了字符串替换的步骤,更稳定可靠。

内容的提问来源于stack exchange,提问作者Boutamente abdessamad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:23:59