我在阅读Google Maps Api json响应中的html_instructions方面遇到了麻烦,我怀疑这主要是因为我对处理Json对象缺乏了解,但是我无法找到答案来帮助我解决这个问题。我们走了。
按照Google路线服务示例,我在javascript中创建了一个calcRoute函数,用于发布开始和结束位置,并以json格式接收驱动指令列表,它在地图上绘制路线都很好。但是,当我想列出驱动指令时,我可以生成一个步骤列表,其中包含每个步骤的距离和持续时间,但总是为html_instructions返回'undefined'。当我看到json收到的每个步骤都有一个带有文本的html_instructions属性,但是我无法在代码中访问它。简单的是,所以我想,所以我想念的是什么白痴?
function calcRoute() {
var start = document.getElementById('start').value;
try {
var request = {
origin: start,
destination: bowenSense,
travelMode: google.maps.DirectionsTravelMode.DRIVING,
unitSystem: google.maps.UnitSystem.IMPERIAL
};
directionsService.route(request, function (response, status) {
if (status == google.maps.DirectionsStatus.OK) {
parseJson(response);
directionsDisplay.setDirections(response);
}
else {
alert("Error: " + status);
}
});
}
catch (error) {
alert("Error: " + error);
};
}
function parseJson(response) {
for (i = 0; i < response.routes.length; i++) {
var route = response.routes[i];
for (j = 0; j < route.legs.length; j++) {
var leg = route.legs[j];
// Do something with leg attributes...
for (k = 0; k < leg.steps.length; k++) {
var step = leg.steps[k];
var distance = step.distance.text; // fine
var duration = step.duration.text; // fine
var instruction = step.html_instructions; // == undefined ?
alert("instruction: " + instruction);
var mode = step.travel_mode; // works
}
}
}
}
返回示例JSON,显示填充的html_instructions值
....
"steps" : [
{
"distance" : {
"text" : "0.4 mi",
"value" : 695
},
"duration" : {
"text" : "1 min",
"value" : 61
},
"end_location" : {
"lat" : 53.3590723,
"lng" : -1.5065088
},
"html_instructions" : "Head \u003cb\u003ewest\u003c/b\u003e on \u003cb\u003eBannerdale Rd\u003c/b\u003e toward \u003cb\u003eNeedham Way\u003c/b\u003e",
"polyline" : {
"points" : "i~sdIjscHUvAi@vD[vAk@fC}@hDMf@[v@c@vAiA|Dy@dCuAzD[r@EJGLMXOTINQRUTYPSNOJQJSPOR"
},
"start_location" : {
"lat" : 53.3554115,
"lng" : -1.4983018
},
"travel_mode" : "DRIVING"
},
....
令人费解的是,html_instruction和travel_mode都是字符串值,另一个不起作用,所以这是字符串内容的问题吗? html_instructions字符串有很多'\ u * * '(unicode?)编码字符,wheras travel_mode是一组普通的大写字母?
对此的任何帮助将不胜感激,并提前感谢。 ps如果重要的话,我正在使用最新版本的firefox浏览器。
答案 0 :(得分:2)
当您使用URL获取方向JSON时,您会得到html_instructions
作为step
的属性,但是使用JS API,您获得instructions
作为属性step
。
答案 1 :(得分:0)
如果你放alert("instruction: " + step.html_instruction);
?
我在使用谷歌地图api之前想要使用JSON时遇到了很多麻烦 - 这是一个尝试很多不同的东西的情况,直到有人做了...... / p>
答案 2 :(得分:0)
我得到了答案,它不是html_instructions它指示。更改 var instruction = step.html_instructions; // ==未定义?
要 var instruction = step.instructions; 它完美地对我有效,我不知道为什么'html_instructions'成为'指令'