gpt4 book ai didi

php - 如何在 PHP 中从 Google Maps Direction API 解码折线

转载 作者:行者123 更新时间:2023-12-04 14:13:05 25 4
gpt4 key购买 nike

我有来自以下 URL 的 json 响应:

http://maps.googleapis.com/maps/api/directions/json?origin=Chicago,IL&destination=Los%20Angeles,CA&sensor=false

JSON 路径 routes[x].legs[y].steps[z].polyline.points :

"azq~Fhc{uOAlB?jB?^?P?P?B@V@|J@fA?xA@xA?h@?B?F?@?tA@xD?h@BnA@|A@rB@f@?d@@v@AxB?d@AZEzA?BIjB?@Cx@?@EzAAlC?F?F?T?B?f@DhHBhD?@?R?l@?R?|CCpDAj@E|DGnDKzCCb@OtBa@rFGfAAb@?@?FAp@?ADbJD|F@bF@@@fERhd@BrEFdDBtBAvBAx@@l@?n@@^@bANnQ?rABnM?jC?hH@fA?@BF?vC?hB?@BpM?@?j@@p@@|KB~Q@pFBbHBvF@z@?f@@jB?nA@z@DzD@VJ~CLfC\|E?B?@HnANtAVpDRpCLbB^dFTxC@LZvDF^HrALlCHEB|H?DBpEB~V?^BhDJR?@@\?~A?nABrL?@?jD@vD@vA?h@?BLx[?x@?B?\?F@pA?h@D~H?@Bz@Dr@RbCLfA\rBPv@@@T~@t@bCPf@z@xBd@rAf@dB\zAN~@PjAT~BFrADxAHX?z@?@HfW?x@?F?@@dD@^F|Y@v@D|JBzH?rB@tAApABxB?bA@dBBxABlAJ~CJrBDfANhBNjCLlCLpBHlBFnB@C?|A?v@AlBCdA?r@EjEC|BItEMdGEtAIfEI|BKzDOzGEjCCl@?@MnDWHSrFSlFAd@?@qA|[Ct@Cj@At@AbA?hBAdBClBQjFQnECr@EAYjFIzAWxDQpCYpEAFItACt@S~C]|GSlEMnCMtCGdAKlBQxDg@bLAT?BKrCAn@Ad@?x@?p@?J?|@@lA@z@BbABn@Bt@@@HnAPxB@LB^LATBPAP~@Z~ALn@?@@Fd@|BjAfGd@dDd@|D\bFDf@D~@@f@B|@@xCJP?dBBEDtE@bADlAREJlABh@Dp@F@@xEJdBHlCF~C@nA?@?@DfG?ADhLBbD@x@?F@~C?dCNbTDrIBxDLbO@~AVY?@DfHEvDGlC]fHGhD?lHPlP?@?B?R?@BfBNbRBpENfQDrGBvCDrEBtEBzABfABx@B~@^FHx@H|@@bDPxAZpCTbDNDBlC@j@@j@BhAHhLBvC?p@BlB?jAAfAAx@C@MzDM|B_@tDq@pF]fB]zAo@fCc@~Am@jBo@dBoCxG?@?@Sd@g@vAY~@St@W|@_@bBUhA_@zBWhBKAOpAKfAEp@Gz@Cb@GpACZAVAh@Ad@AX?f@At@CpB"



我想使用 PHP 将 Polyline 点字符串解码为上述 URL 返回的经纬度值。

我在 Java 和 Objective C 中找到了一些结果,但我在 PHP 中需要它。

最佳答案

Python 实现

这不是在 PHP 中,但如果您想从 Google Maps 解码折线字符串,则此线程位于搜索结果的顶部附近。如果其他人需要它(就像我一样),这里有一个用于解码折线字符串的 Python 实现。这是从 Mapbox JavaScript 版本移植的;在我的 repo page. 上找到更多信息

def decode_polyline(polyline_str):
index, lat, lng = 0, 0, 0
coordinates = []
changes = {'latitude': 0, 'longitude': 0}

# Coordinates have variable length when encoded, so just keep
# track of whether we've hit the end of the string. In each
# while loop iteration, a single coordinate is decoded.
while index < len(polyline_str):
# Gather lat/lon changes, store them in a dictionary to apply them later
for unit in ['latitude', 'longitude']:
shift, result = 0, 0

while True:
byte = ord(polyline_str[index]) - 63
index+=1
result |= (byte & 0x1f) << shift
shift += 5
if not byte >= 0x20:
break

if (result & 1):
changes[unit] = ~(result >> 1)
else:
changes[unit] = (result >> 1)

lat += changes['latitude']
lng += changes['longitude']

coordinates.append((lat / 100000.0, lng / 100000.0))

return coordinates

关于php - 如何在 PHP 中从 Google Maps Direction API 解码折线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15380712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com