从Google Maps API Javascript获取坐标时遇到问题
我正在使用谷歌地图api和方向服务来检索关于这两个城市的信息。我的请求检索json,我正在使用一些响应进行其他操作,但我无法确定如何从中获取坐标 如您所见,它们在“Closure”和“[[Scopes]”下分别列为“a”和“b” ,但我无法通过拨打类似的电话访问它们从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” 我认为这与它在[[范围]]内有关,但我不知道该怎么办 编辑:为了
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我只是用“是”这很有道理!谢谢是的,这很有道理!非常感谢。