Google maps Powershell属性

Google maps Powershell属性,google-maps,powershell,google-maps-api-3,Google Maps,Powershell,Google Maps Api 3,这将提供一个可行的输出。我希望能够使用Measure Object cmdlet来计算驾驶时间和距离 由于距离、持续时间的响应不是一个数字、一个字符串,如何提取该信息,然后求和 获取方向谷歌苹果-英里数|选择对象指令、距离、持续时间|测量对象-属性距离-总和 没有预期的效果。因此,我想我至少需要一个for循环来迭代每个istance或$。如评论中所述,我建议直接查询Directions API: Get-Direction "google" "apple" -inMiles | select-o

这将提供一个可行的输出。我希望能够使用Measure Object cmdlet来计算驾驶时间和距离

由于距离、持续时间的响应不是一个数字、一个字符串,如何提取该信息,然后求和

获取方向谷歌苹果-英里数|选择对象指令、距离、持续时间|测量对象-属性距离-总和
没有预期的效果。因此,我想我至少需要一个for循环来迭代每个istance或$。

如评论中所述,我建议直接查询Directions API:

Get-Direction "google" "apple" -inMiles | select-object instructions, distance, duration 
现在,我们可以从API路线响应中获取以米为单位的精确数值:

$From = 'google'
$To = 'apple'
$APIKey = 'ASDASdDGerYYeb7_zfd' # replace with actual key
$requestURI = 'https://maps.googleapis.com/maps/api/directions/json?origin={0}&destination={1}&mode=driving&units=metric&key={2}' -f $From,$To,$APIKey

$APIResponse = Invoke-WebRequest $requestURI -UseBasicParsing
$Route = $APIResponse.Content |ConvertFrom-Json |Select -First 1 -Expand routes
最后将总距离转换为英里:

$TotalDistance = $Route.legs.steps |Select Instructions,@{name='Distance';e={$_.distance.value}},Duration |Measure-Object  Distance -Sum
$TotalDistance = $directions |Measure-Object Distance -Sum
这样,您就不必为输出是否以英里/英尺为单位创建复杂的逻辑,您将得到更准确的结果

如果坚持使用Get Direction,请使用a来外推数值,例如使用regex:

$TotalMiles = 0.000621371 * $TotalDistance.Sum
在距离计算属性的表达式部分,我们使用-split操作符将值拆分为两部分。第一部分是0.2 mi的数值0.2,第二部分是0.2 mi的单位mi

然后,我们检查单位是否为英尺,如果是,则返回值。否则,我们假设该值以英里为单位,因此将其转换为英尺

现在可以使用“测量对象”:

因为之前我们将所有值转换为英尺,所以最后我们将总距离转换回英里:

$TotalDistance = $Route.legs.steps |Select Instructions,@{name='Distance';e={$_.distance.value}},Duration |Measure-Object  Distance -Sum
$TotalDistance = $directions |Measure-Object Distance -Sum

我建议直接查询API。GoogleMap模块返回来自方向的文本表示,因此将包含大量舍入错误。我非常讨厌直接查询。您必须在powershell中将URL分解为1000个变量,因为它是如何解释的。。。非常可怕。一点也不,你可以用一个-f操作来构造查询uri,-f做什么?你能澄清一下第二个命令在做什么吗。另外,我将从csv收集它。更容易使用。$TotalDistance=$Route.legs.steps |选择指令,@{name='Distance';e={$\ Distance.value}},持续时间要选择的哈希表参数称为计算属性。基本上,您可以修改现有属性并将其作为新属性附加到objectOr,我可以使用Get-Distance cmdlet。。。我只需要得到他们的距离api,它就能做到。