从Google Maps API Javascript获取坐标时遇到问题

从Google Maps API Javascript获取坐标时遇到问题,javascript,json,google-maps,google-maps-api-3,Javascript,Json,Google Maps,Google Maps Api 3,我正在使用谷歌地图api和方向服务来检索关于这两个城市的信息。我的请求检索json,我正在使用一些响应进行其他操作,但我无法确定如何从中获取坐标 如您所见,它们在“Closure”和“[[Scopes]”下分别列为“a”和“b” ,但我无法通过拨打类似的电话访问它们 json.routes[0].legs[0].start_location.lat["[[Scopes]]"][0].b 我收到一个错误“无法读取未定义的属性“0” 我认为这与它在[[范围]]内有关,但我不知道该怎么办 编辑:为了

我正在使用谷歌地图api和方向服务来检索关于这两个城市的信息。我的请求检索json,我正在使用一些响应进行其他操作,但我无法确定如何从中获取坐标

如您所见,它们在“Closure”和“[[Scopes]”下分别列为“a”和“b” ,但我无法通过拨打类似的电话访问它们

json.routes[0].legs[0].start_location.lat["[[Scopes]]"][0].b
我收到一个错误“无法读取未定义的属性“0”

我认为这与它在[[范围]]内有关,但我不知道该怎么办

编辑:为了清楚起见,我的代码如下所示:

    var map;
    function initMap() {

        var directionsService = new google.maps.DirectionsService;
        var directionsDisplay = new google.maps.DirectionsRenderer;
        map = new google.maps.Map(document.getElementById('map'), {
            zoom: 7,
            center: {lat: 43.16, lng: -77.61}
        });
        var geocoder = new google.maps.Geocoder();

        directionsDisplay.setMap(map);
        directionsDisplay.setOptions( { suppressMarkers: true } );

        var onChangeHandler = function() {
            directionsService.route({
                origin: document.getElementById('start').value,
                destination: document.getElementById('end').value,
            travelMode: 'DRIVING'
            }, function(response, status) {

                if (status === 'OK') {
                    getDirections(response);
                    directionsDisplay.setDirections(response);

                } else {
                    window.alert('Directions request failed due to ' + status);
                }
            });

        };
        document.getElementById('submit').addEventListener('click', onChangeHandler);

    }

function getDirections(json) {
    var time = json.routes[0].legs[0].duration.value;
    time = time/3600;
    startCityLat = json.routes[0].legs[0].start_location.lat["[[Scopes]]"][];
    startCityLon = json.routes[0].legs[0].start_location.lat["[[Scopes]]"][0].b;
    endCityLat = json.routes[0].legs[0].end_location.lat;
    endCityLon = json.routes[0].legs[0].end_location.lng;
}

</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=XXXXX&callback=initMap">
</script>
var映射;
函数initMap(){
var directionsService=新的google.maps.directionsService;
var directionsDisplay=新建google.maps.DirectionsRenderer;
map=new google.maps.map(document.getElementById('map'){
缩放:7,
中心:{lat:43.16,lng:-77.61}
});
var geocoder=new google.maps.geocoder();
方向显示.setMap(地图);
设置选项({suppressMarkers:true});
var onChangeHandler=函数(){
方向服务.路线({
来源:document.getElementById('start')。值,
目标:document.getElementById('end')。值,
travelMode:“驾驶”
},功能(响应、状态){
如果(状态=='OK'){
获得指示(回应);
方向显示。设置方向(响应);
}否则{
window.alert('由于'+状态,指示请求失败);
}
});
};
document.getElementById('submit')。addEventListener('click',onChangeHandler);
}
函数getDirections(json){
var time=json.routes[0]。legs[0]。duration.value;
时间=时间/3600;
startcityla=json.routes[0]。legs[0]。start_location.lat[“[[Scopes]]”[];
startCityLon=json.routes[0]。legs[0]。start_location.lat[“[[Scopes]]”[0]。b;
endcityla=json.routes[0]。legs[0]。end_location.lat;
endCityLon=json.routes[0]。legs[0]。end_location.lng;
}

其中,在getDirections函数中,可以很好地检索时间变量,但start和end lat和lon不是对象。因此,您可以直接使用它,或者如果需要,可以调用
.lat()
.lng()
函数。忽略将LatLng对象记录到控制台时可以看到的各种情况;你可以这么做

startCityLat = json.routes[0].legs[0].start_location.lat();
startCityLon = json.routes[0].legs[0].start_location.lng();

开始位置
是一个对象。因此,您可以直接使用它,或者如果需要,可以调用
.lat()
.lng()
函数。忽略将LatLng对象记录到控制台时可以看到的各种情况;你可以这么做

startCityLat = json.routes[0].legs[0].start_location.lat();
startCityLon = json.routes[0].legs[0].start_location.lng();

你能给出一个简短的示例代码,说明你是如何得到JSON的吗?你有什么要求?@chrki我只是在用你能不能发一个简短的示例代码来说明你是如何得到JSON的?你有什么要求?@chrki我只是用“是”这很有道理!谢谢是的,这很有道理!非常感谢。