在这里折线编码:JavaScript-> Swift

时间:2018-10-01 16:56:27

标签: javascript ios swift here-api here-maps-rest

我正在尝试在Swift中实现HERE的Java代码折线编码算法(请参见下文)。我已经在网上搜索过,还没有找到该算法的Swift版本。

function hereEncodeFloat(value) {
  var ENCODING_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
  var result = [];

  // convert to fixed point
  var fixedPoint = Math.round(value * 100000);

  // make room on the lowest bit
  fixedPoint = fixedPoint << 1;

  // flip bits of negative numbers and ensure that the last bit is set
  // (should actually always be the case, but for readability it is ok to do it explicitly)
  if (fixedPoint > 0) {
    fixedPoint = ~(fixedPoint) | 0x01
  }

  // var-length encode the number in chunks of 5 bits starting with the least significant
  // to the most significant
  while (fixedPoint > 0x1F) {
    result.push(ENCODING_CHARS[(fixedPoint & 0x1F) | 0x20]);
    fixedPoint >>= 5;
  }
  result.push(ENCODING_CHARS[fixedPoint]);
  return result.join('');
}

有没有人可以帮助将其转换为Swift?

算法的详细信息可以在这里找到:

https://developer.here.com/documentation/places/topics/location-contexts.html#location-contexts__here-polyline-encoding

在此先感谢您的帮助,

Jason

1 个答案:

答案 0 :(得分:1)

我知道了:

context.ActiveDialog.State["stepIndex"] = (int)context.ActiveDialog.State["stepIndex"] -2;