gpt4 book ai didi

javascript - 谷歌地图对象的 JSON.stringify

转载 作者:可可西里 更新时间:2023-10-31 23:17:38 25 4
gpt4 key购买 nike

我正在使用 Google Map JS APIv3 返回的 DirectionsDisplay 来获取某些位置的坐标。 DirectionsDisplay 具有返回值的函数(lat()lng()),但我需要将它们发送到由 JSON.stringify 序列化的 PHP > 所以我将值分配给新变量(cLatcLon):

var steps=directionsDisplay.getDirections().routes[0].legs[0].steps;
for(var i=0;i<steps.length;i++){
steps[i].end_location.cLat = steps[i].end_location.lat();
steps[i].end_location.cLon = steps[i].end_location.lng();
}

console.log(steps) 按预期显示 cLatcLon:

Object {steps: Array[8]}
steps: Array[8]
0: Object
distance: Object
duration: Object
encoded_lat_lngs: "..."
end_location: _.L
cLat: 64.49756909999999 //here
cLon: 14.148118999999951 //here
lat: function()
lng: function()
__proto__: _.L
...

但是,console.log(JSON.stringify(steps)) 显示如下:

{
"steps":[
{
"distance":{
"text":"132 km",
"value":132266
},
"duration":{
"text":"1 hodín, 34 minút",
"value":5639
},
"end_location":{
"lat":64.49756909999999, //here
"lng":14.148118999999951 //here
},

...
}
]
}

我做错了什么?

最佳答案

看看json2.js的相关部分:

// If the value has a toJSON method, call it to obtain a replacement value.

if (value && typeof value === 'object' &&
typeof value.toJSON === 'function') {
value = value.toJSON(key);
}

start_locationend_location 确实有一个方法 toJSON,所以这些属性将被设置为 JSON 中此函数的 returnValue .stringify()

一种选择是完全覆盖 start_locationend_location

for(var i=0;i<steps.length;i++){
steps[i].end_location= {
clat:steps[i].end_location.lat(),
cllng:steps[i].end_location.lng()
};
steps[i].start_location= {
clat:steps[i].start_location.lat(),
clng:steps[i].start_location.lng()
};

steps[i].end_location.cLon = steps[i].end_location.lng();
}

但是没有必要这样做(当 API 需要再次访问这些属性时也可能会出现问题)。

正如您在字符串化的 steps 中看到的那样,它们已经包含了所需的信息(latlng),只需在您的 PHP 中使用它们-脚本而不是您的自定义属性。

关于javascript - 谷歌地图对象的 JSON.stringify,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35573941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com