我正在Swift中使用HERE REST API用于中转路线。
通常当我在Swift中解码折线时,我使用这个伟大的库https://github.com/raphaelmor/Polyline/,它适用于OpenTripPlanner、GoogleDirections、Graphhopper(没有高程)等
此处折线的编码方式似乎有所不同
func testDecodePolyline() throws {
let herePolyline = "BHwp7v0W0_uykO89CkU-yIs8B28K89CgkHq8BkmE6a-gF-uBquFooBqvKm3Cg1FooByzEmoB6-Hs8Bm6EooB0kDkUquFq8B4_MqrDi5MykD2jU0nF47F21BzZqwF"
let coordinates: [CLLocationCoordinate2D]? = decodePolyline(herePolyline)
XCTAssertNotNil(coordinates)
}
使用上述库不起作用。
编码问题有一个答案:HERE Polyline Encoding: JavaScript -> Swift,实施本文档:https://developer.here.com/documentation/places/dev_guide/topics/location-contexts.html#location-contexts__here-polyline-encoding
这里还有一个库,支持多种语言,但不支持Swift或Objective-C:https://github.com/heremaps/flexible-polyline
如何从Swift中的REST API解码HERE折线?
我更喜欢不使用iOS HERE SDK的解决方案。如果必须的话,我会安装iOS HERE SDK。
3条答案
按热度按时间gdrx4gfi1#
使用eiprol的版本,他改进了我的版本
我把https://github.com/heremaps/flexible-polyline/blob/master/java/src/com/here/flexpolyline/PolylineEncoderDecoder.java从Java翻译成了Swift:
50pmv0ei2#
非常感谢Gerd。由于某种原因,我注意到它在更大的折线上速度慢得令人难以置信(例如,从巴塞罗那到马德里的路线需要超过120秒才能解码,这太疯狂了!),所以我尝试改变了一些东西,看看它是否有所改善:
问题是(希望我没有打破任何东西),现在走得更快了。以防万一有人需要它!
q3qa4bjr3#
到目前为止,swift中还没有现成的折线编码库,仅支持以下语言。https://github.com/heremaps/flexible-polyline
我们不能评论任何第三方库,但我们可以检查与工程,如果这个发展是在管道或没有。