如何将字符串转为地图可用对象?JSON.parse使用问题求助
问题原因及解决办法
你的JSON.parse写法完全错了
你写的var position = JSON.parse('{"lat:" + latitude + ",lng:" + longitude }');里,把拼接变量的代码当成了字符串内容,导致传给JSON.parse的不是带实际经纬度值的合法JSON字符串,而是{"lat:" + latitude + ",lng:" + longitude }这个本身就不符合JSON规范的文本,自然解析不出正确对象。
两种正确的实现方式
方式一:直接创建对象(最推荐)
根本没必要转字符串再解析,直接生成你需要的Position对象就行:
var position = { lat: latitude, lng: longitude };
这完全符合{lat:纬度值, lng:经度值}的格式要求,简单又不容易出错。
方式二:非要用JSON.parse的话(不推荐)
必须先拼接出标准JSON格式的字符串——注意JSON的键必须用双引号,数字类型的经纬度值不用加引号:
// 用模板字符串拼接(更简洁) var jsonStr = `{"lat": ${latitude}, "lng": ${longitude}}`; var position = JSON.parse(jsonStr);
或者用传统字符串拼接:
var jsonStr = '{"lat": ' + latitude + ', "lng": ' + longitude + '}'; var position = JSON.parse(jsonStr);
拼接后要得到类似{"lat": 39.9042, "lng": 116.4074}这种合法JSON,JSON.parse才能正常解析。
关于只显示'position'的问题
大概率是你的代码解析出错(可以打开浏览器控制台看具体报错),导致position变量没正确赋值;或者你后续输出的时候,不小心写了字符串'position'而不是变量position。
内容的提问来源于stack exchange,提问作者Ginnie2019
相关产品推荐
相关产品推荐

