/** * Constructor * @param int $lat * @param int $lon * @param IFieldConfiguration $config */ public function __construct($lat, $lon, IFieldConfiguration $config) { $this->latitude = $lat; $this->longitude = $lon; $this->configLonSegments = $config->getLonSegments(); $totalOffset = $lat * $this->configLonSegments + $lon; $this->offset = floor($totalOffset / FieldConfiguration::BITS_PER_ITEM); $this->bitOffset = $totalOffset % FieldConfiguration::BITS_PER_ITEM; }
/** * Convert point to local coordinates * @param IFieldConfiguration $config * @return PointConverted */ public function convertToLocal(IFieldConfiguration $config) { $offset = $this->subtract($config->getZeroPoint()); $lat = (int) round($offset->getLatitude() / $config->getLatOffset() * $config->getLatSegments()); $lon = (int) round($offset->getLongitude() / $config->getLonOffset() * $config->getLonSegments()); return new PointConverted($lat, $lon, $config); }