我有一个谷歌地图路线,形式为以下字符串
NewRoute = '{"start":{"lat":51.5479454,"lng":-0.04057739999996102},"end":{"lat":51.5166787,"lng":-0.0596227999999428},"waypoints":[[51.5474343,-0.07557889999998224]]}';
我要加载到地图上。如何将字符串NewRoute转换为数组操作系统,以便可以在以下函数中使用?
function showRoute(oViewMapButton)
{
ButtonName = oViewMapButton.name;
if(ButtonName.length == 13){
var RouteName = "strWayPoints_r" + ButtonName.slice(-1);
var DistanceName = "strDistance_r" + ButtonName.slice(-1);
}else{
var RouteName = "strWayPoints_r" + ButtonName.slice(-2);
var DistanceName = "strDistance_r" + ButtonName.slice(-2);
}
oRoute = document.getElementById(RouteName);
var NewRoute = oRoute.value;
var os = [];
os = NewRoute;
var wp = [];
for(var i=0;i<os.waypoints.length;i++)
wp[i] = {'location': new google.maps.LatLng(os.waypoints[i][0], os.waypoints[i][1]),'stopover':false }
$( "#hid_FieldName3" ).val(DistanceName);
$( "#map-form" ).dialog( "open" );
var request = {
origin:new google.maps.LatLng(os.start.lat,os.start.lng),
destination:new google.maps.LatLng(os.end.lat,os.end.lng),
waypoints: wp,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
} else {
alert("There was an unknown error in your request. Requeststatus: \n\n"+status);
}
});
}
答案 0 :(得分:1)
你是怎么得到这个字符串的?它看起来像一个javascript对象。如果您在没有外部引号的情况下分配它,您将获得一个对象并可以像这样使用它:
var route = {
"start": {"lat": 51.5479454, "lng": -0.04057739999996102},
"end": {"lat": 51.5166787, "lng": -0.0596227999999428},
"waypoints": [[51.5474343, -0.07557889999998224]]
};
route.start
route.start.lat
route.waypoints[0][1]
etc.
关于javascript对象:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects
答案 1 :(得分:1)
假设JSON是具有RouteName id的元素的值,只需修改以下行:
var NewRoute = oRoute.value;
为:
var NewRoute = JSON.parse(oRoute.value);
答案 2 :(得分:1)
您可以尝试此操作(只需将json
转换为对象)
var NewRoute = '{"start":{"lat":51.5479454,"lng":-0.04057739999996102},"end":{"lat":51.5166787,"lng":-0.0596227999999428},"waypoints":[[51.5474343,-0.07557889999998224]]}';
var os = JSON.parse(NewRoute);
所以,现在你可以在你的函数中使用它,os.start.lat
或os.waypoints.length
。
在您的功能中,替换以下行
var NewRoute = oRoute.value;
以下行
var NewRoute = JSON.parse(oRoute.value);
就是这样。