首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google JSON不能阅读html_instructions

Google JSON不能阅读html_instructions
EN

Stack Overflow用户
提问于 2013-09-05 12:26:19
回答 3查看 2.4K关注 0票数 0

我很难从Google的回复中读到html_instructions,我怀疑很大程度上是因为我对处理json对象不熟悉,但我无法找到答案来帮助我解决这个问题,所以我们开始吧。

按照Google服务示例,我在javascript中创建了一个calcRoute函数,该函数发布了一个开始和结束位置,并收到了一个json格式的驱动指令列表,它在地图上绘制的路线都很好。但是,当我想列出驾驶指令时,我可以生成一个包含每一步的距离和持续时间的步骤列表,但总是返回html_instructions的“未定义”。当我查看接收到的json时,每个步骤都有一个带有文本的html_instructions属性,但我无法在代码中访问它。很简单,是的,所以我想,我错过了什么蠢事?

代码语言:javascript
复制
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值

代码语言:javascript
复制
....
"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?)编码字符,travel_mode在哪里是一组普通的大写字母?

在这方面的任何帮助将不胜感激,并感谢在此之前。如果这有关系的话,我正在使用最新版本的firefox浏览器。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-05 12:45:14

当您使用URL获得方向JSON时,您似乎得到了一个html_instructions作为step的属性,但是使用JSON获得了作为step的属性的instructions

票数 2
EN

Stack Overflow用户

发布于 2013-09-05 15:55:25

你能看到如果你把alert("instruction: " + step.html_instruction);

在使用google的时候,我很难让JSON像我想要的那样工作--这是一个尝试许多不同的东西的例子,在此之前不应该有什么区别。

票数 0
EN

Stack Overflow用户

发布于 2013-09-13 00:52:08

我知道答案了,这不是html_instructions它的指令。更改var指令= step.html_instructions;// ==未定义?

我不知道为什么'html_instructions‘变成’html_instructions‘

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18636301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档