我正在使用Google文档,并希望创建以下形式的电子表格:
A点B点里程 洛杉矶迈阿密292100 帕洛阿尔托旧金山90
在电子表格中,Mileage
是自动计算的。我正在寻找“距离驱动”,而不是“乌鸦飞翔”。
Google Spreadsheets中有可以执行此操作的功能吗?
我正在使用Google文档,并希望创建以下形式的电子表格:
A点B点里程 洛杉矶迈阿密292100 帕洛阿尔托旧金山90
在电子表格中,Mileage
是自动计算的。我正在寻找“距离驱动”,而不是“乌鸦飞翔”。
Google Spreadsheets中有可以执行此操作的功能吗?
Answers:
通过以下几段代码,您可以检索两点之间的距离。
function getDirection(city1, city2, unit) {
var directions = Maps.newDirectionFinder()
.setOrigin(city1).setDestination(city2)
.setMode(Maps.DirectionFinder.Mode.DRIVING)
.getDirections();
var d = directions.routes[0].legs[0].distance.text;
var distance, value = d.split(" ")[0].replace(",", ""), text = d.split(" ")[1];
if(text == unit) {
distance = value;
} else if(text == "km" && unit == "mi") {
distance = value / 1.6;
} else {
distance = value * 1.6;
}
return Math.round(distance);
}
建立在Google Apps脚本之上的MAPs API将获得起点和终点之间的第一个方向(route [0])。返回的值从逗号中去除,并解析为整数。
返回的距离可以以公里或英里为单位。我还添加了“乌鸦飞翔”的计算(以英里为单位)。
在电子表格的“ 工具”>“脚本编辑器”下添加脚本。按下脚本编辑器中的错误按钮,即可随时使用!
我为您创建了一个示例文件:获取行驶距离
在Google电子表格中:
=importXML("http://mapquestapi.com/directions/v1/route?
key=YOUR_KEY_HERE&outFormat=xml&from=" & A2 & "&to="
& B2,"//response/route/distance")
出发A2
地和B2
目的地在哪里。
您必须从mapquest获取一个API密钥,然后YOUR_KEY_HERE
用它替换值。
这对我有效:
=importXML("http://maps.googleapis.com/maps/api/distancematrix/xml?&origins="& <point.A> & "&destinations=" & <point.B>; "//distance/value")
这将产生之间的行驶距离<point.A>
和<point.B>
(根据谷歌地图,当然)以米为单位。
我认为没有内置的Excel函数或扩展名可以执行此操作。
您可能想查看以下Source Forge页面:http: //zips.sourceforge.net/
Excel函数是
=IF(SIN(Lat1) * SIN(Lat2) + COS(Lat1) * COS(Lat2) * COS(Long1 - Long2) > 1,
RadiusofEarth * ACOS(1), RadiusofEarth *
ACOS(SIN(Lat1) * SIN(Lat2) + COS(Lat1) * COS(Lat2) * COS(Long1-Long2)))
该页面指出,角度必须以弧度为单位,并且Excel具有将弧度转换为弧度的功能:
=RADIAN(degrees)
除非别人有一个过分的回答,否则您无需过多工作即可获得所需的结果。
对于完整的Google电子表格示例,以电子表格模板的形式以及有关Google Maps API的信息:http : //winfred.vankuijk.net/2010/12/calculate-distance-in-google-spreadsheet/
Google Developers 为我使用过并且非常喜欢的Google表格中的地图相关功能提供了非常强大的脚本。网页上也有完整的说明。
我对这些API不够熟悉,无法确切地告诉您如何执行此操作,但是我认为使用Google Maps API是可能的。
当然,Google Maps可以通过其API提供从一点到另一点的路线。这可能很复杂,但可以通过API通过电子表格路由位置并获取行车路线,这将为您提供城市之间的行车距离。
您可以自己编写类似于宏的函数
http://www.google.com/google-ds/scripts/yourfirstscript.html
您可以在此处找到完整的文档
PS:目前,并非所有 Google Apps脚本都可以使用