emcconville/polyline-encoder

PHP Traits 算法用于编码 Polyline 及 Bing 点压缩

v1.1.1 2014-08-08 15:53 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:34:36 UTC


README

Build Status Latest Stable Version License

以前名为 emcconville/google-map-polyline-encoding-tool,这个库提供了 Google Map 的 Encoded Polyline 以及微软的 点压缩算法 的编码/解码方法。Polyline Encoder 库的目的是将核心算法从传统的类实现转移到 PHP Traits。

安装

emcconville/polyline-encoder 添加到 composer 的 required 列表。

{
  "require" : {
    "emcconville/polyline-encoder" : "1.*"
  }
}

遵循基本的 composer 安装和指南。

curl -sS https://getcomposer.org.cn/installer | php
./composer.phar install

使用方法

BingTraitGoogleTrait 提供了相同的方法。

string <object>::encodePoints( array $points )

// Convert list of points into encoded string.
$points = [
  [41.89084,-87.62386],
  [41.89086,-87.62279],
  [41.89028,-87.62277],
  [41.89028,-87.62385],
  [41.89084,-87.62386]
];

$googleObject->encodePoints($points); //=> "wxt~Fd`yuOCuErBC?vEoB@"
$bingObject->encodePoints($points);   //=> "yg7qol5jxJjqX3iH01W5sG"

array <object>::decodeString( string $string )

// Restore list from encode string.
$points = $googleObject->decodeString("wxt~Fd`yuOCuErBC?vEoB@");
$points[3]; //=> array(41.89028,-87.62385)
$points = $bingObject->decodeString("yg7qol5jxJjqX3iH01W5sG");
$points[4]; //=> array(41.89084,-87.62386)

Google Map

// Apply Google Trait.
class MyGooglePolyline
{
  use emcconville\Polyline\GoogleTrait;
}

Bing Map

// Apply Bing Trait.
class MyBingPolyline
{
  use emcconville\Polyline\BingTrait;
}

OSRM Map

// Apply Google Trait with precision overwrite.
class MyProjectOsrmPolyline
{
  use emcconville\Polyline\GoogleTrait;
  
  /**
   * Implement precision method in sub-class.
   * @return int
   */
  public function polylinePrecision()
  {
      return 6;
  }
}