我正在尝试从Javascript中获取HTTP,调用Google Maps以获得从A到B的传输持续时间,然后按如下方式解析生成的XML:
function getTransitTime(match) {
var homeBase = '<Address 1>';
var distURL = 'https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&key=API_KEY_I_GOT&mode=transit&arrival_time=1519977600&origins=' + homeBase + '&destinations=' + match;
parser = new DOMParser();
xmlDoc = parser.parseFromString(httpGet( distURL ), "text/xml");
var finRet = $(xmlDoc).find('duration').text()
return finRet;
}
function httpGet(theUrl)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", theUrl, true );
xmlHttp.send( null );
return xmlHttp.responseText;
}
我在js控制台中收到NoApiKeys和SensorNotRequired错误。我究竟做错了什么?
这可能还有更多问题:
<DistanceMatrixResponse>
<status>OK</status>
<origin_address>New York, NY, USA</origin_address>
<destination_address>Philadelphia, PA, USA</destination_address>
<row>
<element>
<status>OK</status>
<duration>
<value>5100</value>
<text>1 hour 25 mins</text>
</duration>
<distance>
<value>145447</value>
<text>145 km</text>
</distance>
</element>
</row>
</DistanceMatrixResponse>
有帮助吗?我试图做一些“简单”的工作,但最终陷入了深层:|
我设法解决了这个问题:
首先,通过在扩展的manifest.json中包含以下内容,获得对maps API进行跨源请求的权限:
"permissions": ["https://maps.googleapis.com/"]
接下来,改变:
var finRet = $(xmlDoc).find('duration').text()
至
var finRet = $(xmlDoc).find('duration').find('text').text()
这是有效的,因为返回的XML具有嵌套在duration标记内的文本标记。
最后,地图调用的URL中的空格实际上没有任何区别。感谢大家的阅读和贡献。如果有的话,我仍在寻找更清洁的解决方案。